YOlov5 ネットワーク アーキテクチャ

    YOLOV4 の登場から間もなく、YOLOv5 が誕生しました。YOLOv5 では、YOLOv4 のアルゴリズムをベースにさらに改良が加えられ、検出性能がさらに向上しました。YOLOv5 アルゴリズムは YOLOv4 アルゴリズムと比較および分析されていませんが、COCO データ セットに対する YOLOv5 のテスト効果は非常に良好です。YOLOv5 アルゴリズムの革新性については誰もが懐疑的であり、これに対して肯定的な態度をとる人もいれば、否定的な態度を持つ人もいます。私の意見では、YOLOv5 検出アルゴリズムには学ぶべき点がまだたくさんあります。これらの改善アイデアは比較的単純であるか、革新性に欠けているように見えますが、間違いなく検出アルゴリズムのパフォーマンスを向上させることができます。実際、業界では、高い検出精度を得るために、超複雑なアルゴリズムを利用する代わりに、これらの方法を使用することを好むことがよくあります。この記事では、YOLOv5 検出アルゴリズムで提案された改善アイデアを詳しく説明します。これらの改善アイデアを他のターゲット検出アルゴリズムに適用してみてください。

YOLOv5 アルゴリズムの概要
  YOLOv5 は、YOLOv4 をベースにいくつかの新しい改良アイデアを追加し、速度と精度を大幅に向上させた、一段階のターゲット検出アルゴリズムです。主な改善案は以下の通りです。

入力側: モデルのトレーニング段階で、主にモザイク データ強化、適応アンカー ボックス計算、適応画像スケーリングなどのいくつかの改善アイデアが提案されます; ベンチマーク ネットワーク: 主に以下を含むいくつかの新しいアイデアを他の検出アルゴリズムに統合します: フォーカス構造と
CSP構造;
ネックネットワーク: ターゲット検出ネットワークは BackBone と最終ヘッド出力層の間にいくつかの層を挿入することが多く、Yolov5 では FPN+PAN 構造が追加されます; ヘッド出力層: 出力層のアンカーボックスメカニズムは YOLOv4 と同じです
、主な改善点 トレーニング中の損失関数 GIOU_Loss と、予測ボックス スクリーニング用の DIOU_nms とは何ですか。
3. YOLOv5アルゴリズムの詳細説明
3.1 YOLOv5ネットワークアーキテクチャ


  上の図は、YOLOv5 ターゲット検出アルゴリズムの全体的なブロック図を示しています。ターゲット検出アルゴリズムの場合、通常、入力端子、リファレンス ネットワーク、ネック ネットワーク、ヘッド出力端子を含む 4 つの一般的なモジュールに分割できます。これらは、上図の 4 つの赤いモジュールに対応します。YOLOv5 アルゴリズムには、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x の 4 つのバージョンがあります。この記事では YOLOv5s に焦点を当て、他のバージョンはこのバージョンに基づいてネットワークを深化および拡張します。

