Single Shot MultiBox Detector(SSD)のMXNet実装「mxnet-ssd」で物体検出モデルを作成してみました。
なお、オリジナルのCaffe実装「caffe-ssd」については、以下の記事をご覧ください。
物体検出
今回はトレーニング用データセットとして、PASCAL VOC2007のみを用いました。後述の方法により20エポックトレーニングしたモデルの物体検出結果は、下図のようになっています。
配布されているモデル(ssd_300_voc_0712.zip)の物体検出結果の下図と比較すると、”bicycle”が検出されておらず、”car”と”dog”の信頼度もまだ低いようです。
物体検出モデルの作成
こちら(https://github.com/zhreshold/mxnet-ssd)を参照して環境構築を行います。
README.md
では、トレーニング用データセットとして、PASCAL VOC2007とVOC2012の両方を用いていますが、今回のトレーニングでは、以下のようにtrain.py
の--year
オプションを設定してVOC2007 trainvalの5011枚を用いました。
$ python train.py --year 2007 --batch-size 16
また、GTX960 4GBの場合、デフォルトのバッチサイズ32ではエラーとなるため、--batch-size
オプションを設定しました。
以下のコマンドで、20エポックトレーニングしたモデルの性能をVOC 2007 testの4952枚で評価してみると、以下のようにmAPは30.56%となりました。
$ python evaluate.py --gpus 0 --batch-size 8 --epoch 20 INFO:root:Start evaluation with 4952 images, be patient... ... Mean AP = 0.3056
配布されているモデル(ssd_300_voc_0712.zip)のmAPは71.57%なので、さらにトレーニングを続ける必要がありそうです。
まとめ
Single Shot MultiBox Detector(SSD)のMXNet実装「mxnet-ssd」で物体検出モデルを作成してみました。