1.環境: 独自の YOLOv5-5.0 モデルをトレーニングします。
2.エラーの理由: 事前トレーニングの重みのバージョンがソース コード フレームワークと一致しません。次の Web サイトで、対応するバージョンの YOLOv5-5.0 を見つけてください。
リリース · Ultralytics/yolov5 (github.com)
5.0 未満の YOLOv5s.pt をweights フォルダーにコピーしても、上記のエラーが依然として報告されるため、YOLOv5s6.pt を対応するフォルダーにコピーすると、バグは解消されます。
注: 対応する事前トレーニングの重みをダウンロードする方法があります。util/ フォルダーの下にある google_utils.py ファイルの対応する動作を変更します。 response=requests.get(f'https://api.github.com/repos/ {repo}/releases /tags/v5.0').json()
3. github公式サイトの説明によると、
- YOLOv5-P5 モデル (v4.0 リリースと同じアーキテクチャ): ストライド 8、16、32 の 3 つの出力レイヤーP3、P4、P5、トレーニング済み
--img 64
- YOLOv5-P6 モデル: ストライド 8、16、32、64 でトレーニングされた 4 つの出力レイヤーP3、P4、P5、P6
--img 1280
YOLOv5-P5 のネットワーク構造は 3 つの出力層を備えた YOLOv5-4.0 のネットワーク構造に似ていますが、YOLOv5-P6 には 1 つ多くの出力層があり、より大きなターゲットの検出効果が向上していることがわかります。
4. 別の方法: 別の解決策は、プロジェクトのソース コードを変更することです。つまり、model/common.py に SPPF クラスを追加します。個人的には、この方法は間接的に YOLOv5-6.0 ネットワーク モデルのトレーニングになると思いますが、という疑問も解決できます。
5. 参考文献