検出結果 |
はじめに
SSD (Single Shot MultiBox Detector)は、特定の物体の検出と分類を同時に行うアルゴリズムである。どのようなアルゴリズムかは、スライド SSD: Single Shot MultiBox Detector が参考になる
本来Caffeをベースに開発されたが、諸事情によりTensorFlow版を試してみた。
ベースのTensorFlowの環境は
cuda 8
cuDNN 5.1
Tensorflow 1.1
である。
ソースの取得と展開
ここから一式をダウンロードする。展開すると
SSD-Tensorflow-masterというフォルダーが作成される。
モデルデータの展開
./checkpoint に移動し、ssd_300_vgg.ckpt.zipを展開する準備
notebooksに移動し、ssd_notebook.ipynb を修正する。65行目の
from notebooks import visualization を
import visualization に変更する
また、オリジナルのCaffeから
run_jupyter.sh、jupyter_notebook_config.py をコピーする。
jupyter_notebook_config.py は /root/.jupyter/ に
run_jupyter.sh は /opt/SSD-Tensorflow-master/notebooks/ に
起動
./run_jupyter.sh --allow-rootを実行するとJupyter Notebookが起動する。
ssd_notebook.ipynb を選択し、cell から Run All を実行する。
ラベル名
補足このデモでは、検出結果がindexで表示されているので正解なのか分かりにくいラベルを探してみると
SSD-Tensorflow-master/datasets/pascalvoc_common.py
のファイルに20クラスが定義されている。
VOC_LABELS = {
'none': (0, 'Background'),
'aeroplane': (1, 'Vehicle'),
'bicycle': (2, 'Vehicle'),
'bird': (3, 'Animal'),
'boat': (4, 'Vehicle'),
'bottle': (5, 'Indoor'),
'bus': (6, 'Vehicle'),
'car': (7, 'Vehicle'),
'cat': (8, 'Animal'),
'chair': (9, 'Indoor'),
'cow': (10, 'Animal'),
'diningtable': (11, 'Indoor'),
'dog': (12, 'Animal'),
'horse': (13, 'Animal'),
'motorbike': (14, 'Vehicle'),
'person': (15, 'Person'),
'pottedplant': (16, 'Indoor'),
'sheep': (17, 'Animal'),
'sofa': (18, 'Indoor'),
'train': (19, 'Vehicle'),
'tvmonitor': (20, 'Indoor'),
}
rclasses の値を取得し、
print VOC_LABELS[index]
でクラス名を表示できる。
上記デモ画像は、
2、7、12でそれぞれ、自転車、車、犬と正解である。
0 件のコメント:
コメントを投稿