SlideShare a Scribd company logo
1 of 15
機械学習の為の事前準備
学習用データをどうやって集めるか
自己紹介
▪ 高木一成(@Takaki_)
▪ ゼンリン所属
▪ GISエンジニア。主にデータ解析/市場調査/企画作りをしています。
▪ 業務の合間にデータベース技術や機械学習について調査中。
▪ 公私共にPythonを利用しています。
▪ おうちハックを頑張りたい
▪ 家電の音声制御とか
▪ 子どもの行動制御(ヤバそうな動作のアラート上げ)とか
▪ Amazon Echo/Listnrが欲しい。
「機械学習に手を出そう」と思ったものの…
▪ どこから手を付ければ良いか分からない…
▪ サンプルコードを動かす以上のことが出来ない…
▪ 学習用のデータが集められない
学習用データの集め方
▪ Google検索でライセンスフリーの画像を取ってくる
▪ 画像検索のオプションを使って問題ない画像を収集
▪ 自分が持っている写真を利用する
▪ 日々撮ってる写真を使えば問題無し
-------------------------------------
▪ 会社が持っている業務データを使う
▪ Google/Yahoo/Facebookが羨ましい…
画像データの編集・加工をどうするか
▪ オープンソースを使って手持ちの画像を加工
▪ ImageMagick
▪ 老舗の画像処理用ツールセット
▪ 手持ちの画像を切り出すことが出来る
▪ サイズ変更や色調変更等も
▪ OpenCV
▪ こちらも老舗。オープンソースのコンピュータビジョン向けライブラリ。
▪ 画像処理・構造解析・パターン認識等が出来る便利ライブラリ
▪ 標準の分類器を使って学習データの作成が出来る
ハサミのようなツール
手間のかかる作業を一括処理
ナイフのようなツール
技量があれば何でもできる
ImageMagick
▪ インストールは公式サイト(http://www.imagemagick.org/)から
▪ 切り出しはconvertコマンド(-crop)を利用
▪ convert –crop 横ピクセルx縦ピクセル+始点(横)+始点(縦)
加工したいデータ 保存したいファイル名
▪ Ex)convert –crop 100x100+500+200 test.jpg sample.jpg
ImageMagickデモ
環境: Windows 10 Insider Preview
Surface3
CPU: Atom x7-Z8700 @a.6Ghz
メモリ: 4GB
コマンド
convert –crop 2000x2000+100+300
Musume.jpg cropsample.jpg
100,300
2000
ImageMagickの使いどころ
▪ 定点カメラでの撮影で収集した画像から、同一の箇所を切り出す
▪ Raspberry Pi + Motion(動体検知)で取得した画像から該当部分を切り出す
▪ 画像を処理可能な単位に分割する
▪ convert –crop は画像ファイルを10×10に分割可
▪ でかいRAWファイルの前処理で使うと便利です
▪ 機械学習だけでなく、日々の業務でも利活用の場は多いです。
覚えておくと仕事が楽に。
OpenCV
▪ インストールは公式サイト(http://opencv.org/)から。最新版は3.1。
▪ OpenCVの分類器(haarcascades)を使います。
▪ 分類器の設定ファイルはインストールフォルダ以下 build/data/haarcascades に色々あります。
▪ 目、顔、身体(全身・上半身・下半身)、笑顔、ロシアのナンバープレートなどが抽出可。
▪ 今回はPythonインターフェイス(WinPython)の2系からOpenCVを使用
▪ OpenCV3以降はPython3でも使えるらしいのだけど…
OpenCVデモ
環境はImageMagickのときと同じ
WinPython-64bit-2.7.10.3
OpenCV3.1
分類器を使って
ここをとってくる
顔部分を検出して切り出し
import cv2
image = cv2.imread('musume02.jpg', 1)
cascade_path =
'C:opencvsourcesdatahaarcascadeshaarcascade_fron
talface_default.xml'
cascade = cv2.CascadeClassifier(cascade_path)
face_cascade = cascade.detectMultiScale(image, 1.1, 3)
i = 0
for rect in face_cascade:
x = rect[0]
y = rect[1]
w = rect[2]
h = rect[3]
img = image[y:y+h, x:x+w]
cv2.imwrite('musume_face_' + str(i) + '.png', img)
画像読み込み
既定の定義を用いて
分類器クラスを作成
結果をfor文で回し
一つずつファイルとして出力
http://qiita.com/Takaki_/items/f1cf8d077836303f2028
OpenCVの使いどころ
▪ 学習用データの収集
▪ 学習用データとしてそのまま使えるわけではない(ノイズが入る)が、手間は大分減る
▪ データ収集 → 機械学習 → データ可視化 のように、前処理と後工程で使用
前処理
• ImageMagick
• OpenCV
機械学習
• Caffe
• Chainer
後工程
• OpenCV
OpenCVの使いどころ
▪ 学習結果の可視化
import cv2
image = cv2.imread('musume02.jpg', 1)
cascade_path =
'C:¥opencv¥sources¥data¥haarcascades¥haarcascade_frontalface_default.xml'
cascade = cv2.CascadeClassifier(cascade_path)
face_cascade = cascade.detectMultiScale(image, 1.1, 5)
color = (255,0,255)
for rect in face_cascade:
cv2.rectangle(image, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]),color, thickness=5)
cv2.imwrite("rect_draw.png",image)
まとめ
▪ 機械学習を始めるときのハードルは「学習データをいかにして集めるか」
▪ 手持ちのデータを利用して学習データを作成するのが色々な意味で良い
▪ ImageMagickで規定個所の切り出し
▪ OpenCVの分類器で前処理
▪ ImageMagick・OpenCVともに利便性は高いので、使えるようになっていると便利です。
ご清聴ありがとうございました
ご質問などありましたらお気軽に

