蒋胡の名で知られる無名の大学生
原著者: jacky Li
電子メール: [email protected]
完了時刻:2023.1.12
最終編集日:2023.1.12
目次
ターゲット検出が再びアップグレードされました! YOLOv8 モデルのトレーニングとデプロイ
ターゲット検出が再びアップグレードされました! YOLOv8 モデルのトレーニングとデプロイ
序章
YOLOv8 は、Ultralytics によって開発された YOLO (You Only Look Once) オブジェクト検出および画像セグメンテーション モデルの最新バージョンです。YOLOv8 は、以前の YOLO の成功に基づいて構築された最先端の最先端の SOTA モデルであり、新しい機能と改善を導入して、パフォーマンスと柔軟性をさらに向上させます。大規模なデータセットでトレーニングでき、CPU から GPU までのさまざまなハードウェア プラットフォームで実行できます。
YOLOv8 のもう 1 つの重要な機能は、そのスケーラビリティです.フレームワークとして設計されているため、YOLO の以前のすべてのバージョンをサポートし、異なるバージョン間で簡単に切り替えてパフォーマンスを比較することができます。
YOLOv8の革新と改善点
1. バックボーン。CSP の考え方は今でも使われていますが、YOLOv5 の C3 モジュールは C2f モジュールに置き換えられ、さらなる軽量化が実現されています。
2.PAN-FPN。YOLOv8がまだPANの考え方を使っていることは間違いありませんが、YOLOv5とYOLOv8の構造図を比較すると、YOLOv8はYOLOv5のPAN-FPNアップサンプリング段階で畳み込み構造を削除し、 C2fモジュールを備えたC3モジュール
3. デカップリングヘッド。何か違うにおいがしましたか?はい、YOLOv8 は Decoupled-Head に移行しました。
4.アンカーフリー。YOLOv8 は以前の Anchor-Base を放棄し、Anchor-Free のアイデアを使用しました。
5.損失関数。YOLOv8 は、分類損失として VFL 損失を使用し、分類損失として DFL 損失 + CIOU 損失を使用します。
6.サンプルマッチング。YOLOv8 は、以前の IOU マッチングまたは一方的な比率割り当てを放棄しましたが、Task-Aligned Assigner マッチング方法を使用しました。
違い
1. C2f モジュールとは何ですか? C3との違いは?
急いでいるわけではありません。まず C3 モジュールの構造図を見て、具体的な違いを C2f と比較します。C3 モジュールでは、主に CSPNet を使用してシャントのアイデアを抽出し、同時に残差構造のアイデアを組み合わせて、いわゆる C3 ブロックを設計します. CSP メインブランチ勾配モジュールはこちらいわゆる残差モジュールであるボトルネックモジュールです。同時にスタックの数は、パラメータ n によって制御されます。つまり、n の値は、異なるスケールのモデルによって異なります。
実際、ここでの勾配フローのメイン ブランチは、以前に学習した任意のモジュールにすることができます. たとえば、Meituan によって提案された YOLOv6 は、Meituan によって提案された YOLOv6 のメインの勾配フロー ブランチとして、BottleNeck ブロックを置き換えるために使用されます。 Baidu によって提案された PP. -YOLOE は RepResNet-Block を使用して、BottleNeck ブロックをメインの勾配フロー ブランチとして置き換えます。YOLOv7 は ELAN ブロックを使用して、主要な勾配フロー ブランチとしてのボトルネック ブロックを置き換えます。
損失関数
YOLOv8 の場合、分類損失は VFL 損失であり、回帰損失は CIOU 損失 + DFL の形式であり、Reg_max のデフォルトは 16 です。
VFL の主な改善点は、非対称の重み付け操作を提案することであり、FL と QFL はどちらも対称です。非対称重み付けのアイデアは、最初に正サンプルと負サンプルの間に不均衡の問題があり、正のサンプルであっても、重みが等しくないという問題があることを指摘した紙の PISA から来ています。mAP の計算は主な陽性サンプル。
qはラベル. ポジティブサンプルの場合, qはbboxとgtのIoU. ネガティブサンプルの場合, q=0. ポジティブサンプルの場合, FLは実際には使用されず, 通常のBCEですが,マスター サンプルを強調表示するための追加の適応 IoU 重み付けがあります。そして陰性の場合は標準FLです。VFL は QFL よりも単純であり、その主な特徴は、ポジティブ サンプルとネガティブ サンプルの非対称な重み付けと、メイン サンプルとしての顕著なポジティブ サンプルであることが明確にわかります。
ここでの DFL (Distribution Focal Loss) では、主にフレームの位置を一般的な分布としてモデル化し、ネットワークがターゲット位置に近い位置の分布にすばやく焦点を当てることができるようにします。
DFL を使用すると、ネットワークはターゲット y に近い値により速く焦点を当てることができ、その可能性が高まります。
DFL の意味は、クロス エントロピーの形で、ラベル y に最も近い 2 つの位置 (左と右) の確率を最適化し、ネットワークがターゲットの隣接エリアの分布に焦点を当てることができるようにすることです。つまり、学習した分布 理論的には実浮動小数点座標に近く、左右の整数座標からの距離の重みを線形補間で求めます。
サンプルマッチング
ラベルの割り当ては、ターゲット検出の非常に重要な部分です. YOLOv5 の初期のバージョンでは、ラベルの割り当て方法として MaxIOU が使用されていました。ただし、実際には、辺の長さの比率を直接使用しても同じ効果が得られることがわかっています。YOLOv8 は Anchor-Base 方式を放棄して Anchor-Free 方式を採用し、辺の長さの比率を置き換えるマッチング方式、TaskAligned を見つけました。
NMS を使用するには、トレーニング サンプルのアンカー割り当てが次の 2 つのルールを満たす必要があります。
通常位置合わせされたアンカーは、正確なポジショニングを行いながら、高い分類スコアを予測できるはずです。
整列していないアンカーは分類スコアが低く、NMS ステージで抑制されます。上記の 2 つの目標に基づいて、TaskAligned はアンカー レベルでのタスク アラインメントのレベルを測定する新しいアンカー アラインメント メトリックを設計しました。さらに、各アンカーの予測を動的に最適化するために、アライメント メトリックがサンプル割り当ておよび損失関数に統合されています。
参考
[1].https://github.com/uyolo1314/ultralytics.
[2].https://github.com/meituan/YOLOv6.
[3].https://arxiv.org/abs/2209.02976.
[4].https://github.com/PaddlePaddle/PaddleDetection.
[5].https://github.com/PaddlePaddle/PaddleYOLO.
[6].https://github.com/open-mmlab/mmyolo.
作者には言いたいことがある
フレームワークのトレーニングと展開のアドレスが必要な場合は、ブロガーをフォローしてください。! ! 以下のリンクは、 GitHub を利用する必要があります - DataXujing/YOLOv8: Official YOLOv8 model training and deployment :fire: Official YOLOv8 model training and deployment. Contribute to DataXujing/YOLOv8 development by creating a account on GitHub. https://github. com/DataXujing/YOLOv8
ブロガーの発言が役立つと思われる場合は、クリックしてサポートしてください。そのような問題は引き続き更新されます...