OpenCV 3.3.1 で Yolo v2 for object detection を動かしてみる (Windows)
OpenCV 3.3.1 に YOLO v2 がちゃんと入ってた!サンプルは samples/dnn/yolo_object_detection.cpp https://t.co/hiGGjpUaLN
— ミクミンP/Kazuhiro Sasao (@ksasao) 2017年10月24日
わーい!
というわけで、とりあえずサンプルを動かしてみました。今回は速報版ってことでご容赦下さい。
環境構築
環境
- Windows 10
- Visual Studio 2015
インストール
- Windows (vc14) 用にビルドされた物を落としてくる
- .exe だけど自己解凍するだけなので、適当な場所に置く
- 私の場合は
D:\develop\opencv331
となるように置いた
- 私の場合は
- OpenCVのいつもの儀式、パス通し。こちらの記事に習って行う
とりあえずサンプルを動かす
sources\samples\dnn\yolo_object_detection.cpp
を動かす。
サンプルのためのプロジェクトを作成
- Visual Studio 2015 > ファイル > 新規作成 > プロジェクト
- テンプレート > Visual C++ > 「空のプロジェクト」 を選択
サンプルコードの取り込み
$(ProjectDir)
直下に、上記sources\samples\dnn\yolo_object_detection.cpp
を配置- Visual Studio の ソリューションエクスプローラー上で、
ソースファイル
フィルタに、上記ファイルを投げ込む
インクルードとライブラリのリンク
- .dll にパスを通したときと同様、OpenCV3.2インストール方法(ビルドなし) - Qiita を参考にインクルードディレクトリ・ライブラリディレクトリ・利用ライブラリの指定を行う。
Debug 時と Release 時で使う .lib ファイルが異なる事に注意。
ビルド
- ビルド > ソリューションのビルド。 とりあえず Debug でやってみる。
コンフィグとモデルの用意
- 今回はとりあえず動けば良いので、用途や適正は考えずに、yolo 公式から最もベタっぽいやつを取ってくる。
yolo.cfg
yolo.weights
- Visual Studio 上でデバッグ実行する場合、作業ディレクトリは
$(ProjectDir)
となる。ので、そこに、yoloの cfg ファイルと weights ファイルを置く。 - ついでに、テスト画像も用意。Yolo の学習にも使っている COCO から適当に。
実行
- cfg と model が読まれるようコマンド引数を設定。たとえば以下の様な感じ。
-cfg=yolo.cfg -model=yolo.weights -image=3320359009_059880900a_z.jpg
- これは OpenCV の
CommandLineParser
の書式です。
- F5 デバッグ実行。
結果
見つけたオブジェクトに枠がついています。学習に使われたラベルはこちらです。
奥の車が見つかって無くて、ショルダーバッグだけで無く買い物袋も認識されていて、と言う結果です。良いのか悪いのかはわかりません。
それと、今のところ、提示されたクラスのIDと、その名称の紐付け方がよくわかっていません。他の結果も見た感じ、 Class:0 が人、 Class:2 が車っぽいって事はわかりました(笑)
次にやりたいこと
- Class の id から、クラス名を引く方法は?
- サンプルを元に、動画ファイルやウェブカムを食わせる
- Tiny YOLO はどうやら高速に動きそう、などモデルと設定の特性について学びたい