【ターゲット検出】YOLOシリーズ - YOLOv1詳細解説

この記事は、ターゲット検出アルゴリズム YOLOv1 に関する学習ノートです。インターネット上のブログのほとんどは、翻訳された論文の主要な内容の抜粋と私自身の理解を加えたもの、または論文の一般的な考えを整理したものです.原文を読んでいない場合は、常にいくつかのことを理解していない可能性があります.わからない。したがって、ブログは原文のまま食べることを強くお勧めします。
元のリンク: You Only Look Once: 統合されたリアルタイムのオブジェクト検出

1. YOLOv1 のイノベーションと利点

YOLOv1 は CVPR2016 の記事です. 当時の優れたターゲット検出アルゴリズム (R-CNN や DPM など) と比較して、YOLO には次の革新と利点があります。

1. 主なイノベーション:

  • region_proposal (回帰問題) + classifiers (分類問題) 検出方法を使用する他のターゲット検出アルゴリズム (R-CNN など) とは異なり、ターゲット検出は回帰問題として扱われます
  • 単一のネットワークを使用して、画像全体を入力すると、1 回の推論だけで、画像内のすべてのオブジェクトの検出ボックスとカテゴリを取得できます。同時に、ネットワークはエンドツーエンドで直接トレーニングおよび最適化できます。

2. アルゴリズムの利点:

  • YOLO の主な利点は、高速で高い精度を維持できることです。その標準バージョン モデルは、Tian X GPU でリアルタイム 45fps を実現できます。さらに、YOLOは最大150fpsの高速バージョンも提供しており、その検出精度は他のリアルタイム検出システムの約2倍です。
  • YOLO は画像全体のコンテキスト情報を使用するため、 Fast R-CNN よりも背景エラーが少なくなります(ターゲットのない背景領域でターゲットを誤検出します)。
  • 一般化能力と汎用性が優れており、新しい分野や予期しない入力に直面した場合のパフォーマンスは R-CNN よりも安定しています。

2. ターゲット検出ロジックとモデル出力表現

YOLO ターゲット検出の基本的なプロセスは次のとおりです:
図 1: 検出プロセス
a. 入力画像サイズを 448*448 にサイズ変更します (YOLOv1 は固定サイズの画像のみを入力できます); b
. 単一の CNN ネットワークによる特徴抽出と予測;
c. によるフィルター検出しきい値フレームを設定します。

1. ターゲット検出ロジック(ポイントと難点)

図 2: 検出ロジック
YOLO は最初に入力画像をS*Sグリッドにカットします:
(1) 各グリッドはBBbox各境界ボックスの信頼値を予測します. 信頼は、対応する境界ボックス内のターゲットの把握とボックスの位置を表します、サイズの精度。
各バウンディング ボックスはx、 、ywh、の 5 つのパラメータに対応しますconfidenceの、

  • ( x, y) は、グリッドに対するバウンディング ボックスの中心の座標を表します
  • wh画像全体に対する境界ボックスの幅と高さを示します (境界ボックスの中心座標はグリッド内にある必要がありますが、その幅と高さはグリッドによって制限されず、グリッド サイズを自由に超えることができます) );
  • confidence次のように定義されます: バウンディング ボックスにターゲットがない場合、confienec は 0 に等しくなければなりません; バウンディング ボックスにターゲットがある場合、信頼度は、このバウンディング ボックスの IoU と実際のバウンディング ボックスの IoU に等しくなければなりません。 [
    自信の表現
    注意すべきこと:ここで、「ターゲットがバウンディング ボックス内に存在する」とは、ターゲットの中心位置がバウンディング ボックス内にあることを意味します。例えば、上の2枚目の写真では、「犬」の中心位置が5行2列目のグリッドに収まっており、このグリッドで生成されたBバウンディングボックスのみが「犬」のターゲットとみなすことができます。最後に、YOLO は B バウンディング ボックスと「犬」の実際のラベル ボックスの最高の IoU を割り当てて、この「犬」の検出を担当します。これは、この記事では特殊化と呼ばれます]

(2) 各グリッドは、条件付きカテゴリ確率C。これは、ターゲットの中心位置がグリッドに「収まる」場合、ターゲットが C カテゴリの確率分布に属することを示します。

2. モデル出力表現

上記のターゲット検出ロジックに従って、モデルは最終的にS*S*(B*5+C)サイズのテンソルを出力します。YOLOv1 論文では、S=7 と B=2 が選択されました.使用される PASCAL VOC データセットには 20 のカテゴリ ラベルがあるため、C=20 であるため、モデルは最終的に tensor を予測して出力します7*7*30
グラフィックの YOLO記事では、理解を助けるために出力テンソルが視覚化されています。
img.png

3. ネットワークの設計とトレーニング

