yolov7 についてのいくつかの理解

ここに画像の説明を挿入します論文: https://arxiv.org/abs/2207.02696
Github: https://github.com/WongKinYiu/yolov7
ここに画像の説明を挿入します

1.概要

Yolov7 は Yolov4 チームの作品であり、yolo のオリジナル作者によって認められており、論文発表後大きな注目を集め、一連の最適化と技術の組み合わせにより、Yolov7 は 5FPS のパフォーマンスを達成しました。論文発表時点 [2022 年 7 月] 160FPS の範囲では

2. 革新のポイント

  • 効率的なネットワーク構造: ネットワーク コンポーネントを変更し、ELAN構造を導入します。
  • 動的ラベル割り当て戦略: yolov5 のクロスグリッド マッチング戦略および yolox の動的グリッド戦略 SimOTA と組み合わせたもの
  • Bag-of-Freebies 手法の中には、推論時間を増加させることなく検出精度を向上させるために提案されているものもあります。
    • 補助頭部トレーニング戦略
    • モデルの再パラメータ化

3. 具体的な作業

3.1. ネットワーク構造の最適化

yolov7 の全体的なネットワーク アーキテクチャは依然として yolov5 を使用していますが、一部のコンポーネントは変更または置き換えられています。

変更-1: 3 層 conv がステム モジュールを置き換えて 2 倍のダウンサンプリングを実現
- Conv は引き続き: コンボリューション + BN + SiLU 3 点セット
ここに画像の説明を挿入します

修正 2: CSP モジュールを置き換えるために ELAN モジュールを導入します
- この ELAN 構造の利点の 1 つは、各ブランチの動作において、入力チャネルが出力チャネルと一致していることです [ネットワーク設計の効率的な基準] - これは次のとおりです。ほんの
始まりです 2 つの 1x1 畳み込みにはチャネル変更があります
ここに画像の説明を挿入しますここに画像の説明を挿入します

変更 3: ダウンサンプリング モジュール (Maxpling + Conv)
- 現在、ダウンサンプリングを実装するには 2 つの主な方法があります: 最大プーリングとストライド 2 の畳み込みです。yolov7 ダウンサンプリング モジュールは、「大人はすべてが欲しい」という原則に準拠しています。同時に;
- 左側のブランチは主にマックスプーリング (MP) を使用して空間ダウンサンプリングを実現し、その後に 1x1 コンボリューション圧縮チャネルが続きます; - 右ブランチは最初に 1x1 コンボリューション圧縮チャネルを使用し、次に 3x3 ボリュームを使用し
ますストライド 2 で製品はダウンサンプリングを完了します
。最後に 2 つのブランチの結果が結合され、最終的に入力チャネルの数と等しい出力チャネルの数を持つ特徴マップが取得されますが、空間解像度は 2 減少します。回。
ここに画像の説明を挿入します

修正-4: Neck 部分は引き続き PANFPN 構造を使用します。違いは
- ELAN が CSP に置き換わります (ELAN 構造は Backbone よりも複雑です)
- ダウンサンプリング モジュールは Maxpling + Conv を使用します (構造は Backbone と比較され、出力の数が異なります)チャンネルが増えます)
ここに画像の説明を挿入します

全体的なネットワーク構造

  • DS はダウンサンプリング モジュールです
    ここに画像の説明を挿入します

3.2. 補助頭部トレーニング

ディープスーパービジョンは、ディープネットワークトレーニングで一般的に使用される手法です。主なアイデアは、ネットワークの中間層に補助ヘッドを追加し、浅いネットワークの重みのガイダンスとして補助損失を組み合わせるというものです。ResNet や Densnet のような一般的によく収束したアーキテクチャであっても、深い監視によって多くのタスクでモデルを大幅に改善できます。 yolov7 では、最終出力を担当するヘッドをリードヘッド (Lead head) と呼び、ヘッドの補助トレーニングを補助ヘッド (Aux head) と呼びます。

