YOLOv2を動かしてみた。
以前YOLOv2を動かす機会があったので、そのことについてまとめます。
YOLOv2とは
YOLOv2はリアルタイム物体検出手法の一つで、非常に精度が高いです。以下の動画には度肝を抜かれました。
これを実際に動かすには訓練済みのモデルがすでに置いてあるので、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
を実行しても次のパースのところがうまくいきませんでした。次のファイルを代わりにダウンロードすることでうまくいきました。
参考: 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以上の人は不要です。消しましょう。
参考:
以下のコマンドで好きな画像ファイルを指定して物体検出を行う。
python yolov2_darknet_predict.py data/people.png
検出結果はyolov2_result.jpg
に保存されます。例えば猫の画像で実際に物体検出をしてくれるのかを見てましょう。~/hoge/hoge/
フォルダ内のcat.png
を入力すると、、、
python yolov2_darknet_predict.py ~/hoge/hoge/cat.png
このように猫であることをきちんと認識してくれました!ちなみにこの猫はたまゆらんにいる欅ちゃんです。
以下のコマンドで、カメラを起動しリアルタイム物体検出を行う。
python yolov2_darknet_camera.py
以上です。何かあればコメントお願いします。