SENet(2018), Squeeze-and-Excitation Networks

Dr.Pepper·2024년 11월 13일
0

3주차 스터디

목록 보기
5/7
post-thumbnail

0. SENet

SENet은 기존 CNN에 Attention 모듈을 추가하여 성능을 개선한 방법이다. 이러한 Attention 기능은 크게 정보를 압축하는 Squeeze 모듈과 중요도를 계산하는 Excitation 모듈로 구성했다.

1. 기존 방법의 문제점

SENet이 해결하고자 했던 기존 CNN 방식의 문제점에 대해 살펴보겠다.

[그림1] CNN의 문제점

위 그림은 입력 이미지를 CNN으로 처리하여 feature map을 추출한 후, 채널별로 그 의미를 나타낸 것이다. 이렇게 추출한 feature map에는 입력 이미지의 위치 정보와 객체 클래스 정보가 포함되어 있어야 한다. 위의 예시에서는 첫 번째 채널에 왼쪽 위의 태양 정보가, 두 번째 채널에 오른쪽 위의 나무 정보가 들어있다고 가정했다.

그러나 우리가 목표로 하는 정답은 "가운데에 강아지가 있다"는 정보이다. 따라서 해당 정보 외에 나머지 정보는 불필요하다. 따라서 3번 채널에만 "집중"하고 나머지 채널의 정보는 무시하는 기능이 유리할 것이다.

하지만 CNN에는 이러한 "집중"과 "무시" 기능이 없다. 물론 Convolution, Activation, Pooling 등의 연산 과정에서 중요한 정보가 강조되긴 하지만, 특정 정보에 명시적으로 높은 가중치를 부여해 연산하는 기능은 없다. 만약 CNN에 중요한 정보에 집중할 수 있는 기능을 추가한다면, 성능 개선 효과를 기대할 수 있을 것이다.

2. 제안 방법

앞서 CNN의 한계점에 대해 알아보았다. 이번에는 중요한 부분에 집중할 수 있도록 설계된 SENet의 방법을 살펴보겠다.

2-1. SENet의 전체적인 구조

2-1-1. 채널별 중요도 적용하기

이제, 중요한 채널에는 큰 가중치를, 중요하지 않은 채널에는 작은 가중치를 부여하고자 한다.

[그림2] SENet의 큰 그림

왼쪽은 CNN으로 추출된 feature map이다. 각 채널을 분리하여 각각의 중요도를 계산하고, 그 값을 곱해준다. 이 과정으로 중요도가 높은 채널의 값은 커지고, 중요도가 낮은 채널의 값은 작아진다. 이렇게 계산된 채널들을 다시 합쳐 원래 feature map의 크기로 복원한다.

이처럼 새로운 feature map은 중요한 정보는 강조되고, 그렇지 않은 정보는 약화된다. 그림에서 오른쪽의 Attention이 적용된 feature map을 보면 중요한 채널은 진해지고, 그렇지 않은 채널은 흐려진 것을 확인할 수 있다.

2-1-2. 채널별 중요도 계산 방법

이제 핵심은 채널별 중요도 값을 구하는 기능이다.

[그림3] SE 모듈의 기능별 구성

먼저, feature map의 각 채널은 WxH 크기이므로 정보량이 많으므로, 이를 하나의 값으로 압축해야 한다. 이렇게 압축된 정보는 위치 정보는 사라지고, 물체 정보만 남아 있다고 볼 수 있다.

다음으로, 이 값을 사용해 각 채널의 중요도를 계산한다. SENet 논문에서는 다음과 같이 간결한 그림으로 표현한다.

[그림4] SENet

첫 번째 연산인 Ftr은 일반적인 CNN 연산을 의미한다. 이제 WxHxC 크기의 feature map에 대해 Attention을 적용하게 된다. 이 과정은 Squeeze와 Excitation 과정으로 나뉜다.

Squeeze는 정보 압축 단계이며, Excitation은 중요도 계산 단계이다.

2-2. Squeeze: 정보 압축하기

[그림5] Squeeze 단계

Squeeze 단계는 각 채널의 정보를 하나의 값으로 압축한다. WxH 크기의 정보를 평균값으로 대표하는 방식(Global Average Pooling)을 사용한다. 수식으로 표현하면 다음과 같다.

[그림6] Global Average Pooling

이 수식은 각 채널에서 전체 공간적 영역에 대한 평균을 계산하여, feature map을 고정된 크기의 벡터로 축소하는 기법이다. 이를 통해, Squeeze 기능은 위치 정보를 제외하고 물체 정보만 남기는 역할을 한다.

