VGGネットワークの説明——小白でもわかる

目次

1. VGG ネットワークの概要

1. VGGの概要

 2. VGG 構造の概要

2. VGGのメリット

3. VGGの見どころ

計算

受容野


1. VGG ネットワークの概要

1. VGGの概要

VGGNetは、オックスフォード大学のVisual Geometry Groupによって提案されたモデルで、 2014 ImageNet画像分類および位置特定チャレンジILSVRC-2014 の分類タスクと最初の位置タスクで優れた結果を達成しました。VGGNetの顕著な貢献は、ネットワークの深さを増やすことで、小さな畳み込みが効果的にパフォーマンスを向上できることを証明したことです。VGG はAlexnetのマントルを非常によく継承しており、独特の特徴を持っています。Alexnetと比較してVGG はより深いネットワーク構造を使用しています。これは、ネットワークの深さの増加がネットワークのパフォーマンスにある程度影響を与える可能性があることを証明しています。

簡単に言うと、VGG は 5 つの畳み込みを備えた畳み込みニューラル ネットワークです。

 2. VGG 構造の概要

上で述べたように、VGG は実際には 5 層の畳み込みです。この写真を見てみましょう:

この写真は、当時の著者の6つの実験の結果です。この図を紹介する前に、いくつかの概念を説明します。畳み込み層はすべて3*3 の畳み込みカーネルであり、conv3-xxxで表され、 xxx はチャネル数を表します。

この表では、次のことがわかります。

最初のセット (A) は、追加機能のない単純な畳み込みニューラル ネットワークです。

2 番目のグループ (A-LRN) は、最初のグループの畳み込みニューラル ネットワークに基づいて LRN を追加しました。優れたパフォーマンスを持っています)

3 番目のグループ (B) は、A に基づいて 2 つの conv3 を追加しました。つまり、2 つの 3*3 コンボリューション カーネルを追加しました。

4 番目のグループ (C) は、B に基づいて 3 つの conv1 を追加しました。つまり、3 つの 1*1 コンボリューション カーネルを追加しました。

5 番目のグループ (D) は、C に基づいて 3 つの conv1 を 3 つの 3*3 コンボリューション カーネルに置き換えます。

6 番目のグループ (E) は、D に基づいてさらに 3 つの conv3 を追加しました。つまり、さらに 3 つの 3*3 コンボリューション カーネルが追加されました。

実験では変数(単一変数)を制御する必要があると中学や高校で教えてもらいました、ほら、それが使われます

では、この一連の実験から何が期待できるでしょうか?

1. 最初のグループと 2 番目のグループを比較すると、ここでは LRN のパフォーマンスが良くなかったので、LRN に行かせましょう

2. 4 番目のグループと 5 番目のグループを比較すると、cov3 の方が conv1 よりも優れています。

3. これら 6 つの実験グループを全体として見ると、ネットワーク層の数が深くなるにつれて、モデルのパフォーマンスがますます良くなることがわかります。

これに基づいて、簡単に要約できます。論文の著者は6 つのネットワーク構造を実験しました。その中で、VGG16VGG19 が最も優れた分類効果を持っています ( 16 層19層の隠れ層)。これは、ネットワークの深さを増やすと最終的な分類に影響を与える可能性があることを証明しています。ある程度の性能はあります。両者に本質的な違いはありませんが、ネットワークの深さが異なります。

次に、VGG16 を例として詳しく説明します。

 

Xiaobai の中には、グループ番号の下にある重み層は何を意味するのかと疑問に思う人もいると思います。心配しないでください。以下を参照してください。

これらの数字の足し算を見てください、それは 16 ですか?

上の図に示されているように、黄色の maxpool (プーリング層) を除いて、他のすべての層の合計は 16 です。同様に、VGG19 も同じです。

では、なぜプーリング層をカウントしないのでしょうか?

これは、プーリング層には重み係数がありませんが、他の層には重み係数があるためです。

 それでは、次に VGG がどのように機能するかを見てみましょう。

 長さ 224、幅 224、チャネル数 3 のピクチャでは、最初のモジュールの後、チャネル数が 64 に増加し、プーリング層の長さと幅が半分になります。次に 2 番目のモジュールでは、チャネル数が 128 に増加し、プーリング層の長さと幅が半分になります...

最後のプーリングまでは 7×7×512 の結果が得られ、その後 3 つの全結合層を経て、最終的な分類結果 1×1×1000 になります (必ずしも 1000 である必要はありません。ここでの 1000 は現在の試合結果です) )

2. VGGのメリット

1.小規模なコンボリューション カーネル グループ: 著者は、必要なパラメータを減らすために、複数の3*3コンボリューション カーネル(いくつかは1*1を使用) をスタックすることで大規模なコンボリューション カーネルを置き換えます。

2. 小規模なプーリング カーネル: AlexNetで使用される3*3プーリング カーネルと比較すると、すべてのVGG は2*2プーリング カーネルです。

3. ネットワークが深くなるほど、特徴マップは広くなります。コンボリューション カーネルはチャネル数の拡大に重点を置き、プーリングは高さと幅の削減に重点を置き、モデルをより深く広くしますが、計算量は増加します。速度が低下し続けます。

