Model(学習済モデル)が用意されています。公開されているモデルの学習データは、すべてCOCO。YOLO)というモデルもあります。正確さよりもリアルタイム性や軽量さを要求される用途では、Tiny-YOLOという小さいモデルも選択できます。今回は、v3と名の付くこの3つのモデルを、様々なパラメータで実行し、速度と精度を検証します。4Kで撮影した動画を、FHD(2K:1920x1080)、HD(1440×1080)、VGA(640x480)にダウンコンバートし、この4種類の動画(mp4)を下記のコマンドでリアルタイムに物体検出する。64bitCUDA:10.1cuDNN:7.5.1書き出し先:内蔵HDD(7200rpm)精度の違い精度は、静止画に書き出した状態で、同じフレームをどのように認識したか、検出すべきものを検出できているかどうか?を実際の検出画像を元に評価します。v3-tinyv3v3-spptinyでは大きなものしか認識されていません。検出数:2と検出漏れが多く、枠が二重で検出されているなど、結果がかなり怪しいです。v3では、遠くのトラック(普通車の陰になっている)や遠方の車両を漏らしていますが、tinyよりも精度は高いです。検出数:6v3-sppは、大きなものも小さなものも検出できています。ワンボックス車両をトラックと誤認識しています。検出数:8で最も検出漏れが少なく、精度も高い結果となっています。モデル毎の比較では、v3-sppの検出精度が最も良い結果となりました。マルチスケール検出の手法によって、小さなものまで良く拾えていると推測できます。20-21tinyでは、動画画素数の影響が如実に出ます。VGAサイズでは、なんと100-110fpsというスピードになりました。(検出の精度が良くないですが)v3とv3-sppの場合、4Kの場合を除いて、それ以下の解像度の場合に20-21fpsが性能の上限のようです。tinyのようには解像度の影響が出ません。4Kの場合は、tinyでもv3でもv3-sppでも18-20fpsと違いがありませんでした。18-20モデルがv3で4K動画を処理する場合、表示なし:18-20fps→表示あり:13-15fpsと動画表示有無で5fps(25%)程度の速度低下がありました。VGAの場合は、表示なし:36fps→表示あり:34fpsと影響は小さいです。18-20静止画の書き出しを行う/行わないは、とても大きな影響があります。GPU処理に比べ、HDDへのファイル書き込みが遅いことが主な原因と推測できます。4Kの場合、静止画での書き出しを行うと処理に6倍の時間が掛かります。18-20ログの書き出しは、(意外にも)処理速度そのものに大した影響はなさそうです。4Kの18-20fpsに対してなので、差が大きく出なかったのかもしれません。公式サイトに記載されているような結果(v3:35fps、v3-spp:20fps、tiny:220fps)に近い結果(v3:36fps、v3-spp:20-21fps、tiny:180-200fps)が得られました。今回は試していませんが、mAP=48.1、40FPSというスペックを見る限り、v3-tinyの代わりにv2を採用しても良いかもしれません。GPUリソースをふんだんに使えるPCで実行するなら断然v3-sppが良い。処理速度が必要な場合でも、tinyの採用は怪しい。(検出精度を犠牲にしても、"必要のないくらい高速"に意味がある用途ならOK)せめてv3程度の認識は欲しい。撮影、お城、戦国、ICT、サブカルチャー...常に面白く、新しいものに惹かれるタイプです。:YOLOv3のファンクションと引数のまとめ(私家版)お問い合わせご意見・ご質問などお気軽にお問い合わせ下さい。