入力 - 入力は入力イメージを表します。ネットワークの入力画像サイズは 608*608 で、この段階には通常、入力画像をネットワークの入力サイズに合わせて拡大縮小し、正規化などの操作を実行する画像前処理段階が含まれます。ネットワーク トレーニング フェーズでは、YOLOv5 はモザイク データ拡張操作を使用してモデルのトレーニング速度とネットワークの精度を向上させ、適応型アンカー フレーム計算と適応型画像スケーリング方法を提案します。
ベンチマーク ネットワーク - ベンチマーク ネットワークは通常、優れたパフォーマンスを持つ分類器のネットワークであり、このモジュールはいくつかの一般的な特徴表現を抽出するために使用されます。YOLOv5 では CSPDarknet53 構造が使用されるだけでなく、Focus 構造もベンチマーク ネットワークとして使用されます。
ネック ネットワーク - ネック ネットワークは通常、ベンチマーク ネットワークとヘッド ネットワークの中間に位置し、機能の多様性と堅牢性をさらに向上させることができます。YOLOv5 も SPP モジュールと FPN+PAN モジュールを使用しますが、実装の詳細は多少異なります。
ヘッド出力端子 - ヘッドはターゲット検出結果の出力を完了するために使用されます。検出アルゴリズムが異なると、出力端の分岐の数も異なり、通常は分類分岐と回帰分岐が含まれます。YOLOv4 は、GIOU_Loss を使用して Smooth L1 Loss 関数を置き換えることにより、アルゴリズムの検出精度をさらに向上させます。
3.2 YOLOv5 実装詳細の詳細説明
3.2.1 YOLOv5 基本コンポーネント
CBL-CBL モジュールは、上図のモジュール 1 に示すように、Conv+BN+Leaky_relu 活性化関数で構成されます。
Res ユニット - ResNet ネットワークの残差構造を利用して深いネットワークを構築します。上図のモジュール 2 に示すように、CBM は残差モジュールのサブモジュールです。
CSP1_X - CSPNet ネットワーク構造を参照すると、このモジュールは、上図のモジュール 3 に示すように、CBL モジュール、Res unint モジュール、畳み込み層、および Concate で構成されます。
CSP2_X - CSPNet ネットワーク構造を参照すると、このモジュールは、上図のモジュール 4 に示すように、畳み込み層と X Res unint モジュール Concate で構成されます。
フォーカス - 上の図のモジュール 5 に示すように、フォーカス構造はまず複数のスライスの結果を連結し、次にそれらを CBL モジュールに送信します。
SPP は、上の図のモジュール 6 に示すように、マルチスケール特徴融合に 1×1、5×5、9×9、および 13×13 の最大プーリング方法を使用します。
3.2.2 入力端子の詳細

 


モザイク データの強化 - YOLOv5 では、トレーニング モデルの段階でモザイク データの強化方法が引き続き使用されており、CutMix データの強化方法に基づいて改良されています。CutMix はスプライシングに 2 つの画像のみを使用しますが、モザイク データ拡張方法は 4 つの画像を使用し、ランダム スケーリング、ランダム クロッピング、およびランダムな配置に従ってスプライスされます。具体的な効果は下図に示されています。この拡張方法では、複数の画像を 1 つに結合できるため、データセットが強化されるだけでなく、ネットワークのトレーニング速度が大幅に向上し、モデルのメモリ要件が軽減されます。

 

適応型アンカー ボックス計算 - YOLO シリーズのアルゴリズムでは、さまざまなデータ セットに対して特定の長さと幅のアンカー ボックスを設定する必要があります。ネットワーク トレーニング フェーズでは、モデルは初期アンカー フレームに基づいて対応する予測フレームを出力し、GT フレームとのギャップを計算し、逆更新操作を実行してネットワーク全体のパラメーターを更新します。がセットされています フレームも重要なパーツです。YOLOv3 および YOLOv4 検出アルゴリズムでは、異なるデータセットをトレーニングするときに、別のプログラムを実行することによって初期アンカー ボックスが取得されます。YOLOv5 はこの関数をコードに埋め込み、各トレーニング中にデータ セットの名前に従って最適なアンカー ボックスを適応的に計算します。ユーザーは自分のニーズに応じて関数をオフまたはオンにできます。特定のコマンドは parser です。add_argument( '–noautoanchor'、action='store_ true'、help='disable autoanchor check')、これを開く必要がある場合は、コードのトレーニング時に –noautoanch またはオプションを追加するだけで済みます。
適応型画像スケーリング - さまざまなターゲット検出アルゴリズムでは、通常、画像スケーリング操作を実行する必要があります。つまり、元の入力画像を固定サイズにスケーリングしてから、それを検出ネットワークに送信します。YOLO シリーズのアルゴリズムで一般的に使用されるサイズには、416*416、608*608 およびその他のサイズが含まれます。本来の拡大縮小方法に問題があり、実際に使用する画像はアスペクト比が異なる場合が多いため、拡大縮小して塗りつぶした場合、両端の黒枠の大きさが異なりますが、塗りすぎると黒枠が発生します。情報の冗長性が非常に高く、アルゴリズム全体の推論速度に影響します。YOLOv5 アルゴリズムの推論速度をさらに向上させるために、アルゴリズムは、ズームされた画像に最小の黒い境界線を適応的に追加できる方法を提案します。具体的な実装手順は以下の通りです。
ステップ 1 - 元の画像サイズとネットワークに入力された画像に基づいてスケーリング率を計算します。

 