YOLO ネットワークは、GoogleLeNet 画像分類モデル (つまり、Inception v1) を利用しています。違いは、YOLO は Inception モジュールを使用せず、単純に 1 1 リダクション レイヤーと 3 3 畳み込みレイヤーを使用することです。YOLO の標準バージョンには、合計 24 の畳み込み層があり、その後に 2 つの完全に接続された層が続きます (ネットワーク構造を以下に示します)。Fast YOLO には 9 つの畳み込み層しかなく、その他のパラメーターは標準バージョンと一致しています。
ネットワーク構造
モデル トレーニングに関連する設定は次のとおりです。

  1. 事前トレーニング: モデルはまず ImageNet 画像データセットで事前トレーニングされます。事前トレーニングに参加するモデルは、上の図に示す完全なモデル構造ではなく、最初の 20 の畳み込み層 + 1 つの平均プーリング層 + 1 つの全結合層のみであり、事前トレーニング モデルの入力は 244* です。 244 .

  2. モデルの微調整: 事前トレーニングが完了したら、事前トレーニング済みの画像分類モデルを微調整して、オブジェクト検出を実現します。具体的な方法は次のとおりです: (1) 4 つの畳み込み層と 2 つの全結合層を追加し (ここでの個人的な理解は、事前トレーニング済みモデルの最後の全結合層を置き換える必要があります)、新しく追加された層はランダムな初期化パラメーターを使用します。視覚情報をより適切に抽出するために、入力画像の解像度を244*224から上げます448*448

  3. 正規化: 画像の幅と高さでそれぞれ除算することにより、出力の w、h を [0,1] 間隔に正規化します; 座標 (x, y) を特定のグリッド内の相対位置に制限することにより、同じ正規化しますそれを [0,1] 間隔にします。

  4. 活性化関数: 最後の全結合層は線形活性化関数 (線形活性化)を使用し、他のすべての層は漏れやすい ReLU 活性化関数を使用します。
    リーキーReLU

  5. 損失関数: 最適化が容易なため、YOLO は損失関数として二乗誤差を使用します。ただし、フラット モデルの平均精度を向上させるにはあまり理想的ではないため、次の問題に対して最適化されています。

    1. 損失に対する位置誤差と分類誤差の寄与は異なるはずなので、損失を計算するときにλ coord = 5 \lambda_{coord}=5が導入されます。l座標_ _ _ _=5座標の損失を修正します。
    2. 各画像には、ターゲットを含まない多数のグリッドがあります (つまり、ターゲットの中心点がこれらのグリッドに該当しません)。これにより、ほとんどのグリッドのバウンディング ボックスの信頼値が 0 に偏り、これが拡大されます。 disguise. 勾配の計算におけるターゲットを含むグリッドの信頼誤差の影響。YOLO はλ noobj = 0.5 \lambda_{noobj}=0.5を導入しますlno o b j _=この効果を補正するには0.5です。
    3. 同じ位置偏差は、小さなオブジェクトよりも大きなオブジェクトの IoU エラーへの影響がはるかに少ないため、YOLO は、オブジェクトのサイズの情報項目 (w, h) の平方根をとることにより、2 つの影響を修正してバランスを取ります。 .

    最終的な修正損失関数の式は次のとおりです。

  6. ハイパーパラメータのトレーニング

    • num_epochs (トレーニング エポック数) は約 135 です。
    • バッチサイズ = 64
    • オプティマイザー: モメンタム=0.9、減衰=0.0005
    • 学習率は初期段階でウォームアップを使用し、トレーニングが進むにつれて徐々に減衰します
  7. 正則化 (オーバーフィッティングを抑制)

    • 脱落(率=0.5)
    • ランダムなスケーリングと変換によるデータ拡張

4. モデル推論

YOLO 推論はトレーニングと同じです. 写真の場合、1 つのモデルのみを 1 回推論する必要があります。PASCAL VOC データセットの場合、モデルは 98 個の検出ボックスを予測します ( S*S*B=7*7*2).
YOLO は、グリッドを分割して検出する方法を使用します。ほとんどの場合、モデルはオブジェクトの中心位置がどのグリッドに「収まるか」を明確に判断し、オブジェクトの境界ボックスを 1 つだけ使用してその位置を予測できます。ただし、一部の比較的大きなオブジェクト、または複数のグリッドの境界にあるオブジェクトについては、同時に複数のグリッドによってより適切に配置される場合があります. このとき、非最大抑制 (NMS) メソッドが使用されます。最大の信頼度 (ここでは IoU に等しい) でバウンディング ボックスのみを保持します。

五、YOLOv1アルゴリズムの欠陥

この記事ではYOLOv1の実験効果に関する内容の紹介は終了しましたので、気になる方は直接原文をお読みください。YOLOv1 アルゴリズムのいくつかの欠陥は、元のテキストで言及されています。

  • グリッドごとに 2 つの境界ボックスと 1 つのカテゴリのみを予測できるため、これにより、近くにあるオブジェクト、特に比較セットでの小さなオブジェクトの検出 (鳥の群れなど) の検出数が制限されます。
  • モデルはデータから学習するため、従来のデータについてはうまく一般化できますが、一部の異常な縦横比や構成に一般化することは困難です。つまり、一般化能力は限られています。
  • 損失関数の設計は、主に位置決め誤差の影響により、特に大小のオブジェクトの処理において十分に合理的ではありません。

参考文献

  1. YOLO-Knowledgeの詳しい説明
  2. グラフィカルYOLO
  3. YOLOシリーズの概要:V1からV4まで

おすすめ

転載: blog.csdn.net/qq_43673118/article/details/123418161