More Related Content

Similar to AITCオープンラボ_機械学習の為の事前準備

福岡市内のベンチャー企業が取り組む最新It技術
福岡市内のベンチャー企業が取り組む最新It技術福岡市内のベンチャー企業が取り組む最新It技術
福岡市内のベンチャー企業が取り組む最新It技術Takuya Andou
 
ディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみたディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみた卓也 安東
 
仕事でWaffleを使ったお話
仕事でWaffleを使ったお話仕事でWaffleを使ったお話
仕事でWaffleを使ったお話Takeshi Minegishi
 
おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)
おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)
おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)Core Concept Technologies
 
ディープラーニングによる時系列データの異常検知
ディープラーニングによる時系列データの異常検知ディープラーニングによる時系列データの異常検知
ディープラーニングによる時系列データの異常検知Core Concept Technologies
 
Python 機械学習入門
Python 機械学習入門Python 機械学習入門
Python 機械学習入門孝之 鈴木
 
20190210 機械学習 学習マップ
20190210 機械学習 学習マップ20190210 機械学習 学習マップ
20190210 機械学習 学習マップHOSONO
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシBrainPad Inc.
 

Similar to AITCオープンラボ_機械学習の為の事前準備 (8)

福岡市内のベンチャー企業が取り組む最新It技術
福岡市内のベンチャー企業が取り組む最新It技術福岡市内のベンチャー企業が取り組む最新It技術
福岡市内のベンチャー企業が取り組む最新It技術
 
ディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみたディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみた
 
仕事でWaffleを使ったお話
仕事でWaffleを使ったお話仕事でWaffleを使ったお話
仕事でWaffleを使ったお話
 
おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)
おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)
おもちゃのロボットアームの制御精度をちょっとだけ上げてみました(ちょっとだけよ♡)
 
ディープラーニングによる時系列データの異常検知
ディープラーニングによる時系列データの異常検知ディープラーニングによる時系列データの異常検知
ディープラーニングによる時系列データの異常検知
 
Python 機械学習入門
Python 機械学習入門Python 機械学習入門
Python 機械学習入門
 
20190210 機械学習 学習マップ
20190210 機械学習 学習マップ20190210 機械学習 学習マップ
20190210 機械学習 学習マップ
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
 

AITCオープンラボ_機械学習の為の事前準備