補助ヘッダタグ割り当ての問題について

  • 従来の処理方法:下図©のように補助ヘッドと先行ヘッドを分離し、それぞれの予測結果とGTを用いてラベル割り当てを行う
  • yolov7 では、ガイダンス ヘッドの予測結果は、次の図 (d) (e) に​​示すように、粗いから細かいまでの階層ラベルを生成するためのガイダンスとして使用され、補助ヘッドとガイダンス ヘッドの学習にそれぞれ使用されます。
    ここに画像の説明を挿入します
  • リードヘッドによってガイドされるラベルディスペンサー (上の図 d を参照)
    • ガイドヘッドとGTの予測結果をもとに計算を行い、最適化処理によりソフトラベルを生成します。
    • トレーニング中は補助ヘッドとガイドヘッドの両方にソフトラベルが使用されます。
    • ガイドヘッドは損失を個別に計算し、補助ヘッドはガイドヘッドによって照合された正のサンプルをそれ自身の正のサンプルとして取得し、損失を計算し、最終的にそれを合計します(比率は異なります)。
  • ラベル ディスペンサーは厚いガイド ヘッドから薄いガイド ヘッドにガイドされます (上の図 e を参照)
    • ガイダンスヘッドの予測とGTを使用してソフトラベルを生成しますが、粗いラベルと細かいラベルの2種類のラベルが生成されます
    • 細かいラベルは、図 d のソフト ラベル生成プロセスと同じです。粗いラベルでは、陽性サンプルに対する制約を緩和することにより、より多くのグリッドを陽性サンプルと見なすことができます。
    • 補助ヘッドはモデルの再現率を最適化する傾向があり、誘導ヘッドは高再現率の結果の中から高精度の結果を選択します。
    • ガイドヘッドは個別に損失を計算し、補助ヘッドはガイドヘッドのマッチングで得られたポジティブサンプル(粗マッチング)を自身のポジティブサンプルとして損失を計算し、最終的にそれらを合計します(異なる割合)。
    • 注: 追加の粗いラベルのサンプルは、細かいサンプルと同じ損失重量を持つことはできません。そうしないと、検出器が損傷するため、重量を調整する必要があります。
  • 補助ヘッドを使用してトレーニングするかどうかに関する 2 つの違い
    • 損失関数は補助ヘッドがない場合と同じですが、補助ヘッドの重み付け係数は大きすぎてはなりません (補助ヘッドとメイン ヘッドの比率は 0.25:1)。そうしないと、メイン ヘッドからの結果の精度が低下します。頭が下がります。
    • マッチング戦略と補助ヘッダーなしの上記の戦略の違いは次のとおりです。
      • メイン ヘッドの各グリッドが GT と一致した後、その周囲に最も近い 2 つのグリッドが追加され、補助ヘッドは 4 つのグリッドを追加します。
      • メインヘッダーでは、上位 10 個のサンプルが合計されて丸められますが、補助ヘッダーでは、上位 20 個が取得されます。
    • 実験結果
      • 補助ヘッドを導入すると、補助ヘッドを追加しない場合よりもパフォーマンスが向上します。
      • 粗いものから細かいものへのラベル付け戦略が最も効果的です
        ここに画像の説明を挿入します

3.3. ラベル割り当て戦略

yolov7 のラベル割り当て戦略 (陽性サンプルのスクリーニング) は、主に yolov5 と yolov7 の両方の本質を統合し、同時に、Coarse to Fine の深い監視方法に異なるラベルを導入します。

  • yolov5 クロスネットワーク マッチング戦略を使用して予備的な陽性サンプルを割り当てる
    • yolov5 でのターゲットのマッチングは、IOU ではなくアスペクト比に基づいて行われるようになりました。アンカーの長さと幅/GT の長さと幅が設定されたしきい値より小さい場合、それは陽性サンプルです。
    • ターゲットの中心点が位置するグリッドのアンカーを導入することに加えて、中心点グリッドの上下左右の 4 つのグリッドのアンカーも導入され、陽性サンプルのマッチングに参加するため、陽性サンプルの数。
    • このうち、中心点に近い 2 つのグリッドのマッチング サンプルは誘導ヘッドのトレーニングに使用され、さらに離れた 2 つのグリッドは補助ヘッドのトレーニングに追加されます [yolov5 自体には補助ヘッドの操作では、補助ヘッドのみが最も近い 2 つのグリッドを取り込みます]
    • 下の図に示すように、赤い点はターゲットの中心点の位置であり、上下左右の 4 つのグリッドもサンプル マッチングに使用されます。左と上のグリッドは中心点に近く、は誘導ヘッドのトレーニングに使用され、右と下のグリッドは中心点に近く、グリッドは中心点から遠く離れており、補助ヘッドのトレーニング中にのみ導入されます。
      ここに画像の説明を挿入します
  • yolov7 動的グリッド マッチング戦略を使用してさらにスクリーニングし、最終的な陽性サンプルを取得します
    • 各 GT の予測サンプルを使用して、割り当てる必要がある陽性サンプルの数を決定します (動的 k)
      • スクリーニングの最初のステップで得られた予備的な陽性サンプルを計算します
      • そして、Top10 サンプルに対して合計と丸めを実行して、現在の GT の Dynamic k を決定します (最小値は 1)。
      • 補助ヘッドの上部のトレーニング用に、上部 20 個の [粗いラベル] を取得します。
        ここに画像の説明を挿入します
    • 各 GT の各サンプルの Reg + Cls 損失 (損失を認識) を計算します。
    • 各 GT について、損失が最小の最初の動的 k サンプルを最終的な正のサンプルとして取得します。
    • 複数の GT の陽性サンプルに同じサンプルが割り当てられる状況を削除する
      • 損失フィルタリングにも基づく

