SENet이라고 널리 알려진 "Squeeze-and-Excitation Networks" 논문 리뷰입니다.
https://arxiv.org/pdf/1709.01507.pdf
목차
SENet 소개
SENet : ILSVRC'17 classification winner
SENet은 2017년 마지막으로 열린 ImageNet 대회에서 우승을 차지한 알고리즘입니다.
그림에서 볼 수 있듯이 사람의 능력을 뛰어넘었음을 알 수 있습니다.
그러한 이유로 ImageNet 대회는 2017년을 마지막으로 더이상 진행하지 않게 되었습니다.
SENet의 main idea를 간략하게 설명해보겠습니다.
기본적으로는 Channel간의 상관성을 지금까지는 볼 수 없었습니다. 하지만, SENet에서는 Channel 간의 상관성을 보겠다 라는 것이 SENet의 idea라고 할 수 있습니다.
SENet의 base architecture는 ResNeXT-152 입니다.
ResNet 알고리즘에는 Res Block이 있듯이, SENet에는 SE Block이 있습니다.
즉, SENet은 SE Block을 쌓은 것입니다.
base architecture를 보면 알 수 있듯이 SE Block은 여러 가지 구조에 적용할 수 있습니다.
마치 후추나 소금같이 여러 요리에 적용할 수 있듯이 말이죠
SENet 구조
먼저 SENet(Squeeze-and-Excitation Networks)의 단어 뜻부터 알아봅시다.
Squeeze라는 뜻은 "짠다"라는 뜻으로 많은 양의 정보를 농축하는 의미가 있고,
논문에서는 global information embedding이라는 이름을 설명을 합니다.
Excitation라는 뜻은 논문에서 adaptive 하게 recalibration(재조정)하는 것이다라고 표현합니다.
그림을 자세히 살펴보겠습니다.
U라는 Volume이 작은 벡터로 바뀐 것을 볼 수 있습니다.
이것을 Squeeze 즉, Volume을 벡터로 짜버린 겁니다.
Squeeze 된 것은 색깔이 없습니다. 즉, 각 feature map의 중요도가 없는 상황입니다.
그다음 단계에서는 Coloring이 되었습니다.
이것은 어떤 feature map은 중요하고 어떤 것은 덜 중요한 것을 의미하는 것이며
즉, Depth 간의 weight를 구하는 과정이 Excitation입니다.
결과적으로 총 C개의 Depth가 있다면, 그 각각의 중요도를 color map으로 그려낸 것입니다.
그 뽑아낸 컬러를 원래 것에 다시 칠하면 해당 그림이 나옵니다.
이러한 구조의 과정을 SENet이라고 부릅니다.
결론적으로 SENet의 Main idea에 대해 정리하자면
★feature map의 channel 간 상호 의존성을 모델링하여 네트워크의 성능을 향상시키는 것입니다.★
SENet 상세 과정
Ftr: 전처리
Ftr은 일종의 전처리과정에 해당하는 것입니다.
먼저 X라고 하는 data가 SE Block의 입력으로 들어옵니다.
일반적으로 사이즈를 원하는 것으로 맞춰주기 위해서 전처리를 진행합니다.
X라고 하는 Volume은 H' x W' x C'의 크기였는데,
mapping을 통해 U라고 하는 Volumne으로 바꿨고 U의 Volume의 크기는 H x W x C입니다.
Fsq: Squeeze
Fsq는 Squeeze 즉, 짜내는 과정입니다.
이것은 방금 전처리과정을 통해서 만들어냈던 U라고 하는 Volume을 Z라고 하는 vector로 만들어줍니다.
Vector이기 때문에 동일한 C depth로 유지가 됩니다.
짜내는 방법은 여러 가지가 있습니다. Vision 쪽에서 널리 알려진 테크닉인 global average pooling(GAP)을 사용합니다. 해당 테크닉은 한 장의 feature map, 그 밑에 feature map이 있을 때 각각의 feature map을 평균 낸다면 하나의 feature map이 하나의 수로 바뀔 것입니다.
하나의 feature map 즉 2D인데, 정확하게는 H x W의 크기를 갖지만 평균을 내니 숫자 하나로 바뀌게 됩니다.
따라서 1 x 1 x C의 vector로 바뀌게 됩니다.
그래서 이것을 global average pooling(GAP)이라고 불러도 되는데 논문에서는 새롭게
"global information embedding" (Squeeze)라는 이름을 붙였습니다.
Fex: Excitation
그다음은 색깔을 입히는 Excitation 과정입니다.
즉, 길이가 C인 vector가 있을 때 각각의 weight들을 알아내는 과정이라고 할 수 있습니다.
Z라는 vector를 S라고 하는 vector로 바꾸게 된다. 두 vector의 size는 동일합니다.
FC > ReLU > FC > Sigmoid 과정은 어떻게 진행되는 걸까요?
처음에 C차원의 vector가 들어갑니다.
이것을 일종의 compress 비슷하게 진행하면 더 작은 size가 나올 것이고
후에 decompression을 통해 다시 C차원 vector가 나오게 됩니다.
끝에 Sigmoid인 이유는 마지막 하나하나가 categorical 한 것으로 나타내야 하기 때문입니다.
또한 weight 값을 주기 위한 이유도 있습니다.
SE-ResNet Module
Base architecture가 ResNet Module이라고 가정해봅시다.
해당 SE Blcok을 자세히 살펴봅시다.
H x W x C라고 하는 것이 1 x 1 x C로 바뀝니다. Squeeze(GAP) 한 것입니다.
그다음 FC와 ReLU를 통해 C차원의 vector를 원래 차원보다 작은 C/r로 줄어들게 되고,
decomopression 과정을 통해 원래 차원인 C차원으로 돌아오게 됩니다.
즉, 이런 Compression Decompression 과정을 통해서 C개의 원소들의 관계를 modeling 해서 output으로
color에 해당하는 vector로 만들게 됩니다.
지금까지의 과정을 통해 각 Channel에 해당하는 weight들을 알아냈을 때
원래대로 입혀주는 과정을 scale과정이라고 합니다.
해당 식을 설명하자면 아까 U라고 하는 전처리가 끝난 입력 Volume을 가지고 와서
이 각각의 feature map이 있을 텐데 그것을 Excitation에서 알아낸 color를 입혀주는 과정이라고 할 수 있습니다.
지금까지의 과정들이 SE Block에서 일어나는 일들입니다.
참고자료
https://youtu.be/3mIvBkmlOFs
https://deep-learning-study.tistory.com/539
'Main > Paper Review' 카테고리의 다른 글
[Paper Review] Transformer: Attention Is All You Need (0) | 2022.07.12 |
---|---|
[Paper Review] MobileNet V1 (0) | 2022.05.26 |
[Paper Review] Batch Normalization (1) | 2022.03.31 |
[CNN-Algorithm] ResNet (0) | 2022.03.22 |
[CNN-Algorithm] GoogLeNet(Inception) (0) | 2022.03.21 |
댓글