ハードウェア技術者のスキルアップ日誌

某家電メーカーの技術者がスキルアップのために勉強したことを記録するブログです

学習済みの一般物体検出(SSD)をローカルPC上で動かしてみた

前回は性能は不十分ながらも自分で学習させたモデルをPC上で動かしてみましたが、
誤検知している様子を見てても面白くないので、学習済みのオープンソースモデルを動かしてみます。

 

今回は有名な一般物体認識の一つであるSSDを使います。
SSDの詳細についてはこちら。

arxiv.org

qiita.com

 

また、フレームワークはKerasを用います。

動作環境
 OS:Windows 10 Home (64bit)
 Python 3.5
 Anaconda 4.2.0
 Keras 2.2.4

 

手順

GITHUBに上がっているこちらの学習済みモデルをダウンロードし、任意の場所に解凍します。

https://github.com/mashyko/ssd_keras_ver2_1

f:id:masashi_k:20190221230503p:plain

<学習済みモデル>

入力画像サイズ:300x300
学習データセットPascal VOC
検出クラス:21クラス
"background", "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"


②こちらから学習済みの重みファイル(weights_SSD300.hdf5)をダウンロードし、zipファイルを解凍します。

https://mega.nz/#F!7RowVLCL!q3cEVRK9jyOSB9el3SssIA


③①で作成したssd_keras_ver2_1-masterの直下に②の重みデータを格納します。

f:id:masashi_k:20190221231110p:plain

ssd.pyとtesting_utilsフォルダの下にあるvideotest.pyを以下のように変更します。
 Keras v1で記載されているのでV2ではエラーになります。

ssd.py

#12行目
from keras.layers import merge
#を以下のように変更
from keras.layers import concatenate

#253, 260, 267, 284行目
merge -> concatenate
#に変更

#258, 265, 272, 287行目
mode='concat'
#はすべて削除

#258, 265, 272, 287行目
concat_axis=1 => axis=1
#のように変更

videotest.py

#82行目
vid = cv2.VideoCapture(1) -> vid = cv2.VideoCapture(0)
#のように変更
#0はPC内蔵のカメラ、1は外付けUSBカメラ

 

⑤Anacondaプロンプトを起動し、以下を実行します。

$ cd testing_utils/
$ python videotest_example.py

すると、Web cameraの映像が立ち上がり、検知結果のバウンディングボックスが表示されます。プロンプト上でたくさんWarningが出てきますが、無視してOKです。
検知のフレームレートは1-2fpsです。

f:id:masashi_k:20190221234743p:plain


実際に検知させてみた様子


SSDでの一般物体検出

Youtubeの動画をWebカメラで撮影し、その映像にSSDをかけてみました。
1-2fpsしか処理速度がないため非常にカクカクした映像になっていますが、車や人、バイクなどを認識できています。
また、動画をカメラで撮影しているので、スピードが速い動きは不鮮明に映ってしまいますがそれでもある程度検出できているのがわかります。


感想

学習済みのモデルを使うことで簡単に一般物体検出を動かすことができました。
次はラズベリーパイ上でディープラーニングを動かすことにチャレンジしてみたいと思います。

 

参考URL

http://www.koi.mashykom.com/tensorflow.html

https://qiita.com/ttskng/items/4f67f4bbda2568229956

https://qiita.com/ttskng/items/4f67f4bbda2568229956