YOLOv5 の概要

YOLOv5

1. 入力端子

1. モザイク データの強化:

画像の説明を追加してください

CutMix データ拡張: トリミング フレーム ボックスをランダムに生成し、A の対応する位置を切り出し、B の対応する位置の ROI を使用して A のトリミングされた領域に配置して新しいサンプルを形成します。加重和は損失の計算に使用され、A 領域のカットオフ位置はトレーニング セット内の他のデータの領域ピクセル値でランダムに埋められ、分類結果は特定の基準に従って分布されます。比。
モザイク データ拡張: 4 つの画像を結合します。各画像には対応するフレームがあります。4 つの画像を結合した後、新しい画像が取得され、この画像に対応するアンカー フレームも取得されます。この新しい画像は次のようになります。これは、学習のために一度に 4 枚の画像を渡すのと同じです。

論文によれば、これにより物体検出の背景が大幅に強化されるとのことです。そして、標準化されたBN計算では、一度に4枚の写真のデータが計算されます。主に小さなターゲットの検出に使用されます

2. 適応型アンカー ボックスの計算:

入力画像内の多数の領域をサンプリングし、これらの領域に対象のオブジェクトが含まれているかどうかを判断し、領域の境界を調整してオブジェクトグラウンドトゥルース境界ボックスをより正確に予測します。モデルが異なれば、エリア サンプリングに異なる方法が使用される場合があります。アンカー ボックス: 各ピクセルを中央に配置して、異なるズーム比とアスペクト比を持つ複数の境界ボックスを生成します。

3. 適応型画像スケーリング:

画像の説明を追加してください

1. 原理: 入力ネットワークのサイズが同じサイズに均一にスケーリングされると、検出効果が向上します (電車内に配置された画像はレターボックスを通過しませんが、検出時にレターボックスを使用します)。単純にリサイズすると画像情報の損失が生じる可能性があるため、レターボックス適応型画像スケーリング技術が提案されています。
レターボックスの主なアイデアは、ネットワーク受容野の情報特性を可能な限り利用することです。たとえば、YOLOV5 の最後のレイヤーの Stride=5、つまり、最後のレイヤーの特徴マップの各点は、元の画像 2 の 32X32 の領域情報に対応できます。 アイデア: 同じ画像変換率は、縮小率を指します
。長さと幅の比率 同じ比率を使用する必要があります。受容野情報を有効に活用するということは、収縮後に条件を満たさない側については、受容野で割り切れるまで灰色と白のバーで埋めることを意味します。

二、backbone

画像の説明を追加してください

1. フォーカス レイヤ (現在は非推奨):

入力を取得したら、まずフォーカスレイヤーを使用して画像の幅と高さの情報をチャネル情報に変換します。具体的な方法は、画像内で 1 ピクセルおきに 1 つのピクセルを取得し、次に 4 つの独立した特徴レイヤーを取得し、それらの特徴レイヤーをスタックすることです。目的は、パラメータの量を減らし、実行速度を上げることです。

最新バージョンの YOLOv5 では、フォーカス レイヤが通常の64 × 64 64 \times 64に変更されました。64×64 の畳み込み層。図に示すように:

画像の説明を追加してください

2. Conv2D_BN_SiLU 畳み込みブロック:

このうち、SiLU 活性化関数はシグモイドと ReLU の改良版であり、上限なし、下限なし、滑らかさ、単調性などの特徴があります。

f ( x ) = x × シグモイド ( X ) f(x)=x \times シグモイド(X)f ( x )=バツ×シグモイド( X ) _ _ _ _ _ _
画像の説明を追加してください

一部のバージョンでは LeakyReLU アクティベーション関数も使用されます。

3、ボトルネック

画像の説明を追加してください
ビルディング ブロック (写真の左) とボトルネック (写真の右) は両方とも Resnet で提案されました。このうち、ビルディング ブロックは Resnet34 によって提案され、ボトルネックは Resnet50 によって提案されました。ボトルネックにおいて、1×1 畳み込み層の役割はパラメータの量を減らすことです。実験により、ボトルネックによりパラメータの量が削減され、計算が最適化され、元の精度が維持されることが証明されました。ネットワーク層の数が少ない場合は、ビルディング ブロックを使用します。また、ネットワーク層の数が非常に深い場合は、計算量を減らすためにボトルネックを選択します。

近道は、concat の代わりに add を選択することです。この機能は、機能マップを追加し、チャネル数を変更しないようにすることです。

