YOLOシリーズのアルゴリズム

YOLOシリーズのアルゴリズム

学習目標

  • yolo ネットワーク アーキテクチャを理解し、その入力と出力を理解する
  • yolo モデルのトレーニング サンプル構築の方法を知る
  • yolo モデルの損失関数を理解する
  • yoloV2 モデルを改善する方法を知っている
  • yoloV3のマルチスケール検出方法を知る
  • yoloV3 モデルのネットワーク構造とネットワーク出力を知る
  • yoloV3 モデル ア アプリオリ ボックス デザインの方法を理解する
  • yoloV3 モデルがマルチラベル ターゲット分類に適している理由を理解する
  • yoloV4 モデルを理解する

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-u1IVdIYj-1646276606890)(note picture/image-20200915142921616.png)]

YOLOシリーズのアルゴリズムは典型的な1段階ターゲット検出アルゴリズムで、アンカーボックスを使用して、分類とターゲットポジショニングの回帰問題を組み合わせ、高効率、柔軟性、優れた汎化性能を実現するため、世界でも非常に人気があります。業界. , そして、YOLOシリーズのアルゴリズムを紹介します.

ヨロアルゴリズム

Yolo アルゴリズムは別の CNN モデルを使用して、エンド ツー エンドのターゲット検出を実現します. 核となる考え方は、画像全体をネットワークの入力として使用し、バウンディング ボックス (バウンディング ボックス) の位置とそのカテゴリを直接返すことですシステム全体を下の図に示します。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-W7Rgq5YO-1646276606891)(note picture/image-20200915144129736.png)]

最初に入力画像のサイズを 448x448 に変更してから CNN ネットワークに送信し、最後にネットワーク予測結果を処理して検出されたターゲットを取得します。R-CNN アルゴリズムと比較して、それは統一されたフレームワークであり、その速度はより高速です。

Yolo アルゴリズムのアイデア

Yolo アルゴリズムを紹介する前に、RCNN モデルを思い出してみましょう. RCNN モデルは、領域提案の方法を提案しています. RCNN モデルは、最初に 2000 程度の画像からオブジェクトを含む可能性のあるいくつかの候補領域を検索 (選択的検索) し、オブジェクト認識を実行します.ただし、処理速度は遅くなります。

[外部リンクの画像の転送に失敗しました。ソース サイトにリーチング防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-uIVmkMmT-1646276606892)(note picture/image-20200915150333995.png)]

Yolo は You Only Look Once を意味し、実際に候補領域を削除するのではなく、候補領域とターゲット分類を 1 つに創造的に結合し、どのオブジェクトがどこにあるかを写真で一目で知ることができます。

Yolo モデルは、予測領域を事前に定義してターゲット検出を完了する方法を使用します. 具体的には、元の画像を 7x7=49 のグリッド (グリッド) に分割し、各グリッドで 2 つのバウンディング ボックス (バウンディング ボックスを含む) の予測を可能にします。 a 特定のオブジェクトの長方形のボックス)、合計 49x2=98 のバウンディング ボックス。画像のほぼ全領域をカバーする98個の予測領域として理解しており、この98個の予測領域でターゲット検出が実行されます。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-pKAVNy6q-1646276606892)(note picture/image-20200915150718666.png)]

この 98 領域のターゲット分類と回帰結果が得られれば、NMS を実行して最終的なターゲット検出結果を得ることができます。それを達成する方法は?

Yolo のネットワーク構造

YOLOの構造は非常にシンプルで、単純な畳み込みとプーリング、そして最後に2層の完全な接続が追加されています.ネットワーク構造の観点からは、以前に紹介したCNN分類ネットワークと本質的な違いはありません.最大の違い.出力層が線形関数で構成されていること. オブジェクトの確率だけでなく、バ​​ウンディング ボックス (数値型) の位置を予測する必要があるため、活性化関数. 大まかに言えば、YOLO の全体的な構造は、次の図に示すように、入力画像がニューラル ネットワークによって変換され、出力テンソルが取得されるということです。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-5IrhY9yq-1646276606893)(note picture/image-20200915151948836.png)]

ネットワーク構造は比較的単純ですが、重要な点は、ネットワークの入力と出力の関係を理解する必要があるということです。

