ターゲット検出学習--yolov3

用紙のアドレス:

《YOLOv3: 段階的な改善》

yolov3 論文の著者は非常にユーモアがあり、論文全体の内容におけるイノベーションのポイントや技術の分布は比較的分散しています。

yolov3 は v1 および v2 の改良版です。v2 と比較した主な改良点は次のとおりです: ネットワーク構造の調整、物体検出にマルチスケール機能の使用、物体分類のソフトマックスからロジスティックへの置き換え、速度の利点を維持しながら予測の向上 精度、特に認識の強化小さな物のこと。

 YOLO v3 の全体的な構造を次の図に示します。

主なハイライトは、物体検出に 3 つのスケールの特徴マップが使用され、小さな物体の検出効果が向上していることです。

1. yolo v3の詳細説明

yolov3 ターゲットの検出は 2 つのステップに分かれています。

  • 検出物体の位置を決定する
  • 検出ボックス内で検出されたオブジェクトを分類する

つまり、画像内のさまざまなオブジェクトを認識することに基づいて、認識されたオブジェクトの位置を特定し、それをフレームに収める必要もあります。

検出物体の位置を決定する

つまり、検出オブジェクトの位置を画像内に枠内に収める必要があり、画像上に四角形を枠内に収めるには、四角形の中心点の座標 (x_offset、y_offset)、四角形の幅、高さの 4 つのパラメータが必要です。 ;

検出ボックス内で検出されたオブジェクトを分類する

yolo v3 では、各グリッドには 3 つの境界ボックスがあり、どの境界ボックスを選択する必要があります。トレーニングの選択基準は、予測された bbox とグラウンド トゥルース ボックスのうち最大の IOU を持つ bbox を最適な bbox として選択することですが、予測にグラウンド トゥルース ボックスがありません。最適な bbox を選択するにはどうすればよいでしょうか? これには別のパラメータ、つまり信頼性が必要です

信頼性は各 bbox 出力の重要なパラメータであり、その機能は次のとおりです。

(1) 現在の bbox にオブジェクトが存在するかどうかの確率を表しますPr(オブジェクト)。つまり、現在の bbox に背景のみが存在するのか、それともオブジェクトが存在するのかを説明するために使用されます。

(2) bbox がオブジェクトを持つ場合、それ自身が予測した bboxIOU_{予測}^{真実}の取り得る値と、オブジェクトの実際の bbox . ここで言及されているオブジェクトの実際のボックスは実際には存在しないことに注意してください. これはモデルの信頼度にすぎませんオブジェクトの程度から自分自身を表現すること。
つまり、信頼レベルは、bbox 内にオブジェクトが存在するという信頼レベルと、フレーム化された bbox がオブジェクト全体のすべての特徴を含むという信頼レベルを示します。この bbox は、特定のオブジェクトと bbox および実際のオブジェクトをフレーム化し
ます . ターゲット検出フレームの一致度の総合的な尺度

C_{i}^{j}=Pr(オブジェクト)*IOU_{pred}^{真実}

C_{i}^{j}i 番目のグリッド セルの j 番目の境界ボックスの信頼度を示します。

2. Yolo v3 フレームワーク

インターネット上の写真を借りてみると、非常に鮮明です。 

ここに画像の説明を挿入

これは別のフローチャートです: 次の図は voc データ セットに基づいています。voc データ セットには 20 のカテゴリがあります。下の赤いボックス (13, 13, 75) は予測結果の形状を示しています。実際には 13, 13 、3×25は、13*13のグリッドがあることを意味します。各グリッドには3つのアプリオリボックス(アンカーボックス、アンカーとも呼ばれます)があり、各アプリオリボックスには25のパラメータ(20カテゴリ+5パラメータ)があります。この5つのパラメータは次のとおりです。 x_offset、y_offset、高さ、幅、信頼度。これら 3 つのボックスを使用して、ボックス内にオブジェクトがあるかどうかをテストします。オブジェクトがある場合、オブジェクトはフレームで囲まれます。coco ベースのデータセットの場合、カテゴリは 80 個あり、最終的な次元は 3x(80+5)=255 になるはずで、上記 2 つの予測結果の形状は同じになります。

ここに画像の説明を挿入

全体のフレームワークは、Darknet-53 構造、特徴層融合構造 (上図の連結部分)、および分類検出構造の 3 つの部分に分けることができます。

Darknet-53 構造、機能レイヤー融合構造:

Darknet53 は、yolo v3 のバックボーン特徴抽出ネットワークです。入力画像は、まず Darknet-53 で特徴抽出されます。抽出された特徴は、入力画像の特徴セットである特徴レイヤーと呼ばれます。バックボーン部分では、 , ネットワークは 3 つを取得します。次のフィーチャ レイヤーは、次のステップでネットワークを構築するために使用されます。3 つのフィーチャ レイヤーの形状は、(52, 52, 256)、(26, 26, 512)、(13, 13, 1024) です。 )、これら 3 つのフィーチャ レイヤーは後でアップサンプリングに使用されます。他のフィーチャ レイヤーはスタックされてステッチされます (Concat)。

3番目の特徴層(13,13,1024)は5回の畳み込み処理(特徴抽出)を行い、後半部分は畳み込み+アップサンプリングUpSamplingに使用され、残りの部分は対応する予測結果(13,13)の出力に使用されます。 、75)、Conv2D 3×3 および Conv2D1×1 の 2 つの畳み込みは、出力に必要なサイズに調整されるチャネル調整の役割を果たします。

