darknetによるYOLOv3学習時のlog出力について

darknetによるYOLOv3学習時のlog出力について

(2021/02/06追記:このページのアクセス多いわりにYOLOわかんねぇとか言って恥ずかしい出来になってるので,今度更新しますm(_ _)m)

darknetYOLOv3をオリジナルデータセットで学習するやり方を解説しているサイト(こことかこことか)は増えてきましたが,学習時に出力されるlogの意味が不明で解説サイトも見つからなかったので調べました.GitHubのissueで解説している人がいたので,それの翻訳版になります(^_-)-☆


(細かい話)私はROSでYOLOを使いたかったのでdarknet_rosを使っていて,そのサブモジュールがpjreddieによる本家darknetなので,それを使っています.今回見つけたissueはAlexeyABによる改良版darknetのissueです.簡単に見た感じは,ベースは同じなのでここで解説しているlogの事(改良版darknetに基づく)も本家darknetで同じだと考えています.(違ったらゴメンなさい((+_+)))


学習時に出力されるlogは以下の画像のような感じ((+_+)) 見ただけだと意味不明。。。何かのIoU(解説)とか出してるけど何のだろう??

この画像内に出力されているlogは2種類ありますが,まず

532633: 5.888629, 5.613394 avg, 0.000010 rate, 3.667564 seconds, 34088512 images

みたいな出力に関してです.このlogは左から

バッチ回数: そのバッチでのloss,平均のloss(注) avg,学習率 rate,このバッチにかかった計算時間 seconds,これまでの学習画像枚数 images

のようになっています.(イテレーション回数ではなくバッチ回数です.subdivisions数のミニバッチがまとまって一つのバッチになってます.なんでこうしてるか正直意味わからないです(*q*;)
(注)平均のlossといいつつも,コード上はave_loss=0.9*ave_loss + lossとなっているので,単なるlossの算術平均ではありません.学習初期のlossの影響が少なく,現在のイテレーションに近い時のlossが大きく考慮されるようなlossになっています.


次に,たくさん出ている

Region 106 Avg IOU: 0.386036, Class: 0.043712, Obj: 0.056230, No Obj: 0.000363, .5R: 0.312500, .75R: 0.000000,  count: 16

みたいなlogの見方です.左から順に解説します.

  • Region <num> の<num>
    • YOLOv3のネットワークの出力レイヤの番号を意味します.YOLOv3のデフォルトのcfgだと,82層目,94層目,106層目を見るようになっています.
  • Avg IoU
    • 検出されたオブジェクトのバウンディングボックス(クラスは考えない)とGround TruthとのIoUの平均
    • “平均”とは,cfgファイルで設定しているbatch数をsubdivisions数で割った枚数の画像を考えた場合です(batch / subdivisions 枚数)
    • cfgのbatchは「1つのバッチに含まれるサンプル数」
    • cfgのsubdivisionsは「1つのバッチ内のmini batch数」:ミニバッチサイズはbatch / subdivisionsで,この枚数を一度に処理して重み更新をかけているみたいです.
    • 参考
    • ミニバッチはよく聞くけど,なんで更にバッチに分けるの???ってなってます(;´Д`)
  • Class
    • 正しく分類されたオブジェクトの確率の平均
    • No Objと比較して,Class分類が正しい時のconfidenceがどの程度かを見ている感じかな??
  • Obj
    • そのanchor boxにオブジェクトがある確率の平均
    • 画像全体に対してオブジェクトがどれだけあるかってこと???
    • YOLOシリーズの論文ちゃんと読まなきゃわかんなそう。。。
  • No Obj:
    • すべてのオブジェクトの確率の平均(正しく分類されたもの,正しくない分類のもの両方)
  • .5R
    • True Positive(解説)の平均(IoU > 0.5)
    • IoU > 0.5のバウンディングボックス領域に対するTrue Positive
  • .75R
    • True Positiveの平均(IoU > 0.75)
  • count
    • そのレイヤー(Region <num>)における適したanchorの数
    • そもそもanchorの理解があいまいなので。。。
    • count=0の時は各計算がされずnanになるみたいです.

nanが出力されるときはcount=0, サンプル画像にオブジェクトがない場合です.しばらくnanが少し続いていても問題ないみたいです.長く続くなら学習に問題があるみたいです.

YOLOの記事書いてみようと思ったけど,YOLOについての理解が貧弱なことが分かりました(*_*)論文読みましょう!

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA