취미가 좋다
SENet : Squeeze-and-Excitation Networks 정리 본문
SENet : Squeeze-and-Excitation Networks
ResNet에 residual block 이 있고, SENet에는 SE block이 있다.
SE block 은 기존 네트워크의 feature map 을 재조정(recalibration) 하는 역할을 수행한다.
즉, feature map 의 전체 정보를 요약하고, 각 map의 중요도를 키워준다.
과정
1. Ftr : X -> U 을 수행하는 transformation 이 (H', W', C') 차원의 입력을 (H, W, C) 차원으로 바꿔서 출력한다.
2. Fsq 를 통해 출력 U의 각 채널 별 정보를 뽑아낸다.
3. Fex 를 통해 스칼라 가중치를 계산한다.
4. Fscale 을 통해 스칼라 가중치를 U 에 곱해준다.

Ftr
단순한 conv 연산이다.
V = [ v1, v2, ... , vc ] 라는 필터가 있다.

Squeeze : Global Information Embedding (Fsq)
GAP를 사용하여 채널 하나당 대표되는 스칼라 값 z를 하나 만든다.

Excitation : Adaptive Recalibration (Fex)
채널 별 descriptor를 가지고, 채널 간 dependency를 계산한다.
계산할 때 주의사항 두 가지
1) Must be flexible : 채널 간의 복잡한(nonlinear) 관계를 찾을 수 있어야 한다.
2) Learn non-nutually-exclusive relationship : one-hot activation 처럼 C개 채널 중 하나만 골라서 가중치를 높게 주는 것이 아니라, 여러 채널을 골라서 강조할 수 있어야 한다.

σ 는 sigmoid 함수, δ 는 ReLu, W1 W2 는 Fully Connected Layer 를 의미한다.
즉,
입력
-> W1 Fully connected 연산으로 선형 변환
-> ReLu
-> W2 Fully connected 연산으로 선형 변환
-> sigmoid
W1 에서 r로
코드로 나타내면 아래와 같다.
def Squeeze_excitation_layer(self, input_x, out_dim, ratio, layer_name):
with tf.name_scope(layer_name) :
squeeze = Global_Average_Pooling(input_x)
excitation = Fully_connected(squeeze, units=out_dim / ratio, layer_name=layer_name+'_fully_connected1')
excitation = Relu(excitation)
excitation = Fully_connected(excitation, units=out_dim, layer_name=layer_name+'_fully_connected2')
excitation = Sigmoid(excitation)
excitation = tf.reshape(excitation, [-1,1,1,out_dim])
scale = input_x * excitation
return scale
장점
1) 유연하다.
SE block은 한 conv layer 에만 적용할 수 있는 것이 아니라, 임의의 이미지 변환에 모두 적용할 수 있다.
아래의 그림처럼, Inception module, Residual module 과 같은 어느 기존 모델에도 쉽고 유연하게 적용할 수 있다.

2) 추가적인 계산량이 적다.
SE block을 추가하면서 생기는 파라미터 증가량이 적으나, 성능 향상도가 크다.
SE Block 을 추가했을 때, 늘어나는 파라미터는 W1, W2 밖에 없기 때문에, conv layer 하나 당 2C^2/r 개의 파라미터가 늘어난다.
Reduction ratio 인 r 을 작은 값으로 설정하면 파라미터 수가 더 적어진다.
여러 값으로 r을 설정했을 때, 16일 때가 성능에 영향이 적으면서 파라미터 수가 많이 줄어들었다.
C가 큰 네트워크의 뒤 쪽의 conv layer에는 적용하지 않도록 하여, 파라미터 수를 줄인다.
SENet 을 적용한 ResNet 은 다음과 같다.

'논문' 카테고리의 다른 글
Fast and Accurate Model Scaling 논문 정리 (0) | 2021.04.16 |
---|---|
ResNeSt : Split-Attention Networks 논문 정리 (0) | 2021.03.19 |
ResNet / ResNext 정리 (0) | 2021.03.18 |
Mask R-CNN 정리 (0) | 2021.03.17 |
PixelLink : Detecting Scene Text via Instance Segmentation 논문 리뷰 (0) | 2021.02.13 |