Processing math: 100%
본문 바로가기
Vision

SENet(Squeeze-and-Excitation Networks)

by Hotbingsoo 2022. 1. 5.
반응형

SENet

 

Squeeze-and-Excitation Networks

The central building block of convolutional neural networks (CNNs) is the convolution operator, which enables networks to construct informative features by fusing both spatial and channel-wise information within local receptive fields at each layer. A broa

arxiv.org

어떤 문제를 맞닥뜨렸을때, 그리고 그 문제를 머신러닝으로 해결하려고 하면 아직까지도 막연하게 '잘 되지 않을까?'라는 생각이 조금은 남아있는 것 같습니다. 하지만 실제 현업을 하다보면 널려지지 않은, 비슷해보이는 것도 찾기 힘든 문제를 해결해야합니다. 이 말은 즉, paper 검색해서 구현하기 쉬운 상위 몇개의 오픈소스를 갖다 쓸 수 없는 상황인거죠. 따라서 문제를 어떻게 접근해야하는지, 왜 그래야하는지 내가 근거를 만들어가야합니다. 제가 그래서 이런 아키텍쳐를 제안하는 논문들을 좋아하는 것 같습니다.

 

Squeeze-and-Excitation Networks

Squeeze-and-Excitation Block

SENet paper를 보면 저자가 말하고자 하는바가 아주 명확합니다.

- 학습을 진행할 때 채널간 중요도를 고려할 필요가 있고, SENet은 그것을 증명한다. SENet은 채널의 중요도로 feature recalibration 하는 방법을 제안한다. 

위 그림은 Squeeze-and-Excitation Block 구조입니다. H×W×C의 input X가 어떤 연산(Conv) Ftr을 거쳐 H×W×C의 feature map U가 결과로 나옵니다. 일반적인 네트워크의 Conv layer라고 생각하면 될 것 같습니다. 여기에 더해서 각 채널들이 얼마나 중요한지 Weight을 주고싶다는 것이 SE Block의 컨셉입니다.

Paper 의 수식으로 나타내면 다음과 같습니다.

XRH×W×C

URH×W×C

V=[v1,v2,,vC]

U=[u1,u2,,uC]

uc=vcX=Cs=1vscxs

 

위 수식에서 VC개의 filter를 요소로 갖는 집합이고 각각의 filter viH×W×C의 사이즈입니다. 인풋 Xvc의 Convolution 연산을 통해 uc가 계산됩니다. 그냥 convolution 했다고 쓰면 되는데 복잡하게도 써놨습니다.

Squeeze : Global Information Embedding

SENet 발췌

SE block 의 첫 step은 Fsq Squeeze 입니다. Spatial Information을 하나의 값으로 합축하기 위해 Global Average Pooling을  수행합니다.  Global Average Pooling은 단순히 1차원 벡터로 변환하는 input size 크기의 pooling입니다. 

zc=Fsq(uc)=1H×WHi=1Wj=1

 

역시 GAP를 복잡하게 써놨습니다.

 

Excitation : Adaptive Recalibration

Squeeze 연산 이후 channel-wise dependency 를 잡기위해 뒤의 연산은 두가지 조건을 맞춰야한다고 합니다.

  1. Flexibility : nonlinear interaction between channel
  2. Must learn a non-mutually-exclusive relationship

솔직하게 위에 두 조건이 뭘 의미하는지는 잘 모르겠습니다. SEnet에서는 이를 만족하기 위해 sigmoid activation 를 사용한다고 합니다.

s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))

 

위 수식에서 W는 FC layer, δ는 ReLU를 의미합니다. 식을 풀여쓰면 결국 Squeeze 뒤에 붙는 Excitation 연산은 결국 인풋으로는 Squeeze에서 계산한 z가 들어오고 FC, ReLU, FC, Sigmoid 를 취하는 연산입니다. 다만 W1RCr×C,W2RC×Cr 라고 합니다.  즉 첫번째 FC layer는 노드를 Cr개로 줄이고 두번째 FC layer는 다시 노드수를 복원하게 됩니다. 

Excitation

Excitation 연산을 도식화하면 위와 같겠죠. 이렇게 구한 s를 원래 Conv layer의 output U에 channel-wise 스칼라 곱을 해주면 최종적으로 channel weight이 고려된 ˜X를 구할 수 있습니다. 

 

Instantiation

위 그림은 Inception block, Residual block 연산에 SE를 적용한 모습입니다.

 

Result

기존 네트워크에 SENet을 적용해 성능을 이뤘다는것을 보여줍니다. GFLOPS를 보면 크게 늘어나지 않은것을 볼 수 있는데 그만큼 SE Block의 비용이 적다는 것을 알 수 있습니다. 

반응형

댓글