ネットワーク入力

ネットワークへの入力は元の画像です。唯一の要件は、448x448 のサイズにスケーリングすることです。主な理由は、Yolo のネットワークでは、畳み込み層が最後に 2 つの全結合層に接続されていることです. 全結合層は入力として固定サイズのベクトルを必要とするため、Yolo の入力画像のサイズは 448x448 に固定されています.

ネットワーク出力

ネットワークの出力は 7x7x30 テンソルです。では、この出力をどのように理解すればよいでしょうか。

7X7 グリッド

YOLO の設計によると、入力画像は 7x7 グリッドに分割され、出力テンソルの 7x7 は入力画像の 7x7 グリッドに対応します。または、7x7x30 テンソルを 7x7=49 の 30 次元ベクトルと見なします。つまり、入力画像の各グリッドは 30 次元ベクトル出力に対応します。たとえば、次の図に示すように、入力画像の左上隅のグリッドは、出力テンソルの左上隅のベクトルに対応します。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-Opjy0IEm-1646276606893)(note picture/image-20200915152825629.png)]

30次元ベクトル

30 次元のベクトルには、2 つの bbox の位置と信頼度、およびグリッドが 20 のカテゴリに属する​​確率が含まれます。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-dvHTUC0q-1646276606894)(note picture/image-20200915153123684.png)]

  • 2 つのバウンディング ボックスの位置各バウンディング ボックスには、その位置 (Center_x、Center_y、幅、高さ)、つまり (バウンディング ボックスの中心点の x 座標、y 座標) を表す 4 つの値が必要です。 、バウンディング ボックスの幅と高さ)、2 つのバウンディング ボックスには、それらの位置を表すために合計 8 つの値が必要です。
  • 2 つのバウンディング ボックスの信頼性バウンディング ボックスの信頼性 = バウンディング ボックス内のオブジェクトの確率 * バウンディング ボックスとオブジェクトの実際のバウンディング ボックスの間の IOU は、次の式で表されます。

[外部リンクの画像転送に失敗しました。ソース サイトにはアンチ リーチング メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-yCA8yb7G-1646276606894)(note picture/image-20200915153543735.png)]

Pr(Object) は、バウンディング ボックス内にオブジェクトが存在する確率です。

  • 20 個のオブジェクトを分類する確率

Yolo は 20 の異なるオブジェクト (人、鳥、猫、車、椅子など) の認識をサポートしているため、グリッド位置にあるオブジェクトの確率を表す 20 の値があります。

ヨロモデルトレーニング

モデルのトレーニングを実行する場合、勾配降下法を使用してネットワークをトレーニングするために、トレーニング サンプルを構築し、損失関数を設計する必要があります。

訓練サンプルの構築

画像を yolo モデルに入力すると、対応する出力は 7x7x30 テンソルになります. ラベル ラベルを作成するとき、元の画像のグリッド グリッドごとに 30 次元のベクトルを作成する必要があります. 次の図に対してターゲット ベクトルを作成しましょう。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-dRlyHzQJ-1646276606895) (注意画像/画像-20200915155204485.png)]

  • 20 個のオブジェクトを分類する確率

入力イメージ内の各オブジェクトについて、まずその中心点を見つけます。例えば、上の写真の自転車の中心点は黄色の点の位置にあり、その中心点は黄色のグリッド内にあるため、黄色のグリッドに対応する 30 次元ベクトルでは、自転車は 1、その他のオブジェクトの確率は 0 です。他の 48 グリッドのすべての 30 次元ベクトルでは、自転車の確率は 0 です。これは、「中心点があるグリッドがこのオブジェクトを予測する責任がある」と呼ばれるものです。犬と車の分類確率も同じように埋められます

  • 2 つのバウンディング ボックスの位置

トレーニング サンプルの bbox 位置は、オブジェクトの実際の位置 bbox を埋める必要がありますが、1 つのオブジェクトが 2 つの境界ボックスに対応しています。どちらを埋める必要がありますか? これは、ネットワークによって出力された bbox と、オブジェクトの実際の bbox の IOU に従って選択する必要があるため、トレーニング プロセス中にどの bbox を埋めるかを動的に決定する必要があります。

  • 2 つの境界ボックスの信頼度

