[딥러닝] SENet에 대하여

김대웅·2025년 1월 28일

Deep Learning

목록 보기
14/16
post-thumbnail

목표

딥러닝계의 Legend 논문(이론) 중 혁신적인 논문 중 하나인 SENet에 대해 배워보자!

이 내용은 혁펜하임님의 'Legend 13' 강의를 기반으로 작성함.
이 내용은 전 작성 내용과 이어집니다.

SENet

SENet은 2017년에 ILSVRC에서 1등을 한 모델로 SENet의 가장 큰 특징인 SE block를 ResNet에 적용하여 오차율 2.3%로 우승한 모델이다!

SENet은 기본적으로 채널 간의 상호의존성에 집중하여 중요한 특징을 강조하고 덜 중요한 특징을 억제하는 방식으로 작동한다.
SENet의 신기한 점은 모델 하나를 제시한 것이 아니라 기존 모델(ResNet, Inception 등)에 끼워서 쓰는 용도로 SE block를 제안했다는 것이다.

(논문 : https://arxiv.org/pdf/1709.01507)

SE는 Squeeze-Excitation의 약자로, '압축하고 재조정한다'는 것이다.
그래서 실제 구현도 GAP로 squeeze한 다음 FC 두 층(FC - ReLU - FC - Sigmoid)을 통과한 것을 각 feature map에다가 곱해준다!
다만, 위의 과정을 거쳤을 때 파라미터가 너무 많이 늘어날 수 있기에 reduction ratio r=16r = 16으로 제안하여 파라미터 수를 줄이고자 하였다.
여기서 SENet에 대해 들어보면 1 x 1 conv와 비슷하다고 생각이 드는데, 안을 들여다보면 차이점이 있음을 알게 된다.
1 x 1 conv의 경우 차원 축소/확장을 위해 feature map 간의 weighted sum을 하는 반면, SENet의 경우 채널의 중요도를 학습하기 위해 사용하기에 feature map weighting이라고 볼 수 있다!
결국 SENet은 채널 attention 효과를 얻기 위해 weight를 더욱 학습시키기 위한 장치라고 볼 수 있다!

SE block를 ResNet에 적용한 모습

ResNet에 SE block를 적용하면 위와 같이 Residual 뒤에 추가해주면 끝이다!
위는 SE-ResNet-50과 SE-ResNeXt-50에 대한 모델 구성인데, 그냥 ResNet과 ResNeXt에 fc만 추가된 모습인 것을 볼 수 있다!

SENet의 활용의 효용성

사실 SE block는 파라미터 수를 늘리는 것이기에 성능이 좋아지는 것은 당연하지만, 아래의 그림을 보면 SENet의 효용성을 체감할 수 있다.
ResNeXt-50 기준으로 연산량은 4.24에서 4.25로 아주 조금만 늘어난 반면 성능은 4.24에서 7.99로 연산량을 확 늘렸던 ResNeXt-101보다 성능이 좋다!
(SE-ResNeXt-50 : 5.49 / ResNeXt-101 : 5.57)
이 말은 이 조금만 쓰인 연산량이 효율적으로 쓰였다는 것을 의미한다!!

Ablation study

Ablation study는 모델의 각 구성 요소를 제거하거나 변경하며 전체 성능에 어떤 영향을 미치는지 실험하는 것을 의미한다.
SENet에서 다음과 같은 부분에서 Ablation study로 모델을 구성하였다.

  1. Reduction ratio
    Reduction ratio에 대해 변경을 해보는 실험에서 성능과 파라미터수를 고려할 때 16이 가장 적절했다!
  2. GAP vs GMP
    GAP 대신에 Global Max Pooling를 써보는 방식의 결과, GAP가 조금 더 나은 결과를 보였다.
  3. Sigmoid vs ReLU vs Tanh
    excitation의 마지막 activation function을 바꾸는 것을 한 결과, Sigmoid가 제일 좋은 결과를 보였다.
  4. SE block을 일부분만 적용해보기
    SE block를 많이 적용할수록 에러율은 많이 낮아지는 모습을 보였다.
    (하지만 다 적용하니 파라미터 수가 좀 많이 늘긴 했다..!)
  5. SE의 적용 위치
    위처럼 다섯 가지의 위치에 대해 다 바꿔보며 진행한 결과,
    위와 같은 결과를 보였고, 기존의 방식도 나쁘지 않은데, 앞에 두는 c 방식이 조금 더 좋은 것을 볼 수 있다!
    (논문에선 별 차이 없기에 기존에 주장했던 방법으로 적용한 것으로 보인다.)
  6. SE의 효용성
    SE block 대신 1 x 1 conv를 파라미터 수를 똑같이 해서 사용한 결과 결과적으로 SE가 더 좋은 것을 확인할 수 있다!
  7. SE vs SE_3 x 3
    SE block에서 GAP 이전에 3 x 3 conv의 진행 유뮤에 대해서 3 x 3 conv 후에 GAP를 진행하는 SE_3x3이 성능적으로는 비슷하나 파라미터 수에서 큰 차이를 보인다!
    (하지만 논문에서 기존의 SE로 주장한 것으로 실험했기에 SE를 밀고간 것으로 보인다...!)

SENet이 레전드인 이유

  1. SE block를 제안하여 기존 네트워크들을 발전시킬 수 있는 추가 도구를 제공하였다!
  2. 파라미터를 약간만 추가해도 성능을 크게 올리는 결과를 보여주었다!
  3. 여러가지 Ablation study를 진행하여 모델 진행의 설득력을 높였다.
  4. 채널에 attention하는 방법에 대한 연구의 기초를 단련시켰다.
profile
글쓰기에 미쳐보자

0개의 댓글