1. 受容野の定義
受容野(受容的受容的)受信フィールドフィールド_ _ _ _フィールド)は、畳み込みニューラル ネットワークの各層によって出力される特徴マップ (特徴 feature) として定義されます。特徴 地図地図_ _ _ _マップp上のピクセルによって元の入力イメージにマップされた領域のサイズより一般的な説明は、次の図に示すように、特徴マップ上の点が元の入力画像上の領域に対応するというものです。
2. 受容野の例
受容野を簡単に説明するために、2 つの例を示します。まず、5*5 入力画像は 3*3 畳み込み演算を伴う 2 層畳み込みカーネルを経て、5*5 の受容野を取得します。ここで、畳み込みカーネル (フィルター フィルター)フィルター)ステップサイズ (ストライドstrides t r i d e ) は 1、padding パディング以下の図に示すように、 p add in gは0 です。 O ut 1
上の図のO u t 1の左上隅の最初の値は、入力入力I n p u tの左上隅にある 3 * 3 の領域の値は、畳み込みによって計算されます。つまり、Out ut 1 Out1O u t 1の左上隅の値の受容野は、入力入力In p u tの左上隅にある 3*3 の領域
アウト 2 アウト 2O u t 2の値はOut 1 Out1O u t 1の 3 * 3 に相当する領域を畳み込み演算により計算します。つまり、O ut 2 Out2 とO u t 2の受容野はOut 1 Out1O u t 1の 3*3 エリア全体
このことから、 O ut 2 Out2 であることがわかります。O u t 2の値は、入力入力によって決まります。I n p u tのすべての領域は、2 つの畳み込み層、つまり、Out 2 Out2O u t 2の受容野は I 入力です入力入力内のすべての5 * 5 リージョン
別の例を挙げると、7 * 7 の入力画像は、3 * 3 のコンボリューション カーネルを使用した 3 層コンボリューション演算の後に取得され、Out 3 Out3O u t 3の受容野は7 * 7 で、これはOut 3 Out3出力3の値は入力入力によって決まります。入力のすべての領域の値は畳み込みによって計算されます。ここで、畳み込みカーネル サイズ、ステップ サイズ、およびパディングパディング以下の図に示すように、 gのpおよびddの値は上記の例と同じです。
3. 受容野の計算
受容野を計算する際には、次の点を説明する必要があります。
(1) 最初の畳み込み層の出力特徴マップ ピクセルの受容野のサイズは、畳み込みカーネルのサイズと等しい。
(2) 深い畳み込み層の受容野サイズは、その前のすべての層のフィルター サイズとステップ サイズに関係します。
(3) 受容野のサイズを計算する際には、画像のエッジの影響は無視されます。つまり、パディングのサイズは考慮されません。
受容野の大きさの計算式は以下の通りです。
RF l + 1 = ( RF l − 1 ) ∗ ∏ i = 1 lstridesi + fl + 1 RF_{l+1} = (RF_{l}-1)*\prod_{i=1}^{l}strides_i + f_{l+1}R Fl + 1=( RF _私−1 )∗i = 1∏私ストライド_ _ _ _ _ _私は+fl + 1
ここで、RF l + 1 RF_{l+1}R Fl + 1現在の特徴マップに対応する受容野のサイズ、つまり計算対象のターゲット受容野のサイズです、RF l RF_{l}R F私は前の層の特徴マップに対応する受容野のサイズ、f_{l+1} は現在の畳み込み層の畳み込みカーネルのサイズ、累積項目ストライドstridess t r i d es は、現在の畳み込み層の前のすべての畳み込み層のステップ サイズの積を表します。
上記の2 番目のサンプルを採取します。例として十分です:
アウト 1 アウト 1O u tレイヤ1は畳み込みの最初の層の出力です。つまり、その受容野はその畳み込みカーネルのサイズに等しいです。つまり、畳み込み層の最初の層によって出力される特徴マップの受容野は次のようになります。 3、RF1 RF1RF1 = 3;
アウト 2 アウト 2出力層2の受容野RF2 RF2RF 2 = 3 + (3 - 1) * 1 = 5、つまり、2 番目の畳み込み層によって出力される特徴マップの受容野は 5 です。
アウト 3 アウト 3出力層3の受容野RF3 RF3RF 3 = 3 + (5 - 1) * 1 = 7、つまり、3 番目の畳み込み層によって出力される特徴マップの受容野は 7 です。
上記の方法で計算されたA lexnet Alexnet は以下のようになります。アレクネットとVGG 16 VGG16 _ _ _パイソンパイソン_ __pythonコード: _ _ _ _
net_struct = {
'alexnet': {
'net': [[11, 4, 0], [3, 2, 0], [5, 1, 2], [3, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1], [3, 2, 0]],
'name': ['conv1', 'pool1', 'conv2', 'pool2', 'conv3', 'conv4', 'conv5', 'pool5']},
'vgg16': {
'net': [[3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1],
[2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1],
[2, 2, 0]],
'name': ['conv1_1', 'conv1_2', 'pool1', 'conv2_1', 'conv2_2', 'pool2', 'conv3_1', 'conv3_2',
'conv3_3', 'pool3', 'conv4_1', 'conv4_2', 'conv4_3', 'pool4', 'conv5_1', 'conv5_2', 'conv5_3',
'pool5']}}
# 输入图片size
imsize = 224
def outFromIn(isz, net, layernum):
totstride = 1
insize = isz
for layer in range(layernum):
fsize, stride, pad = net[layer]
# outsize为每一层的输出size
outsize = (insize - fsize + 2 * pad) / stride + 1
insize = outsize
totstride = totstride * stride
return outsize, totstride
def inFromOut(net, layernum):
RF = 1
for layer in reversed(range(layernum)):
fsize, stride, pad = net[layer]
# 感受野计算公式
RF = ((RF - 1) * stride) + fsize
return RF
if __name__ == '__main__':
print("layer output sizes given image = %dx%d" % (imsize, imsize))
for net in net_struct.keys():
print('************net structrue name is %s**************' % net)
for i in range(len(net_struct[net]['net'])):
p = outFromIn(imsize, net_struct[net]['net'], i + 1)
rf = inFromOut(net_struct[net]['net'], i + 1)
print("Layer Name = %s, Output size = %3d, Stride = % 3d, RF size = %3d" % (net_struct[net]['name'][i], p[0], p[1], rf))
4. 受容野の役割
(1) 一般業務タスクタスクでは、受容野が大きいほど良いことが求められます。たとえば、画像分類における最後の畳み込み層の受容野は、入力画像よりも大きい必要があります。ネットワークの深さが深いほど、受容野は大きいほど良いです。パフォーマンス;
(2) 密集予測タスクタスクこのタスクでは、出力ピクセルの受容野が、意思決定の際に重要な情報が無視されないよう十分に大きいことが必要であり、一般的には深ければ深いほど良いです。
(3) ターゲット検出タスクタスクタスクにアンカーを設定するan c h or は受容野、アンカーアンカーchが大きすぎるか、受容野から逸脱すると、検出性能に重大な影響を与えます。
5. 有効受容野
理解する 理解するの準備中です。_ _ _ _ _効果的効果 的効果的受容的受容的_ _受信フィールドフィールド_ _ _ _フィールドイン_ _ _ _ ディープディープでディープコン ボリューション コンボリューション継続的ニューラルニューラル_ _ _ _ _ _ _ _ _ニューラルネットワークネットワーク_ _ _ _記事「ネットワーク」では、有効受容野( Effective 、 Effective、効果的受容的受容的_ _受信フィールドフィールド_ _ _ _フィールド、 ERFERF _ _ _ERF ) 理論に基づくと、論文では、受容野領域内のすべてのピクセルが出力ベクトルに等しく寄与するわけではなく、多くの場合、受容野領域内のピクセルの影響分布はガウス分布であり、有効受容野は出力ベクトルの一部のみを占めることがわかります。理論的な受容野、ガウス分布は中心から始まり端に向かって急速に減衰、下の 2 番目の写真はCNN CNNCNNの典型的な有効受容野
この図に戻ると、緑色の領域に注目します。黄色は画像です。緑色のボックスがスキャンされるとき、最初の列は 1 回だけスキャンされます。つまり、1 つの操作に参加し、後続の列は次の操作に関与します。複数の操作、計算。したがって、最終的な実際の受容野はガウス分布を示します。