機械学習
2018年度卒研用資料
ボードゲーム用の駒やタイルの物体検出と識別の実験ノート
環境構築:
windows10 パソコンに anaconda を導入。
https://weblabo.oscasierra.net/python-anaconda-install-windows/
実験用の環境を構築する際に選択する python のバージョン 2系 3系に注意すること。
opencv や tensorflow などのライブラリは↑で作成した anaconda Navigator から追加インストールする。
anaconda Navigator の コンソールから実験用の、 python 実行するスクリプト.py を実行していく。
学習用の画像を準備する際の水増しについて:
kerasの ImageDataGenerator を利用して、1枚の画像を回転・スケール・明るさなどを変えて水増しすることができる。
参考サイト: https://qiita.com/halspring/items/7692504afcba97ece249
30枚程度に水増しておく。
tendowflow でCNNにより画像の識別をさせる。
参考サイト: http://arkouji.cocolog-nifty.com/blog/2019/01/tenforflowkeras.html
こちらの記事では、opencvで画像全体から顔を検出して、検出した顔エリアに対して識別をするためのコードは省略されている。
opencv の顔検出機能では、ゲーム用の駒を切り出すことはできないので、別の手法が必要。
Webカメラの画像から物体検出をしたいので、pythonからopencvのwebカメラを利用するコードが必要。
参考サイト: https://ensekitt.hatenablog.com/entry/2017/12/19/200000
cv2.VideoCapture(0) を使うだけでWebカメラの画像を利用できる。
動画ファイルから物体検出をするコードで、cv2.VideoCapture("test.mp4")の様に動画ファイルを読み込んでいる部分を 0 に変えるだけで動きそう。
ただし、カメラの停止用のコードが必要になる。
一枚の画像から複数の物体を検出する手法 SSD を試す。
参考サイト:
https://qiita.com/PonDad/items/6f9e6d9397951cadc6be
や
https://qiita.com/slowsingle/items/64cc927bb29a49a7af14
など。どちらの記事もkeras + SSD の動作確認に 人物や自動車など一般的な物体20種類を学習させたデータをDLして利用している。
ここのステップで、一般的な物体のデータからボードゲームの駒のデータに変更する必要がある。
SSD用に自作の学習データを作成する記事:
http://ai-coordinator.jp/ssd-keras-train
https://haitenaipants.hatenablog.com/entry/2018/06/21/210108
SSD用の画像データを処理する支援ツール:
https://qiita.com/slowsingle/items/9006383145a650c84cb0 Processingによるアノテーションツール。利用できる画像のサイズが小さめ
http://arkouji.cocolog-nifty.com/blog/2018/01/tensorflowkeras.html windows用アノテーションツール。
https://haitenaipants.hatenablog.com/entry/2018/06/09/235950 pythonによるアノテーションツール
ssd_keras を keras2 の API で動作させるにはコードの修正が必要。
http://umezawa.dyndns.info/wordpress/?p=6992 修正済みのコードがgit にあった。
webcamでリアルタイムに物体検出をする際 opencvでエラーがでる。 ここみて修正。https://qiita.com/DoChi_72/items/a9fd82c1870b45aaf136