본문 바로가기
AI 논문 리뷰(AI Paper Review)/컴퓨터비전(Computer Vision)

[논문정리] SENet: Squeeze and Excitation Networks

by stevenkim_ 2023. 9. 1.

*본 내용은 논문의 상세한 분석이 아닌, 간단한 복기용 정리입니다.

 

 

 

 

Method

SENet Architecture

SENet 크게 Squeeze Excitation 과정으로 나누어집니다.

  • Squeeze: 쥐어짜고,
  • Excitation: 활성화하는 네트워크입니다.

대략적인 과정은 맨처음 input 이미지에서 conv 연산을 통해 feature map 생성하고, 다음 squeeze작업을 통해 쥐어짜서, 여기서 활성화해서 마지막에 곱해주는 과정입니다.

 


 

첫번째 squeeze 과정에서는, 저번 시간에 설명한 Global Average Pooling 진행합니다.

여러 채널로 되어있는 여기 feature map에서 채널당 평균을 내서 하나의 값으로 이루어진 채널을 구성합니다.

여기 보이시는 것처럼 채널만 여러개로 남겨둔 1x1xC 차원으로 바꿔주는 작업을 Squeeze라고 합니다.

여기 보이시는 Squeeze 공식은 Global Average Pooling 하는 수식입니다.

 


 

다음 활성화를 하는 Excitation과정에서는, 여기 보이시는 델타 표시가 ReLU 의미합니다. 그리고, 여기 보이시는 시그마가 시그모이드 기호입니다.

위 수식에서 보이다시피, Global Average Pooling 아웃풋으로 나온 z, 1x1xC 이 vector을 

  • Fully connected layer에 넣어
  • Weight를 곱해주고,
  • ReLU 하고,
  • 그 다음 Weight를 다시 곱해서
  • 마지막으로 sigmoid를 계산

해주는 과정을 Excitation이라고 합니다.

과정을 거치면, 이전 input에서 1x1xC 평탄화 해놓은 값에서, 채널별로 중요한 수치를 뽑아냅니다. 마지막에 sigmoid 거쳤기 때문에 채널간의 중요도인 채널 어텐션이 0~1 사이로 모두 배정됩니다.

 


 

다음 처음의 feature map excitation 과정을 거쳐 나온 벡터를 곱해줍니다.

채널당 하나씩 곱해주면, 처음의 feature map 중요도가 부여가 됩니다.

이렇게 처음의 Feature map 중요도를 부여해준 값이 마지막 output feature map입니다.

과정에서도 bottle neck 구조가 활용됩니다. parameter 개수를 늘리지 않을 있고, 첫번째 Fully connected layer에서 input layer node 받는 hidden layer node 수를 줄여 일반화, generalization 해줄 있습니다.

 


 

여기 왼쪽은 Inception 모듈이 있는 GoogleNet이고, 오른쪽은 ResNet입니다.

보이는 것처럼 ResNet에서 Skip conncection 사이에 SE 구조가 들어와 있습니다.

SENet 구조는 SE Block이라고 불리면서 어떤 모델이든지 부착하여 성능을 향상할 있습니다.