予測信頼度の式は次のとおりです。

[外部リンクの画像の転送に失敗しました。ソース サイトにリーチング防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-2TgxHUzV-1646276606896)(note picture/image-20200915155812745.png)]

IOUredtruth は、ネットワークによって出力された 2 つのバウンディング ボックスと、オブジェクトの実際のバウンディング ボックスを使用して計算されます。次に、2 つのバウンディング ボックスの IOU のいずれか大きい方、オブジェクトが存在するかどうかの予測を担当するバウンディング ボックス、つまり、バウンディング ボックスの信頼目標値が 1 であること、および実際のバウンディング ボックスの位置を確認します。オブジェクトはバウンディング ボックスにも入力されます。予測を担当しない別の境界ボックスの信頼度目標値は 0 です。

上の図で自転車が配置されているグリッドに対応する結果を下の図に示します。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-t5Bd4u8i-1646276606897)(note picture/image-20200915160053996.png)]

損失関数

損失は​​、ネットワークの実際の出力値とサンプル ラベル値の偏差です。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-Ft5wrUDh-1646276606897)(note picture/image-20200915160218266.png)]

yolo によって与えられる損失関数:

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-1xT6CEhL-1646276606898)(note picture/image-20200915160632201.png)]

注: ここで、1iobj はターゲットがグリッド セル i に表示されるかどうかを示し、1ijobj はセル i の j 番目のバウンディング ボックス予測子が予測を担当することを示します。YOLO はλcoord=5を設定して位置誤差の重みを増やします。λnoobj =0.5はオブジェクトが存在しない境界ボックスの信頼誤差の重み。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-pKMlwwEX-1646276606899)(note picture/image-20200915160850102.png)]

モデルトレーニング

Yolo は、最初に ImageNet データセットを使用して最初の 20 層の畳み込みネットワークを事前トレーニングし、次に完全なネットワークを使用して、PASCAL VOC データセットでオブジェクト認識とローカリゼーション トレーニングを実行します。

Yolo の最後の層は線形活性化関数を使用し、他の層は Leaky ReLU です。オーバーフィッティングを防ぐために、トレーニングではドロップアウトとデータ拡張が使用されます。

モデル予測

画像のサイズを 448x448 に変更し、yolo ネットワークに送信し、7x7x30 テンソル (テンソル) を出力して、画像内のすべてのグリッドに含まれるオブジェクト (確率) と、オブジェクトの 2 つの可能な位置 (境界ボックス) を表します。信頼性(信頼度)。NMS (非最大抑制) アルゴリズムを使用して、ターゲットになる可能性が最も高い結果を選択します。

yolo概要

アドバンテージ

  • 速度は非常に速く、処理速度は 45 fps に達し、その高速バージョン (ネットワークが小さい場合) は 155 fps に達することさえあります。
  • トレーニングと予測はエンドツーエンドで実行できるため、非常に簡単です。

欠点

  • 精度は割引されます
  • 小さい物標や近い物標は探知効果が弱い

ヨロV2

v1版と比較して、YOLOv2は処理速度を維持し続けることを基本に、より正確な予測(Better)、より速い速度(Faster)、より多くの認識オブジェクト(Stronger)の3つの側面で改善されました。その中でより多くの物体を認識することは、YOLO9000と呼ばれる9000の異なる物体を検出できるように拡張することです。yoloV2 に加えられた改善点を見てみましょう。

予測がより正確 (より良い)

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-YxQQFlBl-1646276606899)(メモ画像/画像-20200915164503590.png)]

バッチ正規化

バッチ正規化は、バックプロパゲーション プロセスにおける勾配消失と勾配爆発の問題を解決するのに役立ち、一部のハイパーパラメータに対する感度を低下させます。各バッチを個別に正規化すると、一定の正規化効果が得られるため、収束速度と収束が向上します。効果。yoloV2 での畳み込みの後、すべてのバッチ正規化が追加され、ネットワークは mAP を 2% 増加させます。

高解像度画像を使用して分類モデルを微調整する

