1. はじめに
Fully Convolutional Networks (FCN) は、Jonathan Long らが 2015 年に Fully Convolutional Networks for Semantic Segmentation で提案した画像セマンティック セグメンテーションのフレームワークであり、セグメンテーションの分野における先駆的な研究です。各層のパラメーター構造が適切に設計されたニューラル ネットワークの場合、入力画像のサイズを固定する必要があることがわかっています。たとえば、AlexNet、VGGNet、GoogleNet などのネットワークでは、固定サイズの画像の入力が必要です。適切に動作するように。FCN の本質は、すでに設計されたネットワークであらゆるサイズの画像を入力できるようにすることです\color{blue}{FCN の本質は、すでに設計されたネットワークであらゆるサイズの画像を入力できるようにすることです}FCNの本質は、すでに設計されたネットワークに任意のサイズの画像を入力できるようにすることです。
2. FC ネットワーク構造
FCN ネットワーク構造は、主にフルコンボリューション部分とデコンボリューション部分の 2 つの部分に分かれています。このうち、完全な畳み込み部分は、特徴を抽出するために使用されるいくつかの古典的な CNN ネットワーク (VGG、ResNet など) であり、デコンボリューション部分は、アップサンプリングを通じて元のサイズのセマンティック セグメンテーション画像を取得することです。FCN の入力は任意のサイズのカラー画像で、出力は入力と同じサイズで、チャネル数は n (ターゲット カテゴリの数) + 1 (背景) です。
3. CNN と FCN のネットワーク構造の比較
CNN ネットワーク
猫、犬、背景を区別するネットワークを設計したい場合、CNN ネットワークのアーキテクチャは次のようになります。 入力画像サイズが
14x14x3 のカラー画像の場合、図のようになります。上記では、最初に 5x5 畳み込み層の後、畳み込み層の出力チャネルの数は 16 で、10x10x16 の特徴マップのセットが取得され、次に 2x2 プーリング層の後、5x5x16 の特徴マップが取得され、次に 2 つの特徴マップが取得されます。要素の全結合層を平坦化した後、50個のニューロンを入力し、最終的に分類結果を出力します。
このうち、Flatten は、特徴マップのすべてのピクセルを接続する必要があるため、畳み込みによって出力される特徴マップのサイズが固定である必要があり、逆導出畳み込み層の入力サイズの要件が固定されます。\color{blue}{その中で、Flatten では、畳み込みによって出力される特徴マップのサイズが固定である必要があります。これは、特徴マップのすべてのピクセルを接続する必要があるためです。これにより、畳み込み層を導出するために固定の入力サイズ要件が発生します。 。}このうち、Flattenは、特徴マップのすべてのピクセルを接続する必要があるため、畳み込みによって出力される特徴マップのサイズが固定である必要があり、逆畳み込み層の入力サイズの要件が固定されます。
たとえば、全結合層のニューラル ネットワークでは、入力画像のサイズが同じであると仮定すると、畳み込み後に得られる特徴のサイズも同じになります。入力特徴量のサイズが a × b で、1 × c の全結合層が接続されている場合、畳み込み層の出力と全結合層の間の重み行列のサイズは ( a × b ) × c になります。ただし、入力サイズが元の画像と異なる場合、新しい畳み込み出力は a '' × b '' になります
。同様に、畳み込み層の出力と全結合層の間の重み行列のサイズは ( a ' × b ' ) × c でなければなりません。明らかに、重み行列のサイズが変更されているため、使用したりトレーニングしたりすることはできません。
FCN ネットワーク
完全な畳み込みニューラル ネットワーク。名前が示すとおり、ネットワークは、以下の図に示すように、畳み込み層のリンクでいっぱいです。ネットワークの構造は、最初の 2 つのステップでは
CNN の構造と同じですが、CNN の構造はネットワークがフラット化され、FCN ネットワークがそれを置き換えます。 畳み込みカーネル サイズ 5x5、出力チャネル 50 の畳み込み層になり、その後の全結合層は 1x1 畳み込み層に置き換えられました。1x1 畳み込みは、実際には完全接続操作と同等です。
上の 2 つの図の比較から、完全畳み込みネットワークと CNN ネットワークの主な違いは、FCN が CNN の完全接続層を畳み込み演算に置き換えることです。\color{blue}{主な違いは、FCN が CNN の全結合層を畳み込み演算に置き換えることです。}主な違いは、FCN がCNNの全結合層を畳み込み演算に置き換えることです。
フルコンボリューション演算に切り替えた後は、全結合層の入力層のニューロン数に制限がないため、コンボリューション層の入力は異なるサイズの画像を受け入れることができ、同じものを必要とする必要はありませんトレーニング画像とテスト画像のサイズ。
次に、入力サイズが異なる場合、出力サイズも異なるはずです。では、FCN の出力をどのように理解すればよいでしょうか?
4.
出力特徴マップのサイズの変化を
理解する まず、チャネル数を考慮せずに、上記のネットワークにおける特徴マップのサイズの具体的な変化を見てみましょう
。入力が 14x14 サイズの画像で、5x5 畳み込み (パディングなし) の後、10x10 の特徴マップが取得され、2x2 プーリングの後、サイズが半分に縮小されます。5x5 の特徴マップになり、5x5 畳み込み後、特徴マップは 1x1 になり、次に 2 つの 1x1 畳み込み (全結合操作と同様) を実行し、最後に 1x1 出力結果を取得します。1x1 出力結果は、前面 14x14 画像領域の分類を表します。猫と犬の分類タスクと上記の背景の場合、最終出力結果は 1x3 の行列になり、各値は 14x14 の入力画像を表し、対応するカテゴリの分類スコアになります。
異なるサイズの画像を入力する
では、任意のサイズの画像を入力できるようにすることはできないでしょうか。次に、下図に示すように、より大きな画像を入力するとどのような結果が得られるかを見てみましょう。
上の図を見ると、入力サイズが 14x14 から 16x16 に変更され、5x5 畳み込み (パディングなし) の後、12x12 特徴マップが取得され、2x2 プーリングの後、サイズが半分に縮小して 6x6 特徴になります。マップを作成し、5x5 畳み込みの後、特徴マップは 2x2 になり、次に 2 つの 1x1 畳み込み (全結合演算と同様) を実行し、最終的に 2x2 の出力結果を取得します。その後、2x2 の出力結果は最初の分類を表します。 16x16 の画像領域ですが、出力は 2x2 ですが、前のものとどのように対応するのでしょうか?
どのピクセルがどの領域に対応するのでしょうか?
下の図を見てみましょう:
畳み込みプーリングの逆推論によると、上の図 3 で、最終出力 1x1 が前の 14x14 入力の分類結果を表すことがわかり、畳み込みカーネルのスコープに従って推論できます。上の図の最後の出力 2x2 の左上隅にあるオレンジ色の出力は、16x16 のオレンジ色の領域 (赤いボックス) を表し、以下同様に、出力 2x2 の右上隅にある青い出力は黄色のボックスを表します。 16x16 の領域、および 2x2 の左下隅の青の出力 カラー出力は 16x16 の黒フレーム領域を表し、出力 2x2 の右下隅の青出力は 16x16 の紫フレーム領域を表します。各フレームのサイズは 14x14 であり、出力の各値は入力画像内の領域の分類を表します。
完全畳み込みニューラルネットワーク FCN の詳細な説明については、FCN (完全畳み込みニューラル ネットワーク)を参照してください。