[논문리뷰] SENet(Squeeze Excitation Networks)
1. SENet
SeNet은 Squeeze와 Excitation 방법을 적용한 SE Block을 사용한 네트워크입니다. SE Block의 동작은 다음과 같이 설명할 수 있습니다.
- Squeeze operation: 각 피쳐맵에 대한 전체 정보를 요약하는 operation
- Excitation operation: 각 피쳐맵의 중요도를 스케일하는 operation
→ 각 피쳐맵에 중요도 정보가 추가된 피쳐를 통해 모델을 학습합니다.
2. Squeeze-and-Excitation Blocks
$\mathbf{F}_{tr}$: 일반적인 컨벌루션 연산
$\mathbf{F}_{sq}$: squeeze 연산, 논문에선 GAP(Global Average Pooling)이 사용됨. 그 결과 1X1XC의 사이즈를 가지는 $z$가 만들어집니다.
$\mathbf{F}_{ex}$: excitation 연산, sqeeze연산으로 인해 요약된 feature의 정보를 통해 구한 피쳐의 중요도 값 $s$를 구합니다.
중요도 값 $s$는 아래의 식으로 구할 수 있습니다.
\[s=\text{Sigmoid}(W_2\text{ReLU}(W_1z))\]C는 채널 개수. 위 그림에서 C는 8, r은 4가 됩니다. 각 채널에 대한 GAP(Global Average Pooling)를 한 결과(그 결과 값은 채널 수 만큼 나옵니다)와 $w_{1}$을 곱한 값에 ReLU를 취해줍니다. 그 값에 $w_{2}$를 곱해서 sigmoid를 취한 값이 중요도를 의미하게 됩니다.
$\mathbf{F}_{scale}$: 중요도를 나타내는 s를 이용해 원래 피쳐의 사이즈로 스케일합니다. GAP 이전의 피쳐맵 $u_c$에 중요도 값인 $s_c$를 곱합니다.
\[\tilde{x}=\mathbf{F}_{scale}(u_c, s_c)=s_c\cdot{u_c}\]즉, SE block은 채널축에 대해 feature map의 중요도를 구하고 그 중요도를 feature map에 반영하는 block이라고 정리할 수 있습니다.
3. Reference
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.