4. 完全接続を畳み込みカーネルに置き換えます。作成者は、テスト段階で 3 つの完全接続層を 3 つの畳み込みに置き換えました。これにより、テストで得られたモデル構造は任意の高さまたは幅の入力を受け取ることができます。

5. マルチスケール: 著者は、マルチスケール トレーニングによってパフォーマンスが向上するという事実に触発され、トレーニングとテストの際に、モデルのパフォーマンスを向上させるために、全体像の異なるスケールの画像が使用されます。

6. LRN 層の削除: 著者は、深層ネットワークのLRN (ローカル応答正規化、ローカル応答正規化) 層が明らかな効果を持たないことを発見しました。

3. VGGの見どころ

AlexNetでは作者は11x115x5の大きな畳み込みを使用していますが、それらのほとんどは依然として3x3畳み込みです。したがって、冗長です。元のテクスチャの詳細の特徴変化は、大規模なコンボリューション カーネルを使用して、できるだけ早くキャプチャできます。より深い層では、より大きな局所範囲での特徴相関が失われることを懸念します。その後、さらに 3x3 の小さなコンボリューションを実行します。カーネル5x5コンボリューションを使用て変更を詳細にキャプチャします。

一方、 VGGNet はすべて3x3畳み込みを使用します。なぜなら、畳み込みは計算量だけでなく、受容野にも影響を与えるからです。前者は、モバイル端末への展開が便利か、リアルタイム処理に対応できるか、トレーニングが容易かなどに関係します。後者は、パラメータの更新、特徴マップのサイズ、十分な特徴が抽出されているかどうか、モデルの複雑さ、パラメーターの量などです。

計算

AlexNetと比較したVGG16の改良点は、AlexNet でより大きなコンボリューション カーネル (11x11、7x7、5x5 )代わりいくつかの連続した3x3コンボリューション カーネル使用することです特定の受容野 (出力に対する入力画像の局所的なサイズ) については、多層非線形層により深さを増やすことができるため、大きなコンボリューション カーネルを使用するよりも、スタックを備えた小さなコンボリューション カーネルを使用する方が優れています。複雑なパターンですが、比較的低コスト (パラメータが少ない) で済みます。

VGGでは、 7x7コンボリューション カーネルの代わりに3 つの3x3コンボリューション カーネルが使用され、 5*5コンボリューション カーネルの代わりに2 つの3x3コンボリューション カーネルが使用されます。この主な目的は、同じ知覚フィールド条件を保証することです。次に、ネットワークを構築し、ニューラルネットワークの効果をある程度向上させます。

たとえば、3 つの3x3連続畳み込みは1 つの7x7畳み込みに相当します。3つの3 *3畳み込みの合計パラメータは 3x( 3 ×3×C 2 ) =27C 2で、1 つの7x7畳み込みカーネルの合計パラメータは1 ×7です。 ×7×C 2 、ここでC は入力および出力チャンネルの数を指します。明らかに、27<49 、つまりパラメータは最終的に減少し、3x3コンボリューション カーネルは画像プロパティをより適切に維持するのに有益であり、複数の小さなコンボリューション カーネルのスタッキングにより精度も向上します。

受容野

簡単に理解すると、入力層の対応する領域サイズを特徴マップ上に出力することになります。

計算式:(深いところから浅いところへ)

F ( i ) はi番目の層の受容野です

striderはi番目のステップのステップ距離です

ksizeはコンボリューション カーネルまたはプーリング カーネルのサイズです

率直に言うと、受容野とは実際には、結果層のニューロン ノードの変化によって入力層のニューロン ノードがどのくらい影響を受ける可能性があるかということです。

例として次の写真を見てみましょう。

最初の図でわかるように、1 つのニューロンが前の層の 3 つのニューロンに接続され、2 番目の図では 5 つのニューロンが接続され、3 番目の図では 7 つのニューロンが接続されています。そして誰もが、いいえ、1 つの 5*5 畳み込みで得られるニューロンは 2 つの 3*3 畳み込みで得られるニューロンと同じであり、1 つの 7*7 畳み込みで得られるニューロンは 3 つの 3* 畳み込みで得られるニューロンと同じであることに気づきました。 3回の畳み込み。

さらに、左端の図を押すこともできます。最後の層のノードを変更すると、最初の層の 7 つのノードに影響します。それから右端の図を見ると、最後の層のノードを変更すると、最初の層の 7 つのノードに影響します。最初の層。これは、3 つの conv3 と 1 つの conv7 によって得られる最終結果の受容野が同じであることを意味します。

したがって、同じ受容野の場合は次のようになります。

小さな畳み込みカーネルをスタックすると、大きな畳み込みカーネルを使用する場合よりも、より多くの活性化関数、より豊富な機能、および強力な識別が得られます。畳み込みには活性化関数が伴っており、これにより決定関数の識別力が高まります。さらに、3x3 は7x7よりも詳細な特徴の変化を捉えるのに十分です: 3x3 9グリッド、中央のグリッドは受容野の中心であり、これを捉えることができます。左右および対角の特徴の変更。3つの3x3スタックは7x7に近似し、ネットワークは 2 層深くなり、非線形ReLU関数が 2 つ増え、ネットワーク容量が大きくなり、さまざまなカテゴリを区別する能力が強化されています。

おすすめ

転載: blog.csdn.net/m0_57011726/article/details/129454665