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 models の 07+12: SSD300 を選択した。
ダウンロードされる、ファイル名とサイズは、models_VGGNet_VOC0712_SSD_300x300.tar.gz(93M)
である。
ダウンロード後に展開して、SSD_300x300 フォルダーから、
VGG_VOC0712_SSD_300x300_iter_120000.caffemodel と deploy.prototxt を取り出し、実行フォルダーにコピーする。
ソースは、若干修正し、実行時間の計測と、検出結果をわかりやすくしている。
入力画像は、300x300にリサイズされ、検出されるが、検出結果の座標は、相対的な割合が得られるので、オリジナルの画像でも対応する場所に4角形が描画されている。
実行結果
ビルドしたプログラムは、以下の用に実行させる。コマンドライン |
こちらは、いつものスペースシャトルで試したものである。
課題
検出したオブジェクト名の取得方法が分からないので継続して調べてみる。以上