2-3. Excitation: 중요도 계산하기

Squeeze 기능을 통해 채널별 물체 정보를 하나의 값으로 표현했다. 이제 Excitation 단계에서 이 값을 사용해 채널별 중요도를 계산해야 한다.

[그림7] Excitation 단계

위 그림은 각 채널의 평균값을 통해 채널별 중요도를 계산하는 과정이다. SENet에서는 fully connected, ReLU, Sigmoid를 사용해 이 과정을 구성했다.

[그림8] Excitation 연산

  1. Squeee 단계에서 계산한 평균값 z
  2. z에 첫 번째 FC layer의 가중치인 W1을 곱하여 차원 축소
  3. ReLU를 적용하여, 결과 값이 음수일 경우 0으로 만들고 양수는 그대로 두어 비선형성을 부여
  4. W2을 곱하여 채널 중요도를 반영하는 값 계산
  5. Sigmoid 함수를 적용하여 0과 1사이의 값으로 변환, Attention Score 계산

2-4. 전체 과정

마지막으로, Squeeze와 Excitation을 결합해 SE 모듈의 전체 과정을 살펴보겠다.

[그림9] SE 모듈의 전체 구성

먼저, 입력 feature map이 SE 모듈로 입력되면, 채널별로 분리되어 각 채널의 중요도 즉, Attention Score가 계산된다. 이렇게 계산된 Attention Score는 다시 원래 feature map에 곱해져 중요한 정보는 강화되고, 중요하지 않은 정보는 약화된다. SE 모듈은 CNN 중간에 삽입되어, feature map의 채널별 중요도를 조정해 필요한 정보에 집중할 수 있도록 돕는 역할을 한다.

3. 효과

지금까지 SENet의 각 기능을 살펴봤다. SE 모듈은 CNN의 중간에 삽입될 수 있으며, 기존 CNN 모델에 SE를 적용하면 성능에 어떤 영향을 미치는지 알아보기 위해 세 가지 문제에서 실험을 진행했다.

3-1. 이미지 분류 (Image Classification)

[그림10] ImageNet 실험 결과

위 표에서 original 열은 기존 CNN을 사용한 성능을, SENet 열은 SE 모듈을 추가했을 때의 성능을 나타낸다. SE 모듈을 적용했을 때 성능이 향상되는 것을 볼 수 있다.

[그림11] CIFAR10 실험 결과

CIFAR10 데이터셋에서도 SE 모듈을 추가했을 때 기존 CNN 대비 성능이 개선됐다.

[그림12] CIFAR100 실험 결과

CIFAR100 실험 결과 또한 SE 모듈을 추가했을 때 성능 향상을 확인할 수 있다. 이로써 이미지 분류 문제에서 SE 모듈을 추가하면 성능이 개선된다고 결론 내릴 수 있다.

3-2. 장면 분류 (Scene Classification)

[그림13] Place365 실험 결과

Places365 데이터셋에 대해 ResNet152와 SE-ResNet-152의 결과를 비교했을 때, SE 모듈을 적용한 SE-ResNet-152 모델의 성능이 더 우수한 것을 알 수 있다. 비록 한 가지 데이터셋에서만 실험했지만, SE 모듈을 통해 성능이 개선되는 효과를 확인할 수 있다.

3-3. 객체 탐지 (Object Detection)

[그림14] COCO object detection 실험 결과

COCO 데이터셋에서 ResNet-50과 ResNet-101 모델에 SE 모듈을 추가한 경우를 비교했을 때, 두 모델 모두 SE 모듈을 적용했을 때 성능이 개선되는 것을 볼 수 있다.

4. 결론

먼저, 기존 CNN 방법의 문제점을 살펴봤다.
CNN에서는 feature map의 중요한 정보에 더 높은 가중치를 부여하는 Attention 기능이 부족했다. 이를 해결하기 위해 SENet에서는 CNN의 중간에 삽입할 수 있는 Attention 모듈을 제안했다. SE Attention 모듈은 두 가지 주요 구성 요소인 Squeeze 모듈과 Excitation 모듈로 이루어져 있다. Squeeze 모듈은 Global Average Pooling 연산을 사용하여 정보를 채널별로 압축하여 표현한다. Excitation 모듈은 정답으로부터 중요한 정보를 계산하기 위해 Fully Connected 레이어와 ReLU, Sigmoid 함수를 결합하여 구현된다. 이러한 SE 모듈은 기존 CNN 모델에 삽입될 경우, 다양한 문제에서 성능을 개선하는 데 효과적임을 보여줬다.

profile
GDG Gachon Ai 스터디입니다.

0개의 댓글