ロボット、電子工作、AIなどの記録

ロボット、電子工作、AIなど、やったことを書こうかと

chainerでYOLOv2をやってみる [訓練済みモデル実行編]

2017年7月ごろに一度YOLOv2でwebカメラから物体認識をさせたのですが、
今回違う環境で動かそうとしたところエラーが出たので対処しました。

環境:
 win10
 chainer 1.21.0
 chainer 2.0.1


使用させてただいたプログラムはこちら
https://github.com/leetenki/YOLOv2

ここでDLして持ってきたら解凍。
次にすでに訓練されているモデルデータをDLするんですが、
YOLOv2/YOLOv2_execute.md at master · leetenki/YOLOv2 · GitHub
ここの

1、yolov2学習済みweightsファイルをダウンロードする。
 wget http://pjreddie.com/media/files/yolo.weights

2、以下のコマンドでweightsファイルをchainer用にパースする。
 python yolov2_darknet_parser.py yolo.weights

をしたところ、

<span style="color: #666666">C:\Users\YOLOv2-master\YOLOv2-master>python yolov2_da
rknet_parser.py yolo.weights
loading yolo.weights
loading initial model...
1 992
2 19680
3 93920
4 102368
5 176608
6 472544
7 505824
8 801760
9 1983456
10 2115552
11 3297248
12 3429344
13 4611040
14 9333728
15 9860064
16 14582752
17 15109088
18 19831776
19 29273056
20 38714336
Traceback (most recent call last):
  File "yolov2_darknet_parser.py", line 85, in <module>
    exec(txt)
  File "<string>", line 1, in <module>
ValueError: cannot reshape array of size 12265129 into shape (1024,3072,3,3)</span>

というエラーが出ました。
学習サイズが合っていないとのことなので合うサイズを持ってきます。

ここのお方がサイズが合ったものを提供してくださっています。
yolo.weights - Google ドライブ
ありがたくダウンロードして、YOLOv2-masterのフォルダに置く。
再度、chainer用にパースする

C:\Users\YOLOv2-master\YOLOv2-master>python yolov2_darknet_parser.py yolo.weights
loading yolo.weights
loading initial model...
1 992
2 19680
3 93920
4 102368
5 176608
6 472544
7 505824
8 801760
9 1983456
10 2115552
11 3297248
12 3429344
13 4611040
14 9333728
15 9860064
16 14582752
17 15109088
18 19831776
19 29273056
20 38714336
21 67029984
22 67465609
save weights file to yolov2_darknet.model

これでOK。

写真かWebカメラで動作確認。

python yolov2_darknet_predict.py data/people.png
python yolov2_darknet_camera.py 

f:id:weekendproject9:20170913184745p:plain:w250

※chainerのバージョンが1の系列なら実行可能です
※chainerが2のバージョンだと記述内容が変更になったためエラーで実行できません


おわり


[参考]
how to use yolov2_darknet_parser.py ? · Issue #2 · leetenki/YOLOv2 · GitHub