YOLO v1 は、224x224 の ImageNet の画像分類サンプルを入力として使用して、CNN 畳み込み層をトレーニングします。次に、オブジェクト検出をトレーニングするときに、検出用の画像サンプルは、より高解像度の 448x448 画像を入力として使用します。ただし、この切り替えはモデルのパフォーマンスに一定の影響を与えます。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-fW6qh1ic-1646276606900)(note picture/image-20200915165005595.png)]

YOLOV2 は分類モデルの事前トレーニングに 224x224 画像を使用した後、448x448 の高解像度サンプルを使用して分類モデル (10 エポック) を微調整し、ネットワーク機能が 448x448 の解像度に徐々に適応するようにします。次に、トレーニングに 448x448 検出サンプルを使用します。これにより、突然の解像度切り替えの影響が緩和されます。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-UWAHMKNX-1646276606901)(note picture/image-20200915165015860.png)]

この手法を使用した後、ネットワークの mAP は約 4% 増加しました。

アンカー ボックスの使用

YOLO1 はアプリオリ ボックスを使用せず、各グリッドは 2 つの境界ボックスのみを予測し、画像全体には 98 があります。YOLO2 が各グリッドに 5 つの前のフレームを使用する場合、合計 13x13x5=845 の前のフレームがあります。アンカー ボックスを導入することで、予測されるボックスの数が増加します (13x13xn)。

クラスター抽出アンカー スケール

Faster-rcnn によって選択されたアンカー比率は手動で指定されますが、データ セットに完全に適しているとは限りません。YOLO2 は、サンプル内のオブジェクトのサイズにより一致するアプリオリ フレームをカウントしようとするため、アプリオリ フレームをネットワークの実際の位置に微調整する難しさを軽減できます。YOLO2 のアプローチは、トレーニング セット内のマークされた境界線に対してクラスター分析を実行して、サンプルにできるだけ一致する境界線サイズを見つけることです。

[外部リンクの画像の転送に失敗しました。ソース サイトにリーチング防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-D6pwflqE-1646276606901)(note picture/image-20200915165616802.png)]

YoloV2 は、クラスターの 5 つのサイズをアンカー ボックスとして選択しました。

バウンディングボックス位置の予測

Yolov2 では、バウンディング ボックスの結果は特定のグリッドに制限されます。

[外部リンクの画像の転送に失敗しました。ソース サイトにはリーチング防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-GNolV45x-1646276606902)(note picture/image-20200915171150105.png)]

の、

bx,by,bw,bh は、予測されたバウンディング ボックスの中心、幅、および高さです。Pr(object)*IOU(b,object)は予測フレームの信頼度,YOLO1 は直接予測信頼度の値である. ここで,予測パラメータ to* の σ 変換を信頼度。cx、cy は、現在のグリッドの左上隅から画像の左上隅までの距離です。最初にグリッド サイズを正規化する必要があります。つまり、グリッドの幅 = 1、高さ = 1 です。pw、phは、前のボックスの幅と高さです。σ はシグモイド関数です。tx、ty、tw、th、および to は、境界の中心、幅と高さ、および信頼度を予測するために使用される、学習されるパラメーターです。

以下に示すように:

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-YZ1n8CQA-1646276606903)(note picture/image-20200915171632888.png)]

σ 関数はtx,ty を範囲 (0,1) に制限するため、予測された境界ボックスの青い中心点は、青い背景のグリッド内に制限されます。境界ボックスの位置を制限すると、モデルの学習が容易になり、予測がより安定します。

ネットワーク予測値を次のように仮定します。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-0U86C3iJ-1646276606903)(note picture/image-20200915171823875.png)]

アンカーボックスは次のとおりです。

[外部リンクの画像転送に失敗しました。ソース サイトにはアンチ リーチング メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-4lPDA1iV-1646276606904)(note picture/image-20200915171844683.png)]

次に、機能マップ内のターゲットの位置:

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-zwPv90Az-1646276606904)(note picture/image-20200915171906489.png)]

元の画像の位置:

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-EhnvQ4HH-1646276606905)(note picture/image-20200915171925122.png)]

きめの細かい機能の融合

