やってみよう!

プログラミングとかでぃーぷらーにんぐとかVRとか気になったものをやってみる予定

雑に作ったデータセットでYOLOv3を学習させてみる3

前回、アノテーションデータがおかしいことが判明したので再挑戦です。

データセット作成スクリプト修正

おかしかったのは前々回で修正した

blog.ascreit.com

yolo.pyのdetect_image関数の

            if(predicted_class == "person"):
                anotation += " %s,%s,%s,%s,0"%(top, left, bottom, right)

この部分です。 READMEにはx_min, y_min, x_max, y_maxとなっているのに、

これでは y_min, x_min, y_max, x_maxですね。

なので、

            if(predicted_class == "person"):
                anotation += " %s,%s,%s,%s,0"%(left, top, right,bottom)

こうします。

学習させる

あとはデータ作り直して(約12時間)学習させます(約3時間)

Epoch 00099: ReduceLROnPlateau reducing learning rate to 9.999999974752428e-08.
Epoch 100/1000
200/200 [==============================] - 156s 779ms/step - loss: 8.9536 - val_loss: 10.7139
Epoch 101/1000
200/200 [==============================] - 155s 777ms/step - loss: 9.0758 - val_loss: 10.4517
Epoch 102/1000
200/200 [==============================] - 155s 777ms/step - loss: 9.1338 - val_loss: 10.6818

Epoch 00102: ReduceLROnPlateau reducing learning rate to 1.0000000116860975e-08.
Epoch 103/1000
200/200 [==============================] - 155s 777ms/step - loss: 8.9787 - val_loss: 10.6389

f:id:ascreit:20180918193929p:plainf:id:ascreit:20180918193932p:plainf:id:ascreit:20180918193935p:plain

結果

before after
f:id:ascreit:20180918203917j:plain f:id:ascreit:20180918203931j:plain
f:id:ascreit:20180918203939j:plain f:id:ascreit:20180918203948j:plain
f:id:ascreit:20180918203954j:plain f:id:ascreit:20180918204002j:plain
f:id:ascreit:20180918204017j:plain f:id:ascreit:20180918204024j:plain
f:id:ascreit:20180918210051g:plain f:id:ascreit:20180918205934g:plain

う〜ん、ちょっと良くなったのかな?

微妙ですね。

追記

githubにコードは置いてあるので気になる方は試してみてください

https://github.com/kamei002/tf/tree/master/src/yolov3_train