논문 읽기/Classification

[논문 읽기] SKNet(2019), Selective Kernel Networks

AI 꿈나무 2021. 6. 6. 18:04
반응형

 안녕하세요, 오늘 읽은 논문은 Selective Kernel Networks 입니다.

 

 일반적으로 CNN 모델은 각 레이어에서 동일한 크기의 kernel_size를 지닌 conv 연산을 수행합니다. 예를 들어, ResNet은 1x1 conv와 3x3conv를 반복해서 사용합니다. SKNet은 kernel_size를 고정시키지 않고, 입력 이미지의 정보에 따라 kernel_size가 변화하도록 설계한 모델입니다. 입력 이미지 내의 객체 크기가 커지면 kernel_size도 마찬가지로 커지는 것을 실험적으로 증명하며 논문에서 제안하는 selective kernel convolution을 다른 모델에 적용해 성능이 향상된다는 것을 보여줍니다. selective kernel convolution은 split, fuse, select 세 가지 연산으로 이루어져 있습니다.

 

 여러 CNN 모델에 부착하여 사용할 수 있는 SE module과 같이, SK module 또한 여러 CNN 모델에 부착하여 사용할 수 있습니다.

 

 논문을 읽기전에 3x3 conv와 5x5 conv 중 더 성능이 좋은 kernel_size를 선택해서 학습하는 모델로 생각했는데, 다 읽고 다니 conv 연산 사이에서 가중치를 계산하여 더 중요한 conv 연산에 집중하도록 하는 것이네요 ㅎㅎ 즉, 고정된 kernel_size를 사용하는 것이 아니라 여러 kernel_size를 지닌 conv연산을 수행하고, 입력값에 따라 각 conv 연산의 중요도 가중치를 계산하여 다양한 kernel_size를 사용하는 효과를 제공합니다

 

SKNet 등장 배경

 CNN의 구조는 주요 시각 피질의 신경세포의 수용영역(local receptive fields, RFs)에 영감을 받아 제안되었습니다. 다양한 크기의 공간 정보를 수집하기 위한 신경 세포의 RF 크기는 다양합니다. 반면에 현재 사용되고 있는 CNN 모델에서 kernel_size는 고정되어 있습니다. 자극에 따라 RF의 크기가 변화하는 것처럼 입력 정보에 따라 CNN의 kernel size도 변화하도록 하는 것이 SKNet의 등장배경입니다.

 

Selective Kernel Convolution

 신경 세포가 RF 크기를 adaptive하게 조정하는 것을 구현하기 위해 split, fuse, select 세 가지 연산을 사용합니다. 이 세가지 연산으로 구성된 것이 selective kernel convolution 입니다. 위 그림에서는 3x3, 5x5 kernel_size를 지닌 두 개의 path로 나뉘어지는 예시입니다.

 

(1) Split

 입력 피쳐맵에 m 개의 convolution 연산을 수행합니다. 위 그림에서 m=2이며, 3x3, 5x5 kernel size를 지닌 conv로 분할합니다. 또한 각 conv 연산은 resnext의 group convolution과 xception의 depthwise separable convolution을 적용하며 이후에 batch norm과 relu 연산을 사용합니다. 3x3, 5x5 kernel_size 뿐만 아니라 dilated conv나 더 큰 크기의 kernel size를 사용할 수 있습니다.

 

(2) Fuse

 입력 피쳐맵에 m개의 conv연산이 적용하여 생성된 m개의 피쳐맵을 하나로 통합합니다. 통합은 element-wise sumation 연산을 사용합니다.

 

 

 생성된 U 피쳐맵에 global average pooling을 적용합니다. 채널 단위의 값을 저장하고 있는 Cx1x1의 벡터가 생성됩니다.

 

 

 그리고나서 fc layer로 채널을 축소합니다. 효과적인 연산을 위함입니다. 여기에 하이퍼파라미터 r과 L이 필요하며 채널 축소는 다음과 같이 진행합니다. 논문에서는 L을 32로 설정하였으며 채널 축소의 최소값을 의미합니다. fc 연산 뿐만아니라 batch norm과 relu 연산도 함께 적용합니다.

 

 

(3) Select

 fuse 연산이 생성한 z 벡터에 m개의 1x1 conv 또는 fc 연산을 적용하여 m개의 벡터를 생성합니다. 1x1 conv 또는 fc 연산을 수행하는 이유는 기존의 피쳐맵 채널 C로 확장하기 위함입니다. 각 벡터에 softmax 연산을 통하여 0~1 값으로 변경합니다. 분모가 두 벡터 값의 합이므로 A에서 높은 값을 갖는 원소는 B에서 낮은 값을 갖습니다. 또한 a + b = 1이 됩니다.

 

 

 이 값들을 split이 생성한 m개의 feature map에 곱하고, m개의 feature map을 element-wise summation 하여 하나의 피쳐맵을 생성합니다.

 

 

Network Architecture

 SKNet의 전체 구조입니다.

 

Ablation study

 첫 번째 kernel_size는 3x3을 사용하고 두 번쨰 kernel size를 변경하여 실험합니다.

 

 path를 의미하는 m의 수와 어떤 kernel_size를 사용함에 따른 실험결과입니다. k3은 3x3 conv, k5는 3x3 conv with 2 dilated, k7은 3x3 conv with 3 dilated 를 의미합니다. dilated는 파라미터 수 변화없이 수용영역을 확대하는 방법이며 segmentation에서 주로 사용합니다.

 

 다음은 이미지 내의 객체 크기에 따른 3x3 conv, 5x5 conv의 attention value 값 실험입니다. 객체 크기가 커질수록 5x5 conv의 attention value가 커집니다. attention value는 selection에서 softmax 연산 결과값을 의미합니다.

 

 

Performance

 

 


참고자료

[1] https://arxiv.org/abs/1903.06586

반응형