画像内のオブジェクトは大きくても小さくてもかまいません. 入力画像は多層ネットワークを介して抽出されます. 最終的な出力特徴マップでは, 小さなオブジェクトの特徴は明らかではないか, 無視されることさえあります. 比較的小さなオブジェクトをより適切に検出するには、最終的な出力フィーチャ マップにさらに詳細な情報を保持する必要があります。

YOLO2 では、パススルー レイヤーと呼ばれる方法を導入して、特徴マップに詳細な情報を保持します。具体的には、最後のプーリングの前に、feature map のサイズは 26x26x512 で、これを 4 で 1 に分割し、プーリング後 (および一連の畳み込みの後) の feature map に直接渡し (パススルー)、2 つを重ね合わせます。出力としての機能マップ。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-KZRm3jxs-1646276606906)(note picture/image-20200915172541517.png)]

具体的な分割方法は次のとおりです。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-fkXadG47-1646276606906)(note picture/image-20200915172504922.png)]

マルチスケールトレーニング

YOLO2 には全結合層がなく、任意のサイズの画像を入力できます。ネットワーク全体のダウンサンプリング倍数は 32 であるため、{320, 352,...,608} などの 10 個の入力画像サイズが使用され、これらのサイズの入力画像は出力特徴マップの幅と高さ {10, 11,...19}. ネットワークがさまざまなサイズのオブジェクト検出に適応できるように、トレーニング中に 10 バッチごとにサイズがランダムに変更されます。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-JQrIsMnB-1646276606907)(note picture/image-20200915172724192.png)]

もっと早く

yoloV2 は、特徴抽出ネットワークとして、Darknet-19 (19 の畳み込み層と 5 つの MaxPooling 層を含む) ネットワーク構造を提案しました。DarkNet-19 は VGG-16 よりもサイズが小さく、精度は VGG-16 に劣りませんが、浮動小数点演算の量を約 1/5 に減らして高速な演算速度を確保しています。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-ZYc3R4N9-1646276606908)(note picture/image-20200915173047956.png)]

416x416x3 から 13x13x5x25 に変換される yoloV2 のネットワークには畳み込み + プーリングのみがあります。バッチ正規化を追加し、パススルー レイヤーを追加し、完全に接続されたレイヤーを削除し、5 つの前のフレームを採用しました. ネットワークの出力を下の図に示します:

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-CPmETzdf-1646276606909)(note picture/image-20200915173440874.png)]

オブジェクトをさらに識別

VOC データセットは 20 種類のオブジェクトを検出できますが、実際には多くの種類のオブジェクトが存在しますが、オブジェクト検出に対応するトレーニング サンプルが不足しています。YOLO2 は、ImageNet の非常に多数の分類サンプルを使用して、COCO のオブジェクト検出データ セットと一緒にトレーニングしようとします。そのため、YOLO2 は、多くのオブジェクト検出サンプルを学習していなくても、これらのオブジェクトを検出できます。

yoloV3

V1 と V2 に基づく yoloV3 の改善には、主に、ターゲット検出のためのマルチスケール機能の使用、より豊富な事前フレーム、調整されたネットワーク構造、マルチラベル分類タスクにより適したソフトマックスの代わりにロジスティックを使用するオブジェクト分類が含まれます。

アルゴリズムの紹介

YOLOv3 は、YOLO (You Only Look Once) シリーズのターゲット検出アルゴリズムの 3 番目のバージョンで、以前のアルゴリズムと比較して、特に小さなターゲットの場合、精度が大幅に向上しています。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-8tpBI0LU-1646276606909)(note picture/image-20200502103836394.png)]

yoloV3 のプロセスは下の図に示されています.各入力画像に対して、YOLOv3 は異なるサイズのターゲットを検出するために 3 つの異なるスケール出力を予測します。

[外部リンクの画像転送に失敗しました。ソース サイトにはアンチリーチング メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-UuCrrIXI-1646276606909)(note picture/image-20200502104048380.png)]

マルチスケール検出

多くの場合、画像には大小さまざまなさまざまなオブジェクトが含まれています。理想的には、すべてのサイズのオブジェクトを同時に検出できます。したがって、ネットワークには、さまざまなサイズのオブジェクトを「見る」機能が必要です。ネットワークが深ければ深いほど、特徴マップが小さくなるため、ネットワークが深ければ深いほど、小さなオブジェクトを検出するのが難しくなります。