3.4. 重いパラメータ構造

  • 背景: Repvgg より
    • マルチブランチ構造: より豊富な特徴を学習でき、モデルの精度が高くなります。
    • 単一ブランチ構造: 高速で優れたハードウェア サポートと推論効率
    • 構造の再パラメータ化:上記の利点を統合して、トレーニング中にマルチブランチ構造が使用され、推論中に構造の再パラメータ化を通じてモデルが単一ブランチ構造に変換され、より高い推論効率が実現されます。
  • 理解すべきいくつかのポイント:
    • 構造体とパラメータは 1 対 1 に対応します
    • 構造の等価変換は、パラメーターの等価変換、つまり、構造パラメーターを変換して構造を 1 つの構造から別の構造に変換することによって実現されます。
    • トレーニングと推論の分離
    • このテクノロジーは、tensorrt デプロイメント加速技術、Conv、BN、および Relu の 3 層融合 (ほとんどの場合、conv と bn fusion) で使用されます。
      ここに画像の説明を挿入します
  • Repvgg の構造的な実装
    • resnet ネットワークから取得し、アイデンティティと 1*1 ブランチを使用してトレーニング中に RepVGG を構築します
    • 構造を再パラメータ化することにより、2 つのバイパス ブランチがマージされ、最終的に直線構造が形成されます。
      ここに画像の説明を挿入します
  • パラメータ/構造等価変換の具体的な実装
    1. 恒等マッピング ブランチは、1*1 のコンボリューション カーネルを持つユニット 1 のコンボリューションとみなすことができます。
    • このステップの後、1 つの 3*3 畳み込みと 2 つの 1*1 畳み込みになります。
      ここに画像の説明を挿入します
    1. BN を統合し、1 * 1 コンボリューション カーネルのエッジを 0 でパディングして 3 * 3 コンボリューション カーネルにします。
    • conv+bn をバイアス付きの conv に変換します
    • 1 * 1 コンボリューション カーネルのエッジ パディングは 3 * 3 コンボリューション カーネルに変換されます
      ここに画像の説明を挿入します
    1. 中心点に基づいて 3 つの畳み込みを追加し、3 つの畳み込みを 1 つにマージします。
    • 2 つの 1x1 カーネル (エッジにゼロが埋め込まれている) と 1 つの 3x3 カーネルを追加して、最終的な 3x3 カーネルを取得します。
      ここに画像の説明を挿入します
    1. 完全なプロセスは次のとおりです
      ここに画像の説明を挿入します
  • ヨロの研究と応用
    • 著者は、勾配伝播パスを使用して、どのネットワークでさまざまな再パラメータ化モジュールを使用する必要があるかを分析します。
    • 著者らは、RepConv とさまざまなアーキテクチャの組み合わせとその結果として得られるパフォーマンスを分析することにより、RepConv の同一性が ResNet の残留構造と DenseNet の層間接続を破壊し、これによりさまざまな特徴マップに多様な勾配が提供されることを発見しました。
    • 上記の理由により、作成者は ID 接続なしで RepConv 構造 (つまり、下図の RepConvN) を使用します。
      ここに画像の説明を挿入します
    • 実は repconv は V7 ではあまり使われておらず、ネックの最後で一度だけ使われています。
      ここに画像の説明を挿入します
    • yolo シリーズのアルゴリズムでは、通常の conv を repconv に置き換えることを実際に検討できます。
      ここに画像の説明を挿入します

3.5. その他

  • ネットワーク構造を調整するための組み合わせたスケーリング
  • BN が Conv に統合されました
  • EMA

おすすめ

転載: blog.csdn.net/qq_44804542/article/details/130196132