ステップ 2 - 元の画像サイズとスケーリング率に基づいて、スケーリングされた画像サイズを計算します。

 

 

ステップ 3 - 黒枠のパディング値を計算します。

 

 

  上の図に示すように、416 は YOLOv5 ネットワークで必要な画像の幅を示し、312 はズーム後の画像の幅を示します。まず減算演算を実行して、埋める必要がある黒エッジの長さ 104 を取得します。次に、この値に対して剰余演算を実行します (つまり 104%32=8)。YOLOv5 ネットワーク全体が 5 回のダウンサンプリング演算を実行しているため、32 を使用します。つまり、 2 5 = 32 2^{5} =322 
5
 =32; 最後に、値を 2 で割ります、つまり、塗りつぶされた領域を両側に広げます。このようにして、416*416 サイズの画像が 416*320 サイズに縮小され、アルゴリズムの推論速度が大幅に向上します。
  (1) この操作はモデル推論段階でのみ実行され、モデルのトレーニング段階は従来の方法と同じで、元の画像を 416*416 のサイズに切り取ります。 YOLOv3 と YOLOv4 に設定されるデフォルト値は ( 0,0,0) ですが、YOLOv5 のデフォルトの設定値は (114,114,114) です; (3) この操作は元の画像の短辺のみに対して行われ、長辺はそのままです。 416にトリミングされました。
3.2.3 ベンチマーク ネットワークの詳細の詳細説明
フォーカス構造 - この構造の主なアイデアは、スライス操作を通じて入力画像をクロップすることです。以下の図に示すように、元の入力画像サイズは 608*608*3 で、スライスと連結操作の後、304*304*12 の特徴マップが出力され、その後 32 チャネルの Conv 層が出力されます (チャネル数は 608*608*3 です)。 YOLOv5s 構造の場合、他の構造もそれに応じて変更されます)、サイズ 304*304*32 の特徴マップを出力します。

 

CSP構造-YOLOv4ネットワーク構造では、CSPNetの設計思想を借用し、バックボーンネットワークではCSP構造のみを設計しています。YOLOv5 では 2 つの CSP 構造が設計されており、YOLOv5s ネットワークを例にとると、CSP1_X 構造は Backbone バックボーン ネットワークに適用され、もう 1 つの CSP2_X 構造は Neck ネットワークに適用されます。CSP1_X および CSP2_X モジュールの実装の詳細は 3.1 に示されています。
3.2.4 Neck ネットワークの詳細説明
FPN+PAN-YOLOv5 の Neck ネットワークは、FPN+PAN 構造を引き続き使用していますが、これをベースにいくつかの改良が加えられており、YOLOv4 の Neck 構造では通常の畳み込み演算が使用されます。YOLOv5 の Neck ネットワークでは、ネットワーク機能の融合能力を強化するために、CSPnet を参考にして設計された CSP2 構造が採用されています。以下の図は、YOLOv4 と YOLOv5 の Neck ネットワークの具体的な詳細を示しています。比較すると、次のことがわかります: (1) 灰色の部分は最初の違いを示しています。YOLOv5 は CSP2_\1 構造を使用して CBL モジュールの一部を置き換えるだけではありません、ただし、下位の CBL モジュールも削除されます。(2) 緑色の領域は 2 番目の違いを示します。YOLOv5 は、Concat 操作後の CBL モジュールを CSP2_1 モジュールに置き換えるだけでなく、別の CBL モジュールの位置も置き換えます。(3)青色の領域は 3 番目の違いを示し、元の CBL モジュールは YOLOv5 では CSP2_1 モジュールに置き換えられます。

 

おすすめ

転載: blog.csdn.net/qq_44988877/article/details/129790149