概要
9000種類以上の物体を検出可能な物体検出器である、YOLO9000 を動かします。YOLO9000は動物の検出が得意な検出器 [[Joseph Redmon+, CVPR2017]] (https://arxiv.org/abs/1612.08242) であり、また、YOLOは二次絵への汎化が得意な検出器 [[Joseph Redmon+, CVPR2016]] (https://arxiv.org/abs/1506.02640) であることから、今回は動物やけものフレンズの画像に適用し、精度や汎化性能を確認します。
YOLO9000環境構築
YOLO9000フレンズになるの、すごく簡単。以下のコマンドを呼んで。
# Installing Darknet
git clone https://github.com/pjreddie/darknet
cd darknet
make
# Downloading pre-trained weight file for MS COCO (80 classes)
#wget http://pjreddie.com/media/files/yolo.weights
# Downloading pre-trained weight file for YOLO9000 (9418 classes)
wget http://pjreddie.com/media/files/yolo9000.weights
※CUDA, OpenCVを使用する場合、Makefileの先頭を修正して下さい。
http://qiita.com/MOKSckp/items/7b300b1b51e689a0df35
https://pjreddie.com/darknet/yolo/
https://pjreddie.com/darknet/install/
正しくインストールされたか確認します。
./darknet detector test cfg/combine9k.data cfg/yolo9000.cfg yolo9000.weights data/dog.jpg
predictions.png に結果が保存されます(OpenCV不使用時)。
……。
精度はさておき細かく分類しようという心意気を感じます。
フレンズ検出
さて、フレンズを検出してみます(以下、表示閾値の"thresh"を小さめに指定してあります)。
./darknet detector test cfg/combine9k.data cfg/yolo9000.cfg yolo9000.weights data/friends/800px-Serval_in_Tanzania.jpg -thresh 0.05
(画像引用元: https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Serval_in_Tanzania.jpg )
サーバルは上手に検出できるようです。
(画像引用元: https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Shoebill_couple2.jpg )
ハシビロコウ (shoebill) も何とか検出しようとしています。
改めて、9418クラスの物体検出器すごーい!
(画像引用元: https://en.wikipedia.org/wiki/File:Kissing_Prairie_dog_edit_3.jpg )
クラスとしては存在するので、できればオグロプレーリードッグ (blacktail prairie dog) と答えて欲しいところですが、流石にそこまでは難しいようです。
(画像引用元: https://www.youtube.com/watch?v=lh_GcdBamD4 )
referee かどうかはさておき人だと判断しているようです。
9418クラスは細かすぎて精度が悪いので、animal, person に属するクラスは friend に、それ以外のクラスは object に上書きしてみます。
(画像引用元: https://www.youtube.com/watch?v=lh_GcdBamD4 )
わーい! たーのしー!