ニューラル ネットワーク アルゴリズムは、ネットワーク構造の出力値 + 損失関数に焦点を当てます。
各バージョンの発行時期、著者および論文
YOLO(You Only Look Once)、2015.6.8、Joseph Redmon
YOLOv2(YOLO9000)、2016.12.25、Joseph Redmon
YOLOv3、2018.4.8、Joseph Redmon
YOLOv4、2020.4.23、Alexey Bochkovskiy
YOLOv5、2020.6.10、Ultralytics
YOLOX , 2021.7.20、旷世
YOLOv6、2022.6.23、美团
YOLOv7、2022.7.7、Alexey Bochkovskiy
YOLOv8、2023.1、Ultralytics
参考:https://blog.csdn.net/qq_34451909/article/details/128779602
YOLOv1:2015、論文:https://arxiv.org/pdf/1506.02640.pdf
YOLOv2:2017、論文:https://arxiv.org/pdf/1612.08242.pdf
YOLOv3:2018、論文:https://arxiv. org/pdf/1804.02767.pdf
YOLOv4:2020、論文:https://arxiv.org/pdf/2004.10934.pdf
YOLOv5:2020、論文:https://arxiv.org/pdf/2108.11539.pdf
YOLOv6:2022、論文:https://arxiv.org/pdf/2209.02976.pdf
YOLOv7:2022,論文:https://arxiv.org/pdf/2207.02696.pdf
yolo-v1 (2015年提案)
全体的な考え方
中心的な考え方は、オブジェクト検出を単一の回帰タスクとして扱うことです。まず画像を SxS グリッドに分割し、オブジェクトの実フレームの中心がどのグリッドに位置するかを、グリッドに対応するアンカー フレームがオブジェクトの検出を担当します。
古典的な 1 段階手法では、検出問題を回帰問題に変換し、CNN で処理して x、y、h、w を出力します。
入力データを S*S** の小さなグリッドに分割します (v1 の出力は 7×7)**。
オブジェクトがどのグリッドにあるかを判断し、その中心点を確認します。
まず経験に基づいて 2 つの候補フレームの H と W を与え、実際のフレームで IoU を計算し、どちらか高い方を予測フレームとして使用し、微調整 (回帰タスク) を実行して、グリッドごとに予測フレームを生成します。 、最後に x、y、h、w (バウンディング ボックス、バウンディング ボックス) と信頼度 (信頼度) を出力し、生成されたボックスの多くをフィルター処理して、より高い信頼性のボックスを取得し、次のコマンドを使用してボックスを微調整します。より高い自信。
ネットワークアーキテクチャの解釈
全結合層の場合、その重みとバイアスのサイズは各回帰で一定であるため、入力特徴のサイズを制限する必要があります。制限しないと制限する方法がないため、入力画像のサイズは YOLO-v1 で与えられます。 448×448×3として。
全結合層の前部は畳み込みプロセスとみなすことができます。GoogLeNet ネットワークは現在ではほとんど使用されていないため、詳細は説明しません。v3 で使用されるネットワーク モデルについては後で詳しく説明します。
主に 7×7×30 出力の意味を後で見てください。
7×7 は、画像を 7×7 のグリッドに分割することを意味します。
30=10+20: 2 つの候補ボックス (境界ボックス) と 20 のカテゴリの位置、サイズ、信頼度を示します。
最終的な予測結果の次元はS×S×(B*5+C) です。
損失関数
位置誤差
i は、さまざまなグリッドに合計 S 個の正方形があることを意味し、j はさまざまな候補ボックスに合計 B 個があることを意味し、最大の IoU を持つボックスを選択し、実際の値と予測値の差を計算します。
wとhにルート記号を付けるのは、被写体の大きさの違いに対応するためであり、小さな被写体の場合、フレームの大きさが1単位変わってしまい、フレームに収めることができない場合があります。
y=根号 x 関数は、値が小さい場合には感度が高くなりますが、値が大きい場合には感度が低くなります。小さなオブジェクトの場合、オフセットが比較的小さい場合、オフセットは敏感ではない可能性があります。今度はオフセットをより敏感にします。
前述の係数は重量項目に相当します。
信頼性エラー
前景 (つまり、ターゲットあり) と背景 (ターゲットなし) に分割されます。
特定のフレームと実際のフレームの間の IoU がしきい値 (0.5 など) より大きい場合、現在のフレームの信頼度が IoU に近いほど適切になりますが、フレームと実際のフレームの重複部分が多数ある可能性があります。実際のフレームを調べてから、より大きな IoU でフレームを計算します。
実際の画像では、前景と背景の割合が多少異なるため、背景の計算には重み項があり、損失に対する背景の影響が少なくなります。
分類エラー
クロスエントロピー損失を計算します。
NMS (非最大抑制)
予測するときは、IoU が比較的大きいフレーム (同じオブジェクトを予測する) について、信頼度を比較し、最大値を保持し、その他を削除します。
yolo-v1の特徴
長所
早くて簡単。
欠点がある
- 重なっているものは検出が困難です。
- 小さなオブジェクトの検出効果は平均的で、アスペクト比はオプションですが単一です。
- 同じオブジェクトに複数のラベルが付いている問題を解決するのは困難です (たとえば、オブジェクトのラベルが犬とハスキーであるなど)。
yolo-v2 (2017)
細部を改善する
v2 には完全に接続された層がありません。
現在ではBNがよく使われており、conv-bnが標準と言えます。
v1 では、コンピューターのパフォーマンスが比較的低く、448×448×3 の画像のトレーニングが比較的遅いため、トレーニングとテストに使用される画像のピクセル数が異なります。
v2 では時間は考慮されておらず、さらに 10 回の微調整が行われています。
ネットワークアーキテクチャの解釈
VGG (2014) と Resnet ネットワーク構造から借用しています。
-
特徴を抽出するためなので、完全に接続された層はありません。
全結合層は過剰適合しやすく、パラメーターの数が多いため、トレーニングは比較的遅くなります。
右側の出力は単なる例であり、実際の状況はそうではありません。 -
5 回のダウンサンプリング。各ダウンサンプリングは元の画像の半分に縮小され、出力特徴マップ上の点は元の画像の 1/32 に相当します。
実際の入力は 416×416、出力は 13×13 (v2 よりも洗練されています) これは実際のネットワーク構造Darknet 19であり、19 層があります。層の数は必要に応じて変更できます。レイヤーが多いほど、mAP が高くなり、FPS が高くなる可能性があります。ただ低いだけです。出力は奇数になるため、特徴マップには中心点があります。 -
ネットワークには 2 種類のコンボリューション カーネルがあります: 3×3 と 1×1. 前者は VGG ネットワーク論文のアイデアに基づいています. より小さいコンボリューション カーネルを選択すると、パラメータが比較的小さく、受容野が大きくなります比較的大きいです。1×1畳み込みは特徴マップの数(チャンネル数)を変えるだけで、特徴集中を図る処理であり、パラメータを3つ使用するよりも1つ使用する方が少なく、計算が高速になります。
クラスタリングに基づいて先験的なボックス サイズを選択する
- YOLOv1では2種類を使用します。
- FasterRCNNでは9種類を使用します。3 つのスケール、3 つの異なるサイズ、それぞれ 3 つの形状。Faster-rcnn シリーズによって選択される事前比率は従来のものですが、必ずしもデータ セットに完全に適しているわけではありません。
- YOLOv2: K-means クラスタリングに基づいて以前のボックス サイズを選択します。実例から5つのカテゴリ(k=5)をクラスタリングし、各カテゴリの中心を代表として前のボックスのhとwとして取り出し、特徴マップの各グリッドに5つの前のボックスを出します。ユークリッド距離を使用すると、大きいフレームの誤差は大きくなり、小さいフレームの誤差は小さくなる可能性があります。距離として 1-IoU を使用して、距離の定義が提案されています。
彼らは実験を行い、妥協値 k=5 を採用しました。このとき、平均 IoU は比較的大きく、k 値の増加は非常に緩やかになります (傾き)。前の 5 つのボックス (アンカー) を選択します。
- その結果、
mAPはわずかに減少し、再現率は大幅に増加しました。
候補ボックスはさらにありますが、すべての候補ボックスがうまく機能できるわけではないため、mAP 値はわずかに減少します (たとえば、よく学習され、良好なパフォーマンスを示したものが 2 つ見つかりましたが、5 つ見つかった場合はあまりうまく機能しません)。再現率は大幅に向上しました。再現率は、画像内にターゲットが存在し、より多くのターゲットを検出できることを意味します。
オフセットの計算方法、座標マッピングと復元
- オフセットはYOLOv1 で直接予測されます。
- v2 では、オフセットを追加した後に境界ボックスがグリッドから外れるのを防ぐために、相対位置が予測されます。
座標のマッピングと復元
- tx、ty は予測オフセット、シグモイド関数、値の範囲は 0 ~ 1、予測オフセットはシグモイド関数に入力されて 0 ~ 1 の数値が取得され、グリッドの左上隅の座標は次のとおりです。 bx,by を取得するために追加され、最終的な予測値 bx,by,bw,bh が特徴マップにマッピングされます。
- tw、th も予測値であり、対数変換されているため、bw、bh に戻ります。最終的な予測値 bx,by,bw,bh は、実際の特徴マップ上の位置です。
- pw、ph はクラスタリングによって取得された前のフレームであり、特徴マップ内のフレームのサイズであり、元の画像がマッピングされています (32 で除算)。
受容野の役割
受容野が大きいほど、元の画像に含まれる情報が多くなり、より大きなオブジェクトを認識するのに便利です。
受容野の計算式:
中空畳み込みがある場合:
畳み込み1層目の受容野は3、畳み込み2層目の受容野は5、3層目:5+(3-1) )×1=7
機能融合の改善
受容野が大きいほど大きな物体の捕捉に適しており、より小さな特徴が失われる可能性があります。
大きい受容野と小さい受容野の両方が必要であるため、2 つの層が重ねられます。
マルチスケール
v2 の画像のサイズは 32 で割り切れる必要があります。
数回の反復の後、ネットワークに適応性を持たせるために画像のサイズが変更され、小さな画像と大きな画像の両方を検出できるようになり、ネットワークがより包括的になります。
yolo-v3 (2018)
改善の概要
v3 は非常に実用的で、軍事およびプライバシーの分野で使用されています。2020年、YOLOの原作者はコンピュータービジョン分野の研究を辞めるとツイートした。
v3 以降のバージョンは、オリジナルの作成者によって開発されたものではありません。
特徴マップのグリッド サイズ:
v1: 7×7
v2: 13×13
v3: 13×13、26×26、52×52。
マルチスケールのメソッドの改善と機能の融合
- 3 つのスケール: 52×52は小さなターゲットの予測に適しており、26×26 は中規模のターゲットの予測に適しており、13×13は大きなターゲットの予測に適しています。得意なことをやらせる(自分のことはやらない)わけでも、裏表の特徴をそのまま統合するわけでもない。
- 各特徴マップ上に 3 つの候補ボックスが生成されます。
- 52×52 で小さなターゲットを予測し、26×26 で中規模のターゲットを予測し、13×13 で大きなターゲットを予測させる代わりに、特徴融合が行われます。13×13 はすでにグローバルな情報を知っているため、26×26 を使用します。 ×13 の経験は、中程度のサイズのオブジェクトを予測するときにも使用されます。ターゲットの予測には、大きなターゲットの予測の特徴マップからいくつかのアイデアが借用され、小さなターゲットの場合は、予測内のターゲットの特性が参考に使用されます。
スケール変換の古典的手法の比較分析
左の図: 画像ピラミッド、入力画像のサイズを変更し、それをネットワークに個別に入力し、3 つの特徴マップ サイズ: 52×52、26×26、13×13を生成しますが、この速度は遅すぎます。
右の図: 実際には、これは YOLOv1、単一の予測結果、および 1 つの画像に対する CNN です。
左の写真はそれぞれが独自のことを行っています。
v3 では、右の画像を使用し、アップサンプリングを使用し、線形補間を使用してこれを実行します。
13×13 特徴マップは 26×26 にアップサンプリングされ、中規模のターゲットを予測するために 26×26 と融合され、アップサンプリング後、小型のターゲットを予測するために 26×26 と 13×13 が融合されます。
残余接続方式の解釈
YOLOv3 には、resnet (2016) 論文のアイデアが組み込まれています。
2014 年、VGG は 19 レイヤーしか作成しませんでした。これは、レイヤーの数が増えると、予測効果が低下し、勾配が消える場合があるためです。
Resnet は、等価なマッピング x が存在するため、勾配消失の問題を解決します。そのため、ネットワーク パフォーマンスは、少なくとも元のものよりも悪くはありません。
左下隅には残留ブロックがあります。
全体的なネットワーク モデル アーキテクチャの分析
1x、2x、8x はスタック数を指します。
YOLO v3 はモデルをDarkNet 53と呼びますが、これは実際には resnet と見なすことができます。
プールすると機能が圧縮されるため、効果が得られない可能性があります。コンボリューションは時間と労力を節約し、高速かつ効果的です。
アプリオリなボックス設計の改善
出力値:13×13×3×85(13グリッド数×3種類の前フレーム比×4フレーム座標×1信頼度×80カテゴリー)
クラスタリングが完了すると、9 つの共通仕様が表示されますが、すべてのグリッドに 9 つのアプリオリ ボックスがあるわけではなく、カテゴリに分割され、異なる特徴マップに異なるアプリオリ ボックスが割り当てられます。
ソフトマックス層の改善
各ラベルはバイナリ分類を行います。
理解できないところが多い。