4、CSPレイヤー:

画像の説明を追加してください
YOLOv5 の CSPNet 構造は、元の入力を 2 つのブランチに分割し (図 b)、2 つのブランチは個別に畳み込み演算を実行してチャネル数を半分にします。次のブランチはボトルネック × N 操作を実行し、2 つのブランチを連結してチャネル数をスタックします。CSPlayer には大きな「残留エッジ」があることが抽象的に理解できます。このような操作により、入力 CSPLayer の特徴が出力チャネルの数と一致するようになり、その目的は、モデルにより多くの特徴を学習させることです。

バックボーンのCSPLayer構造は次のとおりです。

(CBL は Conv+BN+leakyReLU、CBS は Conv+BN+SiLU)
画像の説明を追加してください
図に示すように、入力を 2 つのブランチに分割し、1 つは最初に CBL ブロック (後に CBS に変更) を通過し、次に複数のブランチを通過します。チャネル数を調整するための畳み込み後の残余構造 (ボトルネック × N)。もう 1 つのブランチでは、畳み込みを直接実行してチャネル数を調整します。その後、2 つのブランチはチャネルに応じて積み重ねられ、最後に CBL (後に CBS に変更) を通過します。

Neckの CSPLayer 構造は次のとおりです。画像の説明を追加してください
Neck 層の CSPLayer は、中間の残留構造を 2 × X CBL (後段の CBS) に置き換えます。主な理由は、ネック層が比較的浅いことです。

5、SPPのボトルネック:

ピラミッド プーリングとも呼ばれる従来の SPP は、任意のサイズの特徴マップを固定サイズの特徴ベクトルに変換できます。しかし、YOLOv5 では、SPPBottleneck の主な機能は、さまざまなプーリング カーネル サイズの最大プーリングを通じて機能を抽出し、ネットワークの受容領域を向上させることです。このうち、ショットカットは concat であるため、プールするたびにマップのサイズが変わらないことを確認する必要があります。
画像の説明を追加してください
SPPFとは、YOLOv5の後期に提案された構造で、並列最大階層化から直列最大プーリング階層に変更されており、構造は変更されていますが、目的は全く同じです。
画像の説明を追加してください
このうち、シリアル 5×5 が 2 つと 9×9 が 1 つが等価であり、シリアル 5×5 が 3 つと 13×13 が 1 つが等価です。パラレルはシリアルと同じように機能しますが、シリアルの方が効率的です。

3.ネックレイヤー

