[yolov7 シリーズ 2] 陽性サンプルと陰性サンプルの配布戦略

この記事では、主に yolov7 のポジティブおよびネガティブ サンプル スクリーニング戦略に焦点を当て、yolov5 および yolov6 と比較します。

前回の yolov7 シリーズ 1 からの最初のフォローアップ、ネットワークの全体構造、いくつかの小さな穴を埋めます。皆さんに迷惑をかけないことを願っています
ここに画像の説明を挿入
:E-ELANレイヤー、猫の後、conv レイヤーを使用する必要があります機能の融合:
ここに画像の説明を挿入
そしてSPPCSPC层、みんなの正誤表の後、変更点は次のとおりです:
ここに画像の説明を挿入
他にもいくつかの小さな問題があります: たとえば、REPconv 層は yolov7 論文の ID 層を削除し、畳み込み後の活性化関数は SiLu です. yolov7 ネットワークはTag0.1版yolov7.yamlのコードを元に構築されており、作者がフォローアップ 継続的な最適化の繰り返しで、フォローアップのビッグナイフが更新され続けます。

**yolov7 は、アンカー ベースのターゲット検出という点で yolov5 と同じです。yolov6 のポジティブ サンプルとネガティブ サンプルのマッチング戦略は yolox と同じであり、yolov7 は基本的に 2 つの長所を統合しています。**まず、yolov5 と v6 の正と負のサンプル マッチング戦略を確認しましょう。

yolov5 の正と負のサンプル マッチング戦略

yolov5に基づいてanchor based、トレーニングを開始する前に、トレーニング セットに基づいてgt(ground truth 框)、クラスタリング アルゴリズムを通じて、k-means小さいものから大きいものまで並べられた 9 つのアンカー ボックスがアプリオリに取得されます。最初に各 gt を 9 つのアンカーと一致させます (以前は IOU マッチング、yolov5 はシェイプ マッチングになり、gt と 9 つのアンカーの間のアスペクト比を計算します。アスペクト比が設定されたしきい値よりも小さい場合は、gt と対応するアンカー マッチングを意味します)
ここに画像の説明を挿入
。上記、yolov5のネットワークアーキテクチャ、yolov5は3層ネットワークを持ち、小さいものから大きいものまで9つのアンカーがあり、3つのアンカーごとに予測ネットワークのレイヤーに対応し、gtはアンカーが配置されているレイヤーに対応し、使用されますgt のトレーニング予測を行うために、 gt は複数のアンカーに一致する場合があります。
したがって、gt は異なるネットワーク層で予測トレーニングを実行する可能性があり、これにより正のサンプルの数が大幅に増加します.もちろん、gt がすべてのアンカーに一致しない場合もあるため、gt は背景と見なされ、参加しません。アンカーボックスのサイズが適切に設計されていません。

トレーニング プロセス中にポジティブ サンプルとネガティブ サンプルを定義する方法。yolov5 のネガティブ サンプルはトレーニングに参加しないため、ポジティブ サンプルの数を増やす必要があります。gt フレームがアンカー フレームに一致した後、アンカー フレームに対応するネットワーク層のグリッドを取得し、gt 中心点がどのグリッドにあるかを確認し、グリッド内の gt に一致するアンカーを正のサンプルとして取得するだけでなく、隣接する 2 つも取得します。グリッド内のアンカーはポジティブ サンプルです。

下の図**に示すように、緑色の gt ボックスの中心点が赤いグリッドの 3 番目の象限にあり、グリッドだけでなく、左側のグリッドと下のグリッドも取得されます。**これは 3 つのグリッドとマッチングに基づいています. アンカーには 3 つの中心点があり, 3 つのグリッドの中心点に位置しています. 長さと幅はアンカーの長さと幅の正のサンプルです. 同時に, gt だけでなくは 1 つのアンカー フレームに一致しますが、複数のアンカー フレームに一致する場合は、3 ~ 27 のポジティブ サンプルが存在する可能性があります。

ここに画像の説明を挿入

yolov6 の正と負のサンプル マッチング戦略

yolov6 のポジティブおよびネガティブ サンプル マッチング戦略は yolovx の戦略と同じyoloxanchor freeあり、先行ボックスの事前知識が不足しているため、アンカーはありません. 理論的には、シーンのより良い一般化が必要です. 公式の解釈も参照してください. of Megvii: Anchor が検出を追加 ヘッダーの複雑さと生成される結果の数により、一部のエッジ デバイスでは多数の検出結果を NPU から CPU に転送することが許容されません。

yolov6 における陽性サンプルのスクリーニングは、主に次の部分に分けられます:
①: 2 つの次元に基づくラフなスクリーニング;
②: simOTA に基づくさらなるスクリーニング。

