32
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

物体認識のYOLO V4を試してみる。yolov3_5lに比べて精度と速度は良い。

Last updated at Posted at 2020-04-26

YOLO V4が出たので試してみる

本家が出してるわけではないらしい。
お世話になっているhttps://github.com/AlexeyAB
に上がっていたので試してみた。

結果から書くとyolov3_5l.cfgに比べてv4は精度と速度両方とも良い。:grin:

AlexeyABさんありがとう!

早速自分のサービスに乗っけてみました。
https://funnel-service.com/

類似度モデルがまだ甘いので:thinking::thinking::thinking:
ただいま改善中!:sob::sob::sob:

動機

自分のサービスでyolov3_5lを使っていたのですが、夜な夜な作業で教師データを整理して精度を上げたので再学習が必要になった。
せっかくなので最新のフレームワークで学習。そしたらめっちゃ遅い。
AlexeyABさんに質問したらバグかも・・とのこと。
最終的に5レイヤーは重いからv4も試してみろとのとこと。
100%google翻訳で質問しましたが・・・・なんとか・・・
AlexeyABさん親切です!

ビルドとか

Windowsでclone>sln openして・・いろいろ設定して・・ではビルドできなくて
cmakeでやらないとダメだった。

cmakeでやるとサクサクやってくれる
~RTX TaitanならTensor Coreも自動でONにしてくれるっぽい。~
うそでした。Tensor Core入ってるならCUDNN_LIBRARY_DLLをチェックすべし。

こりゃいいわ。:grin:

https://github.com/AlexeyAB/darknet
をよく読んでおけばOK。

ちなみに、
Release\pthreadGC2.dll
Release\pthreadVC2.dll
のようにdllを入れておく必要がある。

2021/02/23 追記
自分の環境が壊れてとても大変だったのでやっぱりメモは必要!
(システム環境変数を吹っ飛ばしてしまいどうにもならなくなった。:joy:

手順は
・Windowsインストール
・Visual Studio 2019インストール(CUDAより先に入れる)
・CUDA11.0と対応するCUDNNインストール
・opencv-4.5.1-vc14_vc15インストール
・・システム環境変数に追加
・・C:\opencv\build\x64\vc15\lib
・・C:\opencv\build\x64\vc15\bin
・cmake-3.19.4-win64-x64インストール
とりあえずこれだけ入れればOK!

コードの修正

多コアなCPUの場合は

darknet/src/detector.cのLines 152 あたりにある

 args.threads = 6 * ngpus;   // 3 for - Amazon EC2 Tesla V100: p3.2xlarge (8 logical cores) - p3.16xlarge 
 //args.threads = 12 * ngpus;    // Ryzen 7 2700X (16 logical cores) 

を適当に修正するが・・そんなに変わらない。
2019/06あたりのソースコードだと倍くらい早くなったのに。:thinking:

同じソースの
383行付近

        //if (i % 1000 == 0 || (i < 1000 && i % 100 == 0)) {
        if (iteration % 100 == 0) {
        //if (iteration >= (iter_save + 1000) || iteration % 1000 == 0) {

重みの保存間隔を変える

windows用のdllはどこ?Pythonで使うには?

cmakeで作ったprojectではdllの名前が
「Release\dark.dll」という名前で作成されている。:grin:
これを、Pythonで使うには
yolo_cpp_dll.dllにリネームしてdarknet.pyから読める位置においておけばOK!

カスタムモデルを学習してみた

ずいぶん前に学習したyolov3_5lモデルの結果は
https://qiita.com/mokoenator/items/6807132ce59913186a9b
を参考にしてください。

1chart_yolov4-custom.png

いままでのモデルから比べるとLossの下がり方が違う:thermometer_face::thinking:
いつもなら、1~0.5くらいまで下がるのに、6~4をうろうろしている。
しかし、mAPは85%もでてる:thermometer_face::thinking:

これが当たり前なんだろうか??

cfg

lossの出方がいつもと違うので

[net]
max_chart_loss=10

とかしとくといいかも

pngの保存

Class毎の精度

100iteration毎に保存している重みを全部計算してみる。(1000以下は無駄なので省略)
YoloV4.png

和装の画像をほとんど入れてないので、学習させたらもうちょい上がるかな・・

Faceについては・・・前回では男女、美男美女の4種類で判別していたのをFaceに統一したら99%付近を張り付くようになった。

サンプル(出典:Pixabay)

v4_1sample.jpg
↓↓↓↓

1predictions.jpg

v4_2sample.jpg
↓↓↓↓

2predictions.jpg

v4_3sample.jpg
↓↓↓↓
3predictions.jpg

まぁまぁかな。今後も教師データの見直ししなきゃ:thermometer_face::thermometer_face::thermometer_face:

32
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?