画像の説明を追加してください
図に示すように、YOLOv5 はターゲット検出のために、中間層、中層および下層、最下層の 3 つの特徴層を抽出します。3 つのフィーチャーの寸法は( 80 , 80 , 256 ) (80, 80, 256)です。( 80 80 256 )( 40 、 40 、 512 ) (40、40、512)( 40 40 512 )および(20, 20, 1024) (20, 20, 1024)( 20 20 1024

特徴ピラミッドは、異なる形状の特徴レイヤーの特徴融合を実行することができ、より良い特徴を抽出するのに役立ちます。具体的な融合方法は図に示されています。このうち、アップサンプリングには補間が使用され、ダウンサンプリングには畳み込みが使用されます。

FPN(意味情報)+PAN(測位情報)

一般に、深いフィーチャ レイヤーには強い意味論的特徴情報と弱い位置情報が含まれ、浅いフィーチャ レイヤーには強い位置情報と弱い意味論情報が含まれると考えられています。FPN は、深い意味論的特徴を浅い層に転送し、それによって複数のスケールで意味論的表現を強化します。PANは浅層の測位情報を深層に伝送し、多層的な測位能力を高めます。

図に示すように、FPN はボトムアップであり、上位レベルの意味特徴がピラミッド全体を強化するために渡されますが、位置情報は強化されず、意味情報のみが強化されます。 FPN の後の位置 情報が補足され、最上位の位置情報が渡されます。

4.YOLOヘッド

特徴ピラミッドを通じて、( 20 , 20 , 1024 ) (20, 20, 1024)という 3 つの強化された特徴が取得されます。( 20 20 1024 )( 40 , 40 , 512 ) (40, 40, 512)( 40 40 512 )( 80 , 80 , 256 ) (80, 80 , 256)( 80 80 256 )を使用して、これら 3 つの拡張機能を YOLO Head に渡して、予測結果を取得します。

各フィーチャ レイヤーでは、最初に畳み込みを使用してチャネル数が調整され、最終的なチャネル数はデータセット内のカテゴリの数に関連します。その中には、各フィーチャ レイヤーの各フィーチャ ポイントに対して 3 つのアンカー ボックスがあります。

voc データセットを使用すると仮定すると、カテゴリは 20 個あり、最終的な次元は 75=3×(4+1+20) となります。

このうち、3は3つのアンカーボックスを表し、4は各アンカーフレームの回帰パラメータを表し、1は特徴点に物体が含まれているかどうか(特徴点が背景であるかどうか)を表し、20は特徴点の種類を判断するために使用される。

ココ データ セット (カテゴリは 80) が使用されると仮定すると、最終的なチャネル数は 255=3×(4+1+80) となります。

5. 予報

1. デコード

データ セットが coco データ セットであると仮定すると、取得されるフィーチャ レイヤーの予測結果は次のようになります: ( N , 20 , 20 , 255 ) (N, 20, 20, 255)( N 20 20 255 )( N 、 40 、 40 、 255 ) (N、 40 、 40 、 255 )( N 40 40 255 )( N 、 80 、 80 、 255 ) (N、 80 、 80 、 255 )( N 80 80 255 )を作成し、255 を 3 つのアンカー ボックスの 85 パラメータに対応する 3 つの 85 に分割します。

意志( N , 20 , 20 , 255 ) (N, 20, 20, 255)( N 20 20 255 )フィーチャ レイヤーを( N , 20 , 20 , 3 , 85 ) (N, 20, 20, 3, 85)( N 20 20 3 85 ) を実行し、各特徴点に対応する 3 つのアンカー ボックスをデコードします。

ここで: pw p_wpp_hpアンカーボックスの長さと幅、cx c_xc×cy c_ycはいこれは、予測されたアンカー ボックスに対応するセルから画像の左上隅までの距離です。( tx 、 ty 、 tw 、 th ) (t_x、t_y、t_w、t_h)( t×tはいtt)は予測オフセットです。σ \シグマσはシグモイド活性化関数です。

画像の説明を追加してください
画像の説明を追加してください

YOLOv2/3/4のアンカーフレーム回帰計算式を図1に、YOLOv5のアンカーフレーム回帰計算式を図2に示します。

  1. 幅と高さの計算: 著者は、元の yolo/ダークネット ボックス方程式には重大な欠陥があると考えています。幅と高さは常に > 0 ですが、単に out = ein out=e^{in} であるため、制限されませんだめ_ _=eでは、この種の指数演算は非常に危険であり、勾配の不安定性を引き起こしやすく、学習の難易度が高くなります。( 2 σ ( tw ) ) 2 \left(2\sigma\left( t_w \right) \right を)^2( 2p _( t) )2 は幅と高さ > 0 を保証するだけでなく、幅と高さを制限することもでき、最大値はアンカー フレームの幅と高さの 4 倍です。
  2. オフセットの計算: YOLOv5 のポジティブ サンプルの定義は、これまでの YOLO シリーズの定義と異なるため、この式の計算も異なります。ポジティブサンプルとネガティブサンプルは「トレーニング」で紹介されます。

2. スコアのスクリーニングと非最大値の抑制:

スコア スクリーニングと非最大抑制のプロセスは次のように要約できます。

  1. しきい値関数より大きいスコアを持つ画像内のボックスを見つけます。同時ボックス スクリーニングの前にスコア スクリーニングを行うと、ボックスの数を大幅に減らすことができます。
  2. カテゴリを循環する非最大値抑制の機能は、特定の領域で最も高いスコアを持つ同じカテゴリに属する​​フレームをフィルタリングすることです。カテゴリを循環することは、クラスごとに非最大値抑制を個別に実行するのに役立ちます。
  3. スコアに従ってカテゴリを最大から最小の順に並べ替えます。
  4. 最高スコアのボックスが取り出されるたびに、他のすべての予測ボックスとの重なりの度合いが計算され、重なりが大きすぎて除去できません。

6. トレーニング

1. 損失の構成

ネットワークの損失はネットワークの予測構成と同じで、Reg 部(特徴点の回帰パラメータ)、Obj 部(特徴点に物体が含まれるかどうか)、Cls 部(特徴点オブジェクトの種類)に分けられます。 )。

2. ポジティブサンプルマッチング:

