OpenCV3.4.2で始める浅いディープラーニング (その1 インストールからexample_dnn_object_detection.exeを動かすまで)
最近はDeep Learningを使うと、オシャレなんだそうです。でも面倒くさい勉強は極力したくありません。OpenCVのdnnモジュールが、3.4.2ぐらいからレギュラー扱いで本体に吸収されたそうなので、お手軽にこれを使ってみたいと思います。
1.インストール
OpenCV3.4.2以降のソースコードを用意します。ここではgithubに上がっているmaster版[1]を使おうと思います。開発環境は、Windows10のMSVC2015です。[1]-[3]の3つをダウンロードして、例えばc:\workspaceなどに同じフォルダに並べて置きます。
1.1 ダウンロード
github.com
GitHub - opencv/opencv_extra: OpenCV extra data
GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules
1.2 cmakeとビルド
CMakeを普通に通してビルドします。CMakeの設定の例は次の通りです。
Where is the source code: c:\workspace\opencv\sources
Where to build the binaries: c:\workspace\opencv\build
1.2.1 [OpenCV 3.4.2限定] object_detection.cppのnmsを直す
zipファイルで配布されているopenCV3.4.2のsampleのソースコードには、なんかしょうもないタイポがありますので、これを直します。
c:\opencv342\sources\samples\dnn\object_detection.cppの25行目const char* keys の設定の中でthrとなっているのをnmsにします。
"{ thr | .4 | Non-maximum suppression threshold. }"
"{ nms | .4 | Non-maximum suppression threshold. }"
1.3 必要なファイルを準備
1.3.1 実行ファイルのコピー
buildした結果のexeファイルやdllファイルを、データファイルがあるopencv_extraフォルダの中にコピーして放り込みます。
- example_dnn_text_detection.exe
- example_dnn_segmentation.exe
- example_dnn_openpose.exe
- example_dnn_object_detection.exe
- example_dnn_colorization.exe
- example_dnn_classification.exe
と、
を
c:\workspace\opencv_extra\dnn
にコピーします。
1.4 何も分からないまま、dnnの物体検出をテスト
コマンドプロンプトを開いて、次のスクリプトを実行するか、txtエディタでobject_detection.bat等の適当な名前でバッチファイルを作ります。
PCに適当なUSBカメラをつないでおいてください。
example_dnn_object_detection.exe --model=yolov3.weights --config=yolov3.cfg --scale=0.00392 --width=416 --height=416 --mean=0 0 0 --rgb --classes=object_detection_classes_yolov3.txt
USBカメラが無い場合は、適当な画像ファイルを入力に指定してください。
--input=source.jpg
scaleやwidthやheightやmeanなどの謎パラメータはmodel毎に異なるそうなので、[4]を参考に使いたいモデルに合わせて調整してください。パラメータの簡単な説明は[5]の中のYOLO DNNsにありますが、プログラム実行ファイルが表示してくれるhelpを見た方が分かり易いです。
実行結果はこんな感じ。Intel Core i7-4770SのCPU実行で1fpsぐらいの速度です。
confidenceは、認識結果の確信度の閾値で50%以上の自信がある結果だけを表示します。
なんか知らんけど、机の前に座ってる特定のpersonだけ認識結果が悪い。。。
用語が分からない
dnn関係の説明で、CaffeとかCOCOとかYoloとかRNNとかResNetとか良く分からない単語がいっぱい出てきます。次から次へと新しい言葉が出てきて、何のことだかすぐわからなくなっちゃうので、次回はこれを整理したいと思います。(慣れている人なら、[6]を見れば直ぐに分かります)
参考文献
[1] OpenCV : github master
GitHub - opencv/opencv: Open Source Computer Vision Library
[2] opencv_extra
GitHub - opencv/opencv_extra: OpenCV extra data
[3] opencv_contrib
GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules
[4] OpenCV deep learning module samples
opencv/samples/dnn at master · opencv/opencv · GitHub
[5] OpenCV Tutorials : Deep Neural Networks (dnn module)
OpenCV: Deep Neural Networks (dnn module)
[6] Deep Learning in OpenCV
Deep Learning in OpenCV · opencv/opencv Wiki · GitHub
今日の英語
英語が全然分からないので、勉強しなおしています。この本が短くて明瞭でとても良かった!
あとは、覚えるだけ!(夏の終わりか、テスト前)
サバイバル英文法 「読み解く力」を呼び覚ます (NHK出版新書)
- 作者: 関正生
- 出版社/メーカー: NHK出版
- 発売日: 2015/10/09
- メディア: 新書
- この商品を含むブログ (1件) を見る