[19′ CVPR] Selective Kernel Networks (SKNet)

This entry is part 19 of 22 in the series Vision Model

내용 요약

SKNet 이전 방식의 문제점을 살펴봅니다. 이어서 SKNet의 제안 방법을 하나씩 자세히 살펴봅니다. 마지막으로 실험 결과를 통해 제안 방법의 효과를 확인합니다.

1. 들어가며

이번 글에서는 2019년 CVPR에 발표된 Selective Kernel Networks 논문을 리뷰합니다. 이 논문은 SKNet 이라고 불리며, 이번 글에서도 SKNet 이라고 지칭하겠습니다.

2. 기존 방식의 문제점

사람은 입력에 따라 Receptive Field Size가 유연하게 달라지며 반응합니다. 예를 들어 작은 물체를 볼 때는 물체의 사이즈에 맞게 Receptive Field Size를 작게 조절하여 인식하고, 큰 물체를 볼 때는 반대로 Receptive Field Size를 크게 키워서 물체를 인식합니다.

반면 CNN에서의 Convolution 연산은 입력과 상관없이 고정된 Receptive Field Size를 갖고 있습니다. 왜냐하면 고정된 사이즈의 Convolution Filter를 사용하기 때문이죠.

이에 저자들은 “사람처럼 입력에 따라 가장 적절한 Convolution Filter Size를 선택하여 연산하면 어떨까?” 라는 아이디어를 제안합니다.

3. 제안 방법

이러한 문제를 해결하기 위한 저자들의 제안 방법을 살펴보겠습니다.

3-1. 큰 그림

먼저 입력에 따라 가장 적절한 Convolution Filter를 골라 연산하기 위한 큰 그림을 살펴보겠습니다.

1.큰 그림
그림1. 큰 그림

저자들의 콘셉트는 이렇습니다. 먼저 Input Feature Map에 대하여 다양한 사이즈의 Convolution Kernel을 사용하여 Output Feature Map을 추출합니다. 이번 글에서는 3×3과 5×5 Convolution Kernel만을 사용한다고 가정하겠습니다. 그리고 이어서 각 채널별로 3×3 Convolution과 5×5 Convolution의 비중을 고려하여 두 Output Feature Map을 합쳐 최종 Feature Map을 만드는 방식입니다.

이제 단계별로 살펴보겠습니다.

3-2. Split : 다양한 사이즈의 Convolution Kernel로 연산하기

첫 번째 단계는 다양한 사이즈의 Convolution Kernel을 사용하여 특징을 추출하는 단계입니다.

2.split 단계
그림2. Split 단계

3×3 Convolution 결과는 파란색 계열로, 5×5 Convolution 결과는 빨간색 계열로 표시했습니다.

3-3. Fuse : 다양한 사이즈의 Kernel로 본 정보를 합치기

두 번째 단계는 이렇게 추출한 두 개의 Feature를 합쳐주는 단계입니다.

3.fuse 단계
그림3. Fuse 단계

이렇게 합치는 이유는, 최종적으로 각 채널별 3×3 Convolution과 5×5 Convolution의 중요도 (Attention Score)를 계산해야 하는데, 이를 위해서는 각 Kernel별로 추출한 Feature의 종합된 정보를 사용하여 연산해야 하기 때문입니다. Fuse 연산은 두 개의 Feature를 동일 위치 픽셀끼리 더한 뒤 (Element Wise Summation), Average Pooling을 사용하여 위치 정보를 압축하고, Fully Connected 연산을 사용하여 정보를 압축하는 과정을 거칩니다.

3-4. Select : 각 채널별로 Kernel별 비중 계산하기

세 번째 단계는 이렇게 압축된 정보를 사용하여 각 채널별로 3×3 Convolution과 5×5 Convolution의 중요도 (Attention Score)를 구하는 단계입니다.

4.select 단계
그림4. Select 단계

위의 그림을 보면 Fuse 단계의 Output 정보에 대해 각각 (DxC2) 행렬곲을 수행하여 (1xC2) 사이즈의 정보를 내는 모습을 볼 수 있습니다. 이렇게 나온 두 개의 (1xC2) 사이즈의 정보는 각각 3×3 Convolution과 5×5 Convolution의 채널별 중요도(Attention Score)를 의미합니다. 따라서 각 채널별로 Attention Score의 합이 1이 되도록 채널별로 Softmax를 취해줍니다. 이때 각각의 Attention Score는 (DxC2) 사이즈의 행렬을 곱해줌으로써 계산되는데, 이 두 개의 행렬은 어느 Kernel에 더 큰 가중치를 주어야 Loss가 줄어드는지를 고려하여 학습된다고 생각할 수 있습니다.

3-5. Sum : Kernel별 비중을 반영하여 모든 Feature 합치기

네 번째 단계는 위에서 구한 각 Kernel별 Attention Score를 반영하여 Feature를 합치는 단계입니다.

5.sum 단계
그림5. Sum 단계

위에서 구한 Attention Score에 Split 단계에서 나온 Feature를 각각 곱한 뒤 두 개의 Feature를 더해줌으로써 최종 Feature Map을 구하는 모습을 볼 수 있습니다.

3-6. Selective Kernel Convolution

위의 네 단계를 종합한 연산을 저자들은 Selective Kernel Convolution이라고 부릅니다. 전체 과정을 간단하게 그려보면 다음과 같습니다.

6.selective kernel convolution
그림6. Selective Kernel Convolution

3-7. SKNet의 구성

Selective Kernel Convolution을 적용한 SKNet은 어떻게 구성되는지 살펴보겠습니다.

7.SKNet 구성
그림7. SKNet 구성

먼저 Base Model은 ResNeXt 모델로 합니다. 그리고 중간의 Convolution Layer를 Selective Kernel Convolution 연산으로 교체하여 SKNet을 구성한 모습을 볼 수 있습니다.

4. 효과

다음은 이렇게 제안한 방법의 효과에 대해 알아보겠습니다.

4-1. ImageNet 성능

ImageNet 데이터셋에 대한 SKNet과 다른 모델들과의 성능을 비교해보겠습니다.

8.ImageNet 성능
그림8. ImageNet 성능

SKNet의 성능은 Base Model로 하고 있는 ResNeXt 뿐만 아니라, ResNeXt에 다른 Attention 방법들인 BAM, CBAM, SE를 적용한 모델들보다 성능이 좋은 모습을 볼 수 있습니다.

Series Navigation<< [18′ ECCV] CBAM : convolutional block attention module[19′ ICML] EfficientNet : Rethinking Model Scaling for Convolutional Neural Networks >>
0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Scroll to Top