オタクof数理の共同ブログ

京大情報学科数理工学コースの学生4人による共同ブログです

YOLOv2を動かしてみた。

以前YOLOv2を動かす機会があったので、そのことについてまとめます。

YOLOv2とは

github.com

YOLOv2はリアルタイム物体検出手法の一つで、非常に精度が高いです。以下の動画には度肝を抜かれました。

youtu.be

これを実際に動かすには訓練済みのモデルがすでに置いてあるので、https://github.com/leetenki/YOLOv2/blob/master/YOLOv2_execute.md に従ってやれば良いのですが、微妙にうまく行かないところがあったので、その修正方法についてまとめました。

git cloneする

git clone https://github.com/leetenki/YOLOv2.git

cd YOLOv2

yolov2学習済みweightsファイルをダウンロードする。

これでwget http://pjreddie.com/media/files/yolo.weightsを実行しても次のパースのところがうまくいきませんでした。次のファイルを代わりにダウンロードすることでうまくいきました。

yolo.weights - Google ドライブ

参考: github.com

以下のコマンドでweightsファイルをchainer用にパースする。

python yolov2_darknet_parser.py yolo.weights

(chainerのバージョンが2以上の人向け)

chainerのバージョンが2以上の人は次のコマンドが動かないと思います。原因はyolov2.pyにあります。具体的にはyolov2.py内の94行目から123行目において、F.leaky_reluの引数にtest=not self.trainを取っていますが、これはバージョンが2以上の人は不要です。消しましょう。

参考:

qiita.com

以下のコマンドで好きな画像ファイルを指定して物体検出を行う。

python yolov2_darknet_predict.py data/people.png

検出結果はyolov2_result.jpgに保存されます。例えば猫の画像で実際に物体検出をしてくれるのかを見てましょう。~/hoge/hoge/フォルダ内のcat.pngを入力すると、、、

python yolov2_darknet_predict.py ~/hoge/hoge/cat.png

f:id:otaku_of_suri:20180619185235j:plain

このように猫であることをきちんと認識してくれました!ちなみにこの猫はたまゆらんにいる欅ちゃんです。

tabelog.com

以下のコマンドで、カメラを起動しリアルタイム物体検出を行う。

python yolov2_darknet_camera.py

以上です。何かあればコメントお願いします。