コンボリューション + アップサンプリングの後、(26, 26, 256) の特徴層が取得され、Darknet53 ネットワークの特徴層 (26, 26, 512) と結合され、得られた形状は (26, 26, 768)、5 つの畳み込みが実行され、処理の後半部分は畳み込みアップサンプリングに使用され、他の部分は対応する予測結果 (26、26、75) を出力するために使用されます。上記のようなチャネル調整です。

次に、コンボリューション + アップサンプリング 3 のフィーチャ レイヤーと形状 (52,52,256) のフィーチャ レイヤーを連結 (Concat) し、コンボリューションを実行して形状 (52,52,128) のフィーチャ レイヤーを取得し、最後に Conv2D 3× 3 Conv2D1×1 の 2 つの畳み込み、(52,52,75) 特徴層を取得します。

したがって、最終的な画像に赤いボックスが 3 つある理由は、一部のオブジェクトが画像内で比較的大きいため、13×13 で検出され、オブジェクトは画像内で比較的小さいため、52 として分類されるためです。 ×52 検出用。

分類検出構造:

Darknet53 とフィーチャ レイヤーの融合により、すでに 3 つの強化された有効なフィーチャ レイヤーを取得できており、その形状は (52,52,128)、(26,26,256)、(13,13,512) です。各フィーチャ レイヤーには幅、高さ、チャネル数があり、このときフィーチャ マップは一連の特徴点の集合とみなすことができ、各特徴点にはいくつかのチャネルがあります。Yolo Head が実際に行うことは、特徴点を判定し、特徴点に対応するオブジェクトが存在するかどうかを判定することです。

3. yolo v3 検出プロセス

ステップ1: データセットのインポート

画像と実際のラベルをインポートします。ラベルには、画像内の実際のフレーム情報 (幅、高さ、カテゴリの座標) が含まれています。

step2: 画像タイプ変換

Yolo はそれを 416×416 サイズの入力に変換し、歪みを防ぐためにグレースケール バーを増やします。画像は Daxie のブログから引用したものです。https://blog.csdn.net/weixin_39615182/article/details/109752498 

ここに画像の説明を挿入

step3: アンカーの生成

アンカー生成アルゴリズム: 主なアイデアは、K 平均法クラスタリングに iou を使用することです。

YOLOv3 アルゴリズムでは、3 つの異なるスケール予測があり、異なるスケールの各グリッドには 3 つの bbox があるため、最終的には 9 つの前のボックスが存在します。

step4: 特徴抽出

つまり、バックボーン ネットワークによって処理されたフィーチャ レイヤーはフィーチャ ピラミッドによって処理され、3 つの強化された有効なフィーチャ レイヤーが取得されます。

step5: 予測結果のデコード

予測結果は、画像上の最終予測フレームの位置に対応しません。yolov3 の予測原理は、画像全体を 13x13、26x26、および 52x52 のグリッドに分割することであり、各ネットワーク ポイントが領域の検出を担当します。デコードプロセスは、最後に表示された境界ボックスの座標 bx,by と幅と高さ bw,bh を計算し、境界ボックスの位置を取得します。

ここに画像の説明を挿入

(cx, cy): 点が位置するグリッドの左上隅から左上隅まで異なるグリッドの数。
(pw,ph): 前のフレームの辺の長さ
(tx,ty): 点が配置されているグリッドの左上隅に対するターゲットの中心点のオフセット
(tw,th): 幅と高さ予測フレームの
σ: 活性化関数、論文の著者は [0,1] の間の確率であるシグモイド関数を使用しています。以前のバージョンのソフトマックスがシグモイドに置き換えられた理由は、ソフトマックスがカテゴリ確率の最大値を拡張するためです。他のカテゴリの確率値を抑制します

step6: 非最大抑制(NMS) 

最も高い確率でボックスを選別します: カテゴリごとに特定のしきい値を超えるスコアを持つボックスを取り出し、スコアを並べ替えます。ボックスの位置とスコアを使用して非最大抑制を実行します。最後に、境界ボックスを次のようにします。最も高い確率、つまり最終表示フレームが得られます。 

非最大抑制についての理解

ステップ 7: 予測された特徴点のアプリオリ ボックスを選択して、
トレーニング中に特定のグラウンド トゥルースを担当する境界ボックスを決定します。方法は、各グリッド セル内の各アンカー ボックスの IOU (交差および和集合比) を見つけることです。グラウンド トゥルース ボックス、および IOU が最大です。アンカー ボックスに対応するバウンディング ボックスは、対応するオブジェクトであるグラウンド トゥルースを予測する役割を果たします。実際のフレームの中心がどのセルに位置するか、セル内で最大の iou を持つアンカー ボックスが回帰予測に使用されます。
 

参考文献:

yolo3 ターゲット検出 + 学習体験の全体的なアイデア

【yolov3の詳細説明】この記事でyolov3のターゲット検出の原理が理解できます 

スマート ターゲット検出 11 - Keras が yolo3 ターゲット検出プラットフォームを構築 

YOLOv3の詳しい説明 

<機械は学習が大好き> YOLO v3 の深い理解 

YOLOv3の原理を詳しく解説(絶対わかりやすい)2021-07-01 

【論文理解】yolov3のアンカー、信頼度、カテゴリ確率を理解する 

 

おすすめ

転載: blog.csdn.net/panghuzhenbang/article/details/126400722
おすすめ