機械学習

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