実際の特徴マップでは、ネットワークの深さが深くなるにつれて、浅い特徴マップには主に低レベルの情報 (オブジェクトのエッジ、色、主要な位置情報など) が含まれ、深い特徴マップには高レベルの情報 (オブジェクトのエッジ、色、主要な位置情報など) が含まれます。オブジェクト情報のセマンティクスとして: 犬、猫、車など)。したがって、異なるレベルの特徴マップは異なるスケールに対応するため、異なるレベルの特徴マップでターゲット検出を実行できます。次の図は、スケール変換のさまざまな古典的な方法を示しています。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-0ma9rzl7-1646276606910)(note picture/image-20200502104855459.png)]

(a) この方法では、最初に画像ピラミッドを確立し、異なるスケールのオブジェクトを検出するために、異なるスケールのピラミッド画像を対応するネットワークに入力します。しかし、その結果、ピラミッドの各レベルを 1 回処理する必要があり、非常に時間がかかります。

(b) 検出は最後の特徴マップ段階でのみ実行され、この構造は異なるサイズのオブジェクトを検出できません

© 異なる深さの特徴マップでターゲット検出を実行します。SSDではこのような構造が採用されています。このような小さなオブジェクトは浅い特徴マップで検出され、大きなオブジェクトは深い特徴マップで検出され、異なるスケールのオブジェクトに対応するという目的を達成します.欠点は、各特徴マップによって取得される情報がのみ 前のレイヤーからは、次のレイヤーの特徴情報を取得して利用することはできません。

(d) © に非常に近いですが、違いは、現在のレイヤーの特徴マップが将来のレイヤーの特徴マップをアップサンプリングして利用することです。このような構造のため、現在の特徴マップは「未来」のレイヤーの情報を取得できるため、下位の特徴と上位の特徴が有機的に統合され、検出精度が向上します。YOLOv3では、この方法を用いてターゲットのマルチスケール変換を実現しています。

ネットワーク モデルの構造

基本的な画像特徴抽出に関して、YOLO3 は、残差ネットワーク ResNet の実践を利用する Darknet-53 (53 の畳み込み層を含む) のネットワーク構造を採用し、深いネットワーク勾配の問題を解決するために層の間にショートカットを設定します。 、ショートカットは下の図に示されています。これには、2 つの畳み込み層とショートカット接続が含まれています。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-jutdPg1x-1646276606910)(note picture/image-20200502110956252.png)]

yoloV3 のモデル構造は以下のとおりです. v3 全体の構造では, プーリング層と全結合層はありません. ネットワークのダウンサンプリングは畳み込みのストライドを 2 に設定することによって実現されます. 通過後の画像のサイズこの畳み込み層は半分に削減されます。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-ild5r13B-1646276606910) (note picture/image-20210106152945470.png)]

ネットワーク構造を見てみましょう。

  • 基本的な構成要素:青いボックス内の部分

1. CBL: Conv+Bn+Leaky_relu活性化関数からなる Yolov3 ネットワーク構造の最小コンポーネント。2. Res unit: ネットワークをより深く構築できるように、Resnet ネットワークの残差構造から学びます。3. ResX: Yolov3 の大きなコンポーネントである CBL と X 残差コンポーネントで構成されます。各 Res モジュールの前にある CBL はダウンサンプリングの役割を果たします。そのため、5 つの Res モジュールの後、得られる特徴マップのサイズは 416->208->104->52->26->13 になります。

  • その他の基本操作:

1. 連結: 2 つのテンソルの次元を拡張するテンソル スプライシング。たとえば、26×26×256 と 26×26×512 の 2 つのテンソルが連結され、結果は 26×26×768 になります。

2. 追加: テンソルを追加します。次元を拡張せずにテンソルを直接追加します。

  • バックボーンの畳み込み層の数:

各 ResX には 1+2×X 畳み込み層が含まれているため、バックボーン ネットワーク バックボーン全体には合計 1+(1+2×1)+(1+2×2)+(1+2×8)+( 1+ 2×8)+(1+2×4)=52 に FC 全結合層を加えることで、Darknet53 分類ネットワークを形成できます。ただし、ターゲット検出 Yolov3 では FC レイヤーが削除され、Yolov3 のバックボーン ネットワークは引き続き Darknet53 構造と呼ばれます。

