Object Detection APIで自作データを訓練して物体検出までのメモ

TensorFlowのObject Detection APIで物体検出を実行してみたので自分用に手順メモ。
使い方記事は日本語のものもたくさん見つかるけど既存学習データを利用するものが多く、自分でデータ用意して学習したものを基に検出があまり見つけられなかったのが大変でした(素人並の感想)

 

基本的にはここを参考。

 

環境を作るためAnacondaを導入。

やり方はたくさん見つかると思うけどこれとか。

MobileNetV2(Tensorflow)を触ってみた。 | AI・人工知能、IoT、CPS、Mobile:システム開発・一括請負を行っております。

 

これ書いてる時点でのTensorFlowのバージョン最新は2.xだけど、1.xから使用できなくなった機能(contribとか)もいくつかあり動かせなかったので、インストールする際はバージョン指定して1.13.1を入れました。

 

TensorFlow-GPUの環境作りはこちらを参考にしました。 

Windows 10でtensorflow-gpuを使う方法 - 知的好奇心

 CUDAをインストールに失敗して1度行き詰まりましたがこちらを参考にしたら通りました。

Windows端末にCUDAをインストールする際に、「Visual Studio Integration」のインストールに失敗する場合 - Qiita

 

画像へのラベル付けは上の記事ではLabelImgが挙げられてましたが自分はVoTT使いました。
形式はPascal VOC、Only tagged Assetsで出力。
どの記事を参考にしたか忘れた。

 

あとは4. Generate Training Data以降を順に実行していけばいけるはず。
英語だけど全部読めなくても大体把握できると思う。
xml_to_csv.pyでアノテーションデータをCSV
・generate_tfrecord.pyでtrain.record,test.recordの作成
・labelmap.pbtxt,faster_rcnn_inception_v2_pets.configを今回使うラベルに合わせて編集
・必要なデータやファイルを所定のパスに格納(ファイル名やパスの誤りに気を付けて
・train.pyで学習開始、10分毎にチェックポイントを生成してるので中断・終了する際はそれを目安に
・export_inference_graph.pyでfrozen_inference_graphを生成(日本語表現がわからん、物体検出分類ファイル?)

 

ここまでできたらObject_detection_image.pyで実際に画像を読み込んで実際に物体検出。
動画を利用する場合はObject_detection_video.py、ウェブカメラを利用する場合はObject_detection_webcam.pyを使用。
結果はこんな感じ

 

 

本当はgv-usb2から取り込んだ映像を読み込んでリアルタイム分類させたかったけどvideocaptureでの指定の仕方がよくわからなかったので諦め。

 
精度は悪くなさそうだけど、そもそもこういう分類に対して利用するものじゃない気もした(適さないってほどでもなさそうではある)