COCOデータセットで学習したpy-faster-rcnnモデルで物体検出を試してみた

py-faster-rcnn-coco
Faster R-CNNのCaffe・Python実装「py-faster-rcnn」において、COCOデータセットを用いてトレーニングしたモデルで物体検出を試してみました。

以下の記事のpy-faster-rcnnですが、README.md通りに実行した場合、PASCAL VOC2007データセットを用いてトレーニングしたモデルがダウンロードされます。

Faster R-CNNのCaffe・Python実装で物体検出デモを試してみた
Faster R-CNNのCaffeとPythonによる実装「py-faster-rcnn」で、物体検出デモを試してみました。
スポンサーリンク

COCO

PASCAL VOC2007では、以下の20種類のカテゴリーが設定されてます。

‘aeroplane’, ‘bicycle’, ‘bird’, ‘boat’, ‘bottle’, ‘bus’, ‘car’, ‘cat’, ‘chair’, ‘cow’, ‘diningtable’, ‘dog’, ‘horse’, ‘motorbike’, ‘person’, ‘pottedplant’, ‘sheep’, ‘sofa’, ‘train’, ‘tvmonitor’

これに対し、COCO(http://mscoco.org/)では、以下の80種類のカテゴリーが設定されています。

person‘, ‘bicycle‘, ‘car‘, ‘motorcycle‘, ‘airplane‘, ‘bus‘, ‘train‘, ‘truck’, ‘boat‘, ‘traffic light’, ‘fire hydrant’, ‘stop sign’, ‘parking meter’, ‘bench’, ‘bird‘, ‘cat‘, ‘dog‘, ‘horse‘, ‘sheep‘, ‘cow‘, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’, ‘backpack’, ‘umbrella’, ‘handbag’, ‘tie’, ‘suitcase’, ‘frisbee’, ‘skis’, ‘snowboard’, ‘sports ball’, ‘kite’, ‘baseball bat’, ‘baseball glove’, ‘skateboard’, ‘surfboard’, ‘tennis racket’, ‘bottle‘, ‘wine glass’, ‘cup’, ‘fork’, ‘knife’, ‘spoon’, ‘bowl’, ‘banana’, ‘apple’, ‘sandwich’, ‘orange’, ‘broccoli’, ‘carrot’, ‘hot dog’, ‘pizza’, ‘donut’, ‘cake’, ‘chair‘, ‘couch‘, ‘potted plant‘, ‘bed’, ‘dining table‘, ‘toilet’, ‘tv‘, ‘laptop’, ‘mouse’, ‘remote’, ‘keyboard’, ‘cell phone’, ‘microwave’, ‘oven’, ‘toaster’, ‘sink’, ‘refrigerator’, ‘book’, ‘clock’, ‘vase’, ‘scissors’, ‘teddy bear’, ‘hair drier’, ‘toothbrush’

文字だけだとイメージしにくいのですが、こちらのページ(http://mscoco.org/explore/)では、最初の図のように、80種類のカテゴリーがアイコンで表示されているので、イメージしやすいと思います。

また、PASCAL VOC2007の20種類のカテゴリーのアイコンをマークして行くと、以下の図のようになります。

py-faster-rcnn-coco-2
マークされていないアイコンのカテゴリーが、COCOで追加されたカテゴリーになります。

準備

以前の記事で~/github/py-faster-rcnnディレクトリにインストールしたpy-faster-rcnnを利用します。py-faster-rcnnのインストール方法等は、以前の記事をご覧ください。

~/github/py-faster-rcnn/data/faster_rcnn_modelsディレクトリに移動し、coco_vgg16_faster_rcnn_final.caffemodelをダウンロードします。

$ cd ~/github/py-faster-rcnn/data/faster_rcnn_models
$ wget www.cs.berkeley.edu/~rbg/faster-rcnn-data/coco_vgg16_faster_rcnn_final.caffemodel
$ cd ../..

py-faster-rcnnディレクトリに戻ったら、toolsディレクトリに移動し、両方(PASCAL VOC2007とCOCO)のデータセットに対応したdemo.py(https://github.com/haria/py-faster-rcnn/blob/40df7ba80cfc4d709ea1d86ea1e1d959aabc4395/tools/demo.py)をdemo_both.pyの名前でダウンロードします。

$ cd tools
$ wget -O demo_both.py https://raw.githubusercontent.com/haria/py-faster-rcnn/96fb917d563386ec3203b616995b363576b7610b/tools/demo.py
$ chmod 775 demo_both.py
$ cd ..

また、物体検出に使いたい画像をdata/demoディレクトリにコピーしておきます。今回は、ここ(http://mscoco.org/explore/?id=533917)の画像(ファイル名6767429191_69b495e08c.jpg)をダウンロードし、data/demoディレクトリにコピーしました。

なお、以前の記事で書きましたが、5つの画像ファイルの物体検出を行うdemo.pyを実行してフリーズしたことがあったので、demo_both.pyの175~176行を変更して、処理する画像ファイルを004545.jpgと6767429191_69b495e08c.jpgだけにしました。

物体検出

py-faster-rcnnディレクトリに戻ったら、以下のコマンドで物体検出を行います。

$ ./tools/demo_both.py --dataset coco

004545.jpgの物体検出の結果をGIFアニメーション化したものが、以下の画像です。

py-faster-rcnn-coco-3
また、6767429191_69b495e08c.jpgの物体検出の結果をGIFアニメーション化したものが、以下の画像です。

py-faster-rcnn-coco-4

まとめ

Faster R-CNNのCaffe・Python実装「py-faster-rcnn」において、COCOデータセットを用いてトレーニングしたモデルで物体検出を試してみました。

COCOデータセットを用いて学習したモデルは、カテゴリーが80種類に増えているので、結構楽しめそうです。