前の箱

yoloV3 は K-means クラスタリングを使用して前フレームのサイズを取得し、スケールごとに 3 種類の前フレームを設定し、合計 9 サイズの前フレームをクラスタリングします。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-HDp6JtPa-1646276606911)(note picture/image-20200502103458654.png)]

COCO データセットの以前の 9 つのフレームは、(10x13)、(16x30)、(33x23)、(30x61)、(62x45)、(59x119)、(116x90)、(156x198)、(373x326) です。より大きなオブジェクトの検出に適した、最小の (13x13) フィーチャ マップ (最大の受容野を持つ) に、より大きな以前のフレーム (116x90)、(156x198)、(373x326) を適用します。Medium (30x61)、(62x45)、(59x119) は中型 (26x26) の特徴マップ (中型受容野) に適用され、中型のオブジェクトの検出に適しています。より大きな (52x52) 特徴マップ (より小さな受容野) に適用されます。その中には、より小さなオブジェクトの検出に適した、より小さな以前のボックス (10x13)、(16x30)、(33x23) があります。

9 種類の事前ボックスの大きさを直感的に感じてください。下図の青いボックスがクラスタリングによって得られた事前ボックスです。黄色のボックスはグラウンド トゥルースで、赤いボックスはオブジェクトの中心点が配置されているグリッドです。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-GdVWCyx7-1646276606911)(note picture/image-20200502103442569.png)]

ロジスティック回帰

オブジェクト カテゴリを予測するときにソフトマックスを使用する代わりに、1x1 畳み込み層 + ロジスティック活性化関数構造に置き換えられます。ソフトマックス層を使用する場合、各出力は単一のクラスのみに対応すると想定されていましたが、一部のクラスが重複するデータ セット (女性と人物など) では、ソフトマックスを使用するとネットワークがデータをうまく予測できません。.

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク機構がある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-c20hqyzy-1646276606911)(note picture/image-20200502112750112.png)]

yoloV3モデルの入出力

YoloV3 の入出力形式を以下の図に示します。

[外部リンクの画像の転送に失敗しました。ソース サイトにリーチング防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-Bf3aFnQa-1646276606912)(note picture/image-20200502111721372.png)]

416×416×3 の画像を入力し、ダークネット ネットワークを介して 3 つの異なるスケールの予測結果を取得します。各スケールは、予測情報を含む N チャネルに対応します。

グリッドごとの各サイズのアンカーの予測結果。

YOLOv3 には合計 13×13×3 + 26×26×3 + 52×52×3 の予測があります。各予測は、4 (座標値)、1 (信頼スコア)、および 80 (ココ カテゴリ確率) の 85 次元に対応します。

ヨロV4

YOLOの父が2020年初頭にCV界からの引退を表明。YOLOv4の作者はYOLOシリーズの原作者ではありません。YOLO V4 は YOLO シリーズのメジャー アップデートで、COCO データセットの平均精度 (AP) とフレーム レート精度 (FPS) がそれぞれ 10% と 12% 向上し、Joseph Redmon によって公式に認められ、現在最強のリアルタイム物体検出モデルの 1 つと考えられています。

yoloV4 はほとんどの検出手法を要約し、どの手法が効果的かを選別し、並べて組み合わせ、実験 (アブレーション研究) します. 一般に、Yolov4 は新しい改善を作成するのではなく、多数のターゲット検出手法を使用します. ここでは、主にそのネットワーク アーキテクチャを示します。

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンクのメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-kN8ElNBY-1646276606912)(note picture/image-20200915180225300.png)]