IOU マッチングから形状マッチングまで, まず gt と 9 つのアンカー ボックスの間のアスペクト比を計算します。アスペクト比が設定されたしきい値より小さい場合、gt が対応するアンカー ボックスに一致することを意味します。1 つの gt が複数のアンカー ボックスに一致する可能性があります。マッチングの条件については、以前の YOLO と同様に、YOLOv5 には 3 層のネットワーク、小さいものから大きいものまで 9 つのアンカー ボックスがあり、3 つのアンカー ボックスごとにネットワークの層に対応しているため、GT は異なるネットワーク層で予測トレーニングを行うことができます。これにより、陽性サンプルの数が大幅に増加します。もちろん、GT がすべてのアンカー ボックスに一致しない場合もあるため、GT はバックグラウンドとみなされ、トレーニングには参加しません。

3. フィルター ボックスを一致させます。

gt ボックスとアンカー ボックスを一致させた後、そのアンカー ボックスに対応するネットワーク層のグリッドを取得します。グリッド内のアンカーは肯定的なサンプルですが、隣接する 2 つのサンプルも取得されます。同時に、gt は 1 つのアンカー ボックスに一致するだけでなく、複数のアンカー ボックスに一致し、アンカー ボックスが同じネットワーク層上にない場合、3 ~ 9 個の陽性サンプルが存在する可能性があり、陽性サンプルの数が増加します。

4. 損失の計算:

1. DIOU 損失: 優れたターゲット フレーム関数では、重なり合う領域、中心点の距離、アスペクト比という 3 つの重要な幾何学的要素を考慮する必要があります。 予測フレームとターゲット フレーム間の正規化された距離を最小化する方法: DIOU_Loss DIOU_Loss は重なり合う領域を考慮します
画像の説明を追加してください
。中心点から、ターゲット フレームが予測フレームをラップするときに、2 つのフレーム間の距離が直接測定されるため、DIOU 損失はより速く収束します。
画像の説明を追加してください

問題: アスペクト比は考慮されません: 1、2、3 など、ターゲット フレームが予測フレームをラップします。本来は DIOU_Loss が機能しますが、予測フレームの中心点の位置は同じなので、計算によるとDIOU Lossの計算式では、3つの値は同じです。

2. CIOU 損失: CIOU 損失は、予測フレームとターゲット フレームのアスペクト比を考慮して、DIOU 損失に基づいてインパクト ファクターを追加します。
CIOU _ L oss = 1 − CIOU = 1 − ( IOU − 距離 _ 2 2 距離 _ C 2 − v 2 ( 1 − IOU ) + v ) CIOU\_Loss = 1-CIOU=1-(IOU -\frac {距離\_2^2}{距離\_C^2}- \frac{v^2}{(1-IOU)+v})CIOU_損失_ _ _ _ _=1CIOU _ _ _=1( I O U距離_C _ _ _ _ _ _2距離_2 _ _ _ _ _ _2( 1アイ・オー・ユー+vv2)
その中で、vvvはアスペクト比の一貫性を測定するパラメータであり、次のように定義することもできます:
v = 4 π 2 ( arctanwgthgt − arctanw P h P ) 2 v=\frac{4}{\pi^2}(arctan\frac {w^ {gt}}{h^{gt}}-arctan\frac{w^P}{h^P})^2v=円周率24( rcタン_ _hgt _wgt _ごめんなさい_ _ _hPwP2
このように、CIOU 損失では、ターゲット フレーム回帰関数の 3 つの重要な設定要素、つまりオーバーラップ領域、中心点距離、アスペクト比が考慮されます。

3. Obj 部分では、最初の正サンプル マッチング部分から各実フレームに対応するアプリオリ フレームを知ることができ、すべての実フレームに対応するアプリオリ フレームが正サンプル、残りのアプリオリ フレームが負サンプルとなります。ポジティブサンプルとネガティブサンプルに基づいて、特徴点にオブジェクトが含まれるかどうかの予測結果がクロスエントロピーロスとして計算され、Obj 部分の Loss コンポーネントとして使用されます。

4. Cls 部分では、3 番目の部分から各実フレームに対応する先行フレームを知ることができ、各フレームに対応する先行フレームを取得した後、先行フレームのタイプに応じた予測結果を取得します。実フレームと前のフレームの検査ボックスのタイプ予測結果を使用してクロスエントロピー損失が計算され、これが Cls 部分の損失成分として使用されます。

おすすめ

転載: blog.csdn.net/qq_44733706/article/details/129092559