具体的な手順は次のとおりです
ここに画像の説明を挿入
。タイ ラベルの gt を図に示し、gt の中心点 (Cx、Cy) を見つけ、中心点から左上隅までの距離 (l_l、l_t) を計算し、右下隅の座標 (l_r、l_b)、次に 2 つのステップを使用してポジティブ サンプルをフィルタリングします。

最初のステップは、最初の次元を大まかに選別することです.グリッドの中心点が gt にある場合、グリッドによって予測されたフレームは、赤とオレンジの部分 ** に示すように、正のサンプルであると見なされ、2番目の次元寸法は * * gt の中心点が位置するグリッドの中心点を中心として、上下左右に 2.5 グリッド ステップ以内でグリッドを拡張すると、グリッドが予測するフレームが図の紫色とオレンジ色の部分に示されているように、デフォルトで陽性サンプル。このようにして、最初のステップで 31 のポジティブ サンプルがスクリーニングされます (注: ここではポジティブ サンプルの単一レイヤーがあり、yolov6 には 3 つのネットワーク レイヤーがあり、各レイヤーのポジティブ サンプルは個別に計算され、重ね合わせられます)。
ここに画像の説明を挿入
ステップ 2: SimOTA によるさらなるスクリーニング:

SimOTA は OTA に基づく最適化です. OTA は動的マッチングアルゴリズムです. 詳細は Megvii の公式解釈を参照してください (https://www.zhihu.com/question/473350307/answer/2021031747)

SimOTA の手順は次のとおりです。 ①
予備スクリーニングの陽性サンプルと gt の間の IOU を計算し、IOU を大から小へと並べ替え、上位 10 の合計を切り上げて b として記録します。
②一次選別陽性標本のcos費用関数を計算し、cos費用関数を小さいものから大きいものへ並べ、cos前の標本bを陽性標本とする。
同時に、同じグリッド予測フレームが 2 つの gt に関連付けられ、cos の値が小さい方を取り、予測フレームが対応する gt の正のサンプルである場合を考えます。
詳細については、Jiang Dabai のZhihu の記事を参照してください: https://www.zhihu.com/search?type=content&q=simOTA

yolov7 の正と負のサンプル マッチング戦略

yolov7 はアンカーベースに基づいて v5 と v6 の両方の本質を統合しているため、つまり、yolov6 の最初のステップは yolov5 の陽性サンプルをスクリーニングする戦略に置き換えられ、simOTA の 2 番目のステップはさらなるスクリーニング戦略のために保持されます。

同時に、yolov7には2つと2aux_headあり、aux_headは補助として使用され、陽性サンプルをスクリーニングするための戦略はlead_headと同じですが、よりリラックスしています. たとえば、スクリーニングの最初のステップで、lead_head は、中心点が位置するグリッドと、それに近い 2 つのグリッドに対応する予測フレームを正のサンプルとして取得します (緑色のグリッドに示すように)。aux_head は中心点とポジティブ サンプルとして周囲の 4 つの予測フレーム。緑+青の領域のグリッドは下図のようになります.同時にsimOTAの第二段階で,lead_headは陽性サンプルのIOUと一次スクリーニングのgtを計算し,IOUを大きいものからソートします.小さい場合は、上位 10 の合計を切り上げて b として記録します。aux_head は、最初の 20 の合計を取り、それを切り上げます。他の手順は同じで、aux_head は主に再現率を上げて検出漏れを防ぐためのもので、lead_head は aux_head に基づいてさらにスクリーニングされます。lead_headhead
ここに画像の説明を挿入

以上がyolov7のポジティブサンプルとネガティブサンプルのマッチング戦略です、皆様のお役に立てれば幸いです。同時に、テキストにバグがある場合は、一緒に議論してください。

最後に、記事内でpptを使用する必要がある場合は、公式アカウントをフォローしてバックグラウンドでWeChatを追加し、受信して「ppt」とコメントしてください。

参照:
[1] https://github.com/WongKinYiu/yolov7 (公式の github コード)
[2] https://arxiv.org/pdf/2207.02696.pdf (yolov7 論文)
[3] ] https://zhuanlan .zhihu.com/p/39
[4] YOLOv7 公式オープン ソース | Alexey Bochkovskiy プラットフォーム、精度と速度はすべての YOLO を上回っていますが、AB でなければなりません (qq.com)
[5]オープン ソースの YOLOX の評価方法Megvii、効果はYOLOv5よりも優れていますか?

おすすめ

転載: blog.csdn.net/zqwwwm/article/details/125971506