2017年8月9日水曜日

OpenCV 3.3.0で dnn のサンプル (SSD) を試してみた。 その3 (I tried Single Shot MultiBox Detector sample with OpenCV 3.3.0. part3)

 
SSD検出結果

はじめに

dnnのサンプルは、複数個 opencv/samples/dnn/のフォルダーに格納されている。

これまでに、1000クラスを分類する caffe_googlenet.cpp、対象領域を検出する fcn_semsegm.cpp を試してみた。
今回は、オブジェクトの検出と分類を行う SSD: Single Shot MultiBox Detector を試してみた。ファイル名は、ssd_object_detection.cpp である。

準備

cfgファイルと、weightファイルの取得方法に関して、helpメッセージに記載があり、SSD: Single Shot MultiBox Detector の git hub のページから好きなモデルを選択して、ダウンロードを行う

今回は、PASCAL VOC models07+12: SSD300 を選択した。

ダウンロードされる、ファイル名とサイズは、models_VGGNet_VOC0712_SSD_300x300.tar.gz(93M)
である。

ダウンロード後に展開して、SSD_300x300 フォルダーから、
VGG_VOC0712_SSD_300x300_iter_120000.caffemodel deploy.prototxt を取り出し、実行フォルダーにコピーする。

ソースは、若干修正し、実行時間の計測と、検出結果をわかりやすくしている。

入力画像は、300x300にリサイズされ、検出されるが、検出結果の座標は、相対的な割合が得られるので、オリジナルの画像でも対応する場所に4角形が描画されている。

実行結果

ビルドしたプログラムは、以下の用に実行させる。

コマンドライン
 これは、冒頭の電車の画像を対象画像に指定しており、実行結果は、4つのオブジェクトの領域と、信頼度が出力されたものである。



こちらは、いつものスペースシャトルで試したものである。


課題

検出したオブジェクト名の取得方法が分からないので継続して調べてみる。

以上

0 件のコメント:

コメントを投稿