プログラミング備忘録

初級プログラマ。python、DL勉強中

SSDを使った物体検出

SSDとはSingle Shot MultiBox Detectorのことで、物体検出アルゴリズムの一つ。
物体検出アルゴリズムにはYOLOなどもある。
何から手を付けていいのかわからなかったので
とりあえず以下のサンプルソースを動かしてみた。
https://github.com/rykov8/ssd_keras

なお、その際には以下のサイトを参考にさせていただいた。
https://qiita.com/PonDad/items/6f9e6d9397951cadc6be
http://ai-coordinator.jp/ssd_keras-ubuntu#i-3

準備

サンプルソース

サンプルソースをダウンロード

$ git clone https://github.com/rykov8/ssd_keras.git

参考サイトの情報によると、本サンプルソース
最新バージョンのtensorflowやkerasに対応していないため
専用の仮想環境構築から行った

仮想環境構築

condaを使用して、専用環境を構築

$ conda create -n SSD python=3.6 anaconda
$ source activate SSD


tensorflowインストール

$ pip install tensorflow==1.1.0


kerasインストール

$ pip install keras==1.2.2


OpenCVインストール

OpenCVffmpegをうまく認識せず、2時間ほどハマった 以下サイトを参考に解決
https://teratail.com/questions/58787

OpenCVはこちらで事前に検証

programdl.hatenablog.com


jupyter notebookインストール

$ pip install jupyter notebook


動画の準備

適切な動画がない場合、以下のサイトよりフリー動画をダウンロード
https://videos.pexels.com/

ダウンロード動画はmp4形式のため、以下サイトを使用してmkvに変換
https://convertio.co/ja/


ソースの修正

サンプルソースが一部間違っているため修正

# 修正前
vidw = vid.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)
vidh = vid.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)

# 修正後
vidw = vid.get(cv2.CAP_PROP_FRAME_WIDTH)
vidh = vid.get(cv2.CAP_PROP_FRAME_HEIGHT)


実行

$ cd testing_utils
$ python videotest_example.py


結果

f:id:programdl:20171112223929p:plain




できた