コンテンツへスキップ

最高のトレーニング結果を得るためのヒント

📚 このガイドでは、YOLOv5 🚀で最高のmAPとトレーニング結果を出す方法を説明します。

データセットが十分に大きく、十分にラベル付けされていれば、ほとんどの場合、モデルやトレーニングの設定を変更することなく、良い結果を得ることができます。もし最初に良い結果が得られなかった場合、改善するためのステップがあるかもしれませんが、変更を検討する前に、まずすべてのデフォルト設定でトレーニングすることをお勧めします。これは、パフォーマンスのベースラインを確立し、改善のための領域を見つけるのに役立ちます。

トレーニングの結果について質問がある場合 可能な限り最大限の情報を提供することをお勧めします。 結果のプロット(train losses, val losses, P, R, mAP)、PR曲線、混同行列、トレーニングモザイク、テスト結果、labels.pngのようなデータセットの統計画像を含む。これらはすべて project/name ディレクトリ、通常は yolov5/runs/train/exp.

YOLOv5 トレーニングで最高の結果を出したいユーザーのために、以下に完全なガイドをまとめた。

データ集合

  • 1クラスあたり1500枚以上を推奨
  • クラスあたりのインスタンス。
  • 画像の多様性。配備された環境を代表するものでなければならない。実際のユースケースでは、異なる時間帯、異なる季節、異なる天候、異なる照明、異なるアングル、異なるソース(オンラインでスクレイピング、ローカルで収集、異なるカメラ)などの画像を推奨する。
  • ラベルの一貫性。すべての画像のすべてのクラスのすべてのインスタンスにラベルを付ける必要があります。部分的なラベル付けは機能しません。
  • ラベルの正確さ。ラベルは各オブジェクトを密接に囲んでいなければならない。オブジェクトとそのバウンディング・ボックスの間にスペースがあってはならない。ラベルがないオブジェクトがあってはならない。
  • ラベルの検証。 表示 train_batch*.jpg 列車の発車時に、ラベルが正しく表示されていることを確認する。 例 モザイク
  • 背景画像。背景画像とは、FP(False Positives:誤検出)を減らすためにデータセットに追加される、対象物のない画像のことです。FPを減らすために、0~10%程度の背景画像を推奨する(COCOには参考として1000枚の背景画像があり、全体の1%である)。背景画像にラベルは不要。

COCO分析

モデルの選択

YOLOv5xやYOLOv5x6のような大きなモデルは、ほぼすべてのケースでより良い結果を生み出しますが、パラメータが多く、学習により多くのCUDAメモリを必要とし、実行速度が遅くなります。モバイル・デプロイメントにはYOLOv5s/mを、クラウド・デプロイメントにはYOLOv5l/xを推奨する。すべてのモデルの完全な比較については、READMEの表をご覧ください。

YOLOv5 モデル

python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

トレーニング設定

何かを変更する前に、パフォーマンスのベースラインを確立するために、まずデフォルトの設定でトレーニングしてください。train.pyの設定の完全なリストはtrain.pyargparserにあります。

  • エポック。300エポックから始める。早期にオーバーフィットが発生する場合は、エポック数を減らすことができる。300エポックでオーバーフィットが発生しない場合は、600エポック、1200エポックなど、より長いエポックを学習する。
  • 画像サイズ。 COCOはネイティブ解像度の --img 640しかし、データセットに小さなオブジェクトが多いため、以下のような高解像度でトレーニングすることが有効である。 --img 1280.小さなオブジェクトが多い場合、カスタムデータセットはネイティブ解像度またはそれ以上の解像度で学習するのが効果的である。最高の推論結果は、同じ --img でトレーニングする。 --img 1280 をテストし、検出する必要がある。 --img 1280.
  • バッチサイズ。 最大のものを使う --batch-size ハードウェアが許容するバッチサイズが小さいとバッチノルム統計が悪くなるので避けるべきである。
  • ハイパーパラメータ。 デフォルトのハイパーパラメータは hyp.scratch-low.yaml.ハイパーパラメータの変更を考える前に、まずデフォルトのハイパーパラメータで訓練することをお勧めします。一般的に、オーグメンテーション・ハイパーパラメータを増やすと、オーバーフィッティングを減らし、遅らせることができるため、より長い学習が可能になり、最終的なMAPが高くなります。のような損失成分ゲインのハイパーパラメータを減らす。 hyp['obj'] は、特定の損失成分におけるオーバーフィッティングを減らすのに役立つ。これらのハイパーパラメータを最適化する自動化された方法については、我々の ハイパーパラメータ進化チュートリアル.

さらに読む

もっと詳しく知りたいのであれば、カルパシーの「Recipe for Training Neural Networks(ニューラルネットワークをトレーニングするためのレシピ)」から始めるのがいいだろう。この本には、すべてのMLドメインに広く適用できるトレーニングの素晴らしいアイデアが載っている。https://karpathy.github.io/2019/04/25/recipe/

頑張ってください🍀また、他に質問があれば教えてください!



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (4), Burhan-Q (1)

コメント