スクイーズ-と興奮ネットワーク
CNNは、局所受容野(局所受容野)各層及びチャネルの空間情報を抽出することができる畳み込み、畳み込み演算の最も重要な操作です。以前の研究は、空間情報を取得するに焦点を当て、この論文の作業は、チャンネル間の情報に焦点を当てました。提案OF スクイーズ-andExcitation(SE)右重量との間の再較正通路とすることができるモジュール、例えばモジュールとして、添加することができる既存の追加の計算ネットワークよりも小さく、同様にresnet、及び得、良好な結果を達成しImageNet2017選手権分類タスク。
セネトネットワーク構造
SEブロックと二つの部分Sequeeze励起が含まれています。
- スクイーズ:のために もグローバルプールは、get 前記図のサイズ、これらの機能は、グローバル図受容野を有すると考えることができます。
- 励起:フルメッシュ層、およびSequeeze後の結果は、非線形変換を行います。完全チャネル間の相関の目的をキャプチャするために。
- 再較正機能、入力機能に乗算励振ウェイトを使用した結果として。
示しSEブロックアプリケーションの例以下の2、及び左インセプション右ResNetに結合する、結合。
コードの実装
from torch import nn
import torch
class SEBlock(nn.Module):
def __init__(self,channel, r=16):
super(SEBlock, self).__init__()
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.fc=nn.Sequential(
nn.Linear(channel, channel//r, bias=False),
nn.ReLU(inplace=True),
nn.Linear(channel//r, channel, bias=False),
nn.Sigmoid(),
)
def forward(self, x):
b, c, _, _ = x.size()
#Squeeze
y = self.avg_pool(x).view(b,c) # Squeeze 操作
#Excitation
y = self.fc(y).view(b,c,1,1) # Excitation操作
#Fscale
y = torch.mul(x,y) #x与y维度不同,这里体现了python的广播机制
return y
モデル
次の図に示すResNet-50、SE-ResNet-50、SE-ResNeXt-50ネットワーク構造、我々は図から見ることができ、SEBlockはブラケット、各コンボリューションブロック、すなわち、2つのFCの後ろに追加さその各層神経素子の数です。
実験
紙の実験の部に有意な効果を高めるものであり、ネットワーク内の異なる深さで、データの異なるセットに検証。そして、個別に参照する役割スクイーズ部分励起および特定の実験セクションを検証した紙。
概要
論文は、SEのブロックは、ネットワークの表現能力を向上させるために重量調整機能を使用する権利をチャネルすることを目的と発表しました。