Faster R-CNNのChainer実装を改造してCOCOモデルに対応させてみた

chainer-faster-rcnn-coco
Faster R-CNNのChainer実装「chainer-faster-rcnn」を改造して、COCOモデルに対応させてみました。

chainer-faster-rcnnでは、PASCAL VOCデータセットでトレーニングしたモデルが提供されています。このVOCモデルは、20種類のカテゴリーに対応しています。

Faster R-CNNのCaffe・Python実装「py-faster-rcnn」では、VOCモデルの他に、COCOデータセットでトレーニングし、80種類のカテゴリーに対応したCOCOモデルも提供されているので、chainer-faster-rcnnの改造にチャレンジしてみました。

なお、オリジナル版のFaster R-CNNのChainer実装「chainer-faster-rcnn」については、以下の記事をご覧ください。

Faster R-CNNのChainer実装で物体検出を試してみた
Faster R-CNN(Region-based Convolutional Neural Networks)のChainerによる実装「chainer-faster-rcnn」で、物体検出を試してみました。
スポンサーリンク

COCOモデルによる物体検出

最初に、GPUモードでPASCAL VOCデータセットの画像004545.jpgの物体検出を行ってみました。

$ time python forward_coco_svd.py \
  --img_fn 004545.jpg \
  --out_fn 004545_coco.jpg \
  --gpu 0

 1.111 sec
 0.386 sec
 0.415 sec

real	0m8.593s
user	0m7.806s
sys	0m1.490s

黄色マーカーの部分は、物体検出を3回実施し、その処理時間を表示しています。2回目以降であれば、約0.4秒で処理できています。

出力された画像は、以下のようになります。
chainer-faster-rcnn-coco2
次に、同じくGPUモードでCOCOデータセットの画像6767429191_69b495e08c.jpgの物体検出を行ってみました。

$ time python forward_coco_svd.py \
  --img_fn 6767429191_69b495e08c.jpg \
  --out_fn 6767429191_69b495e08c_coco.jpg \
  --gpu 0

 0.986 sec
 0.275 sec
 0.298 sec

real	0m8.169s
user	0m7.241s
sys	0m1.602s

2回目以降であれば、約0.3秒で処理できています。

出力された画像は、以下のようになります。
chainer-faster-rcnn-coco3
最後に、CPUモードで処理時間を計測してみました。

$ time python forward_coco_svd.py \
  --img_fn 6767429191_69b495e08c.jpg \
  --out_fn 6767429191_69b495e08c_coco.jpg

 8.633 sec
 8.631 sec
 9.048 sec

real	0m32.497s
user	1m22.135s
sys	0m34.835s

CPUモードの場合、1回目の処理時間が長くなる傾向はなく、1~3回目共に8~9秒です。

まとめ

Faster R-CNNのChainer実装「chainer-faster-rcnn」を改造して、COCOモデルに対応させてみました。

Single Shot MultiBox Detector (SSD)のCaffe実装「caffe-ssd」に比べると処理時間がかかりますが、Chainer実装なので比較的多くの環境で動作させられそうです。