Yolov4 の構造図は Yolov3 と似ていますが、各部分構造を改善するためにさまざまな新しいアルゴリズムのアイデアが使用されています。まず Yolov4 の構成要素を整理する

  • 基本コンポーネント:
  • CBM: Yolov4 ネットワーク構造の最小コンポーネントで、Conv+Bn+Mish アクティベーション関数で構成されます。
  • CBL: Conv+Bn+Leaky_relu活性化関数で構成されています。
  • Res unit: ネットワークをより深く構築できるように、Resnet ネットワークの残差構造から学習します。
  • CSPX: 3 つの畳み込み層と X Res unint モジュール Concate で構成されます。
  • SPP: マルチスケール融合には 1×1、5×5、9×9、13×13 の最大プーリング法を使用します。
  • その他の基本操作:
  • Concat: Tensor splicing、cfgファイルのルート操作に対応するYolov3での説明と同じように、次元が展開されます。
  • Add: cfg ファイルのショートカット操作に対応して、テンソルの追加は次元を展開しません。
  • バックボーンの畳み込み層の数: 各 CSPX には 3+2×X 畳み込み層が含まれているため、バックボーン ネットワーク バックボーン全体には合計 2+(3+2×1)+2+(3+2×2) +2+ が含まれます。 (3+2×8)+2+(3+2×8)+2+(3+2×4)+1=72。

知らせ:

ネットワークの入力サイズは固定ではありません. yoloV3 のデフォルト入力は 416×416 であり、yoloV4 のデフォルト入力は 608×608 です. 実際のプロジェクトでは、必要に応じて変更することもできます.は一般的に 32 の倍数です。入力画像のサイズは、最後の 3 つの特徴マップのサイズ (416×416 入力など) に対応し、最後の 3 つの特徴マップのサイズは、608× の場合、13×13、26×26、52×52 です。 608、最後の 3 つのフィーチャー マップ サイズは 19×19、38×38、および 76×76 です。

要約する

  • yolo ネットワーク アーキテクチャを理解し、その入力と出力を理解する

YOLO の全体的な構造は、入力画像がニューラル ネットワークによって変換され、出力テンソルが得られることです。

  • yolo モデルのトレーニング サンプル構築の方法を知る

元の画像のグリッド グリッドごとに、30 次元のベクトルを構築する必要があります: 分類、信頼度、および回帰ターゲット値

  • yolo モデルの損失関数を理解する

損失関数は、分類損失、回帰損失、信頼損失の 3 つの部分に分けられます。

  • yoloV2 モデルを改善する方法を知っている

BN レイヤーの使用、高解像度トレーニング、Anchorbox の使用、アンカーボックスのサイズを取得するためのクラスタリング、バウンディング ボックス予測の方法の改善、特徴の融合、マルチスケール トレーニング、darknet19 を使用したネットワーク モデル、imagenet データセットを使用してより多くのターゲットを識別する

  • yoloV3のマルチスケール検出方法

YOLOv3では、対応するマルチスケールターゲット検出の精度を向上させるためにFPN構造が使用されています.現在の機能マップは、「将来」のレイヤーの情報を使用して、低次機能を高次機能と融合し、検出精度を向上させます.

  • yoloV3 モデルのネットワーク構造

darknet-53 に基づいて、resnet のアイデアを利用して、残差モジュールがネットワークに追加されます。これは、ディープ ネットワークの勾配問題を解決するのに役立ちます。

v3 構造全体では、プーリング層と全結合層はなく、畳み込み層のみがあります。

ネットワークのダウンサンプリングは、畳み込みのストライドを 2 に設定することによって実現されます。

  • yoloV3モデル先行フレーム設計の方法

事前フレームのサイズの取得には K-means クラスタリングを使用し、スケールごとに 3 種類の事前フレームを設定し、合計 9 サイズの事前フレームをクラスタリングします。

  • yoloV3 モデルがマルチラベル ターゲット分類に適している理由

オブジェクト カテゴリを予測するときにソフトマックスを使用する代わりに、ロジスティックの出力を予測に使用します。

  • yoloV3 モデルの入出力

416×416×3の入力画像に対して、各スケールの特徴マップの各グリッドに3つの事前ボックスが設定され、合計13×13×3 + 26×26×3 + 52×52×3 = 10647 予測。各予測は (4+1+80)=85 次元のベクトルです. この 85 次元のベクトルには、フレーム座標 (4 つの値)、フレームの信頼度 (1 つの値)、オブジェクト カテゴリの確率 (COCO データセットの場合、 80 個のオブジェクトがあります)。

おすすめ

転載: blog.csdn.net/qq_43966129/article/details/123248885