티스토리 뷰

학업

Squeeze-and-Excitation Networks

기리이이이이인 2018. 8. 13. 22:11
Squeeze-Excitation-Network

Squeeze-and-Excitation Networks

이 글은 Squeeze-and-Excitation Networks 논문을 읽고 요약/정리한 것이다.

SENet은 VGGNet, ResNet, DenseNet에 이어 2017 ILSVRC 에서 1등을 한 CNN 구조이다. Classification에서 top-5 error 2.251%로 전년도 대비 25% 나아진 결과를 보이며 SOTA를 갱신했다.

보통 Spatial information에 집중하는 다른 연구1와 다르게, SENet은 채널 간의 상호작용을 학습한 뒤, 그 정보를 사용해 채널 단위로 새로운 가중치를 줘 성능 향상을 이끌어냈다. 일종의 attention이라고 볼 수도 있다.


Squeeze-and-Excitation Block

ResNet의 근간이 residual block인 것 처럼, SENet을 이루는 것은 SE block이라고 할 수 있다.

SE block은 차원을 가지는 입력 차원을 가지는 출력 로 바꿔주는 transformation 가 있을 때 적용할 수 있다. 출력 에 대해 각 채널 별 정보를 뽑아내고(), 그 정보를 바탕으로 채널 별 스칼라 가중치를 계산해() 해당 채널에 곱해주는() 것이다.

편의를 위해 이 convolutional layer라고 가정하자. Standard한 convolution은 입력 채널의 개수가 , 출력 채널의 개수가 인 경우 총 개의 2D 필터를 학습한다. 논문의 표기와 같이, 학습된 필터의 집합은 , 의 결과는 로 나타내자.

CNN에 익숙치 않다면 의 차원이 헷갈리기 쉬운데, 2D 필터 하나의 크기가 라고 하면 은 총 개의 스칼라 파라미터로 구성괸 것이고, 는 출력의 번째 차원에 관한 2D 필터 개를 모아둔 집합이다. 즉 의 차원은 가 성립한다. 이제 convolution operator를 통과하면 개의 2D 이미지가 생길텐데, 그 각각을 라고 부르는 것이다.

2를 계산하면 우리가 평소에 쓰던 convolution operator와 이 같음을 알 수 있다. 그런데 식을 다시 살펴보면 입력 이미지의 번째 채널에 라는 가중치를 implicit하게 부여해 계산하고 있다고도 생각할 수 있다. 하지만 convolution 과정에서 공간 정보 ( 차원) 또한 같이 반영되기 때문에, explicit하게 채널 정보를 뽑아내 가중치를 계산하는 SE block을 도입해 네트워크가 채널 정보에 대해 더 잘 동작하게 하는 것이다.

이제 가 정확히 어떻게 이루어지는지 살펴보자.


Squeeze


Channel dependeny를 고려하기 위해, 우리는 각각의 output channel에 대해 정보를 뽑아낼 것이다. 한 채널을 선택했을 때 우리가 접근할 수 있는 정보는 차원의 2D 이미지이다. 2D 이미지의 한 픽셀은 local receptive field에 관한 정보만 가지고 있으므로, 온전하게 채널 전체의 정보를 얻기 위해서 모든 픽셀을 고려하는 channel descriptor를 만든다. 이렇게 적으면 말이 어렵게 느껴지는데, 그냥 채널 정보 전체를 사용해서 채널을 대표하는 스칼라 값 z를 하나 만들겠다는 것이다. 즉 이 되는 것이다.

 

 

논문에서는 위와 같이 를 Global Average Pooling으로 두었다. GAP 자체가 단순하고 원래 채널 정보를 요악할 때 쓰이는 경우3가 많아서 시도해본듯 하다. 당연하지만 학습 대상 파라미터가 늘어나지 않는다는 장점도 있다.

논문의 해당 섹션에는 위와 같은 추가 문단이 있다. 위에서 언급한 것처럼 convolution의 결과로 얻은 2D 이미지 픽셀 하나 하나를 local receptive field를 나타내는 local descriptor로 볼 수 있다는 말 + 여기서는 간단한 GAP를 썼지만 다른 channel descriptor function을 사용해도 된다는 말이다.


Excitation


이제 위에서 뽑은 채널 별 descriptor를 활용해 실제로 채널 간 dependency를 고려할 차례이다. 고려할 때 주의사항이 두가지 있는데,

  • Must be flexible - 채널 간의 복잡한(nonlinear) 관계를 찾을 수 있어야 한다.
  • Learn non-mutually-exclusive relationship - one-hot activation처럼 C개 채널 중 하나만 골라서 가중치를 높게 주는 것이 아니라, 여러 채널을 골라서 강조할 수도 있어야 한다.

이다. 저자들이 사용한 함수는

이다. 는 sigmoid 함수, 는 ReLU, , 이다.

결국 그냥 channel descriptor vector를 선형 변환 시키고, ReLU를 씌우고, 또 선형 변환시킨 뒤 sigmoid 함수를 pointwise로 적용한 것이다. 의 차원에 있는 은 reduction ratio로, fully connected의 파라미터 개수를 줄이기 위한 하이퍼파라미터이다.

최종적으로는 이렇게 계산한 를 대응되는 채널 전체에 스칼라 곱을 적용해 채널 별 가중치를 부여하게 된다.


Advantages


SE block의 장점은 다음과 같다.

1. 유연하다.

의 정의를 다시 살펴보면 알 수 있듯이, SE block은 한 convolution layer에만 적용할 수 있는게 아니고 임의의 이미지 이미지 변환에 모두 적용할 수 있다.

예시를 살펴보자.

Inception module의 경우 한 모듈을 로 보고 SE block을 적용한다.

Residual module의 경우 identity shortcut은 따로 빼고 나머지에 대해 SE block을 적용한다.

이처럼 SE Block은 여러가지 기존 구조에 쉽고 유연하게 적용할 수 있다는 것이 장점이다.


2. 추가적인 계산량이 적다.

기존 CNN 코드에 SE Block을 추가했을 때 늘어나는 파라미터는 위의 뿐이므로 convolution layer 하나 당 개의 파라미터가 늘어나는 셈이다.

그런데 다음의 두 방법을 적용하면 위의 값이 충분히 작아진다.

  • Reduction ratio 을 16으로 설정.
  • # of output channel (=)가 큰 후반부 conv. layer에는 SE Block 미적용.

전자의 경우 의 값을 4, 8, 16, 32로 두고 실험했을 때 성능에 크게 영향을 끼치지 않으면서 파라미터 수는 줄어드는 가장 적절한 값이 16으로 나와 정해진 것이다.

이 4, 8, 16일 때는 비슷한 top-5 err.를 보이는 것을 볼 수 있다.

후자의 경우 특정 Convolution layer에 대해, 해당 layer가 전체 CNN에서 어디에 있는지와 대응되는 SE Block의 activation vector가 채널 별로 어떻게 다른지 실험해 얻은 결론이다.

SE_A_B에서 A가 작을수록 shallower layer에 해당 SE Block이 적용됐다는 뜻이다. B도 마찬가지이다. SE Block이 의미가 있기 위해선 주어진 input의 class가 바뀔 때마다 채널 activation 상태가 바뀌어야 한다.

SE_5_2나 SE_5_3의 경우 서로 다른 색의 꺾은선 그래프가 거의 같은 모양을 하고 있는 것을 볼 수 있다. 그래프의 색은 SENet에 주어진 입력 이미지의 클래스를 나타내는데, 입력 클래스가 바뀌어도 channel activation이 그대로라는 것은 해당 클래스의 특징을 가지는 채널의 가중치를 높게 설정하는 작업을 SE Block이 도와주지 못한다는 것이다. 즉 쓸모가 덜하므로 후반부에는 SE Block을 적용하지 않아도 성능 상 손해가 별로 없다.

사실 이는 SE_2_3과 같은 초반부에서도 나타나는 현상인데, 이는 초반부 필터가 나타내는 패턴은 직선 / 원 등 간단한 모양이기 때문에 모든 클래스에서 쓸모 있기 때문으로 추측된다.

전자만 고려했을 때 SE-ResNet-50은 ResNet-50에 비해 파라미터가 10% 늘어났고, 후자까지 고려하는 경우 4%만 늘어나게 된다.


Appendix


기존 CNN 구조에 SE Block을 붙인 것이 항상 나은 성능을 보임을 확인할 수 있다!

 


1 대표적인 예로 Spatial transformation network가 있는데, 주어진 이미지에서 가장 feature가 있을 법한 부분을 찾아서 crop/resize를 해주는 등 공간 정보를 좀 더 잘 뽑게 구조를 설계해 성능 향상을 꾀한다.
2 는 convolution 연산.
3 예를 들어 ResNet 마지막에 달려 있는 Global Average Pooling layer

'학업' 카테고리의 다른 글

ACER: Sample Efficient Actor-Critic With Experience Replay  (2) 2019.06.18
Pairwise / Triplet Loss  (3) 2018.09.12
Batch Normalization  (0) 2018.01.23
codeforces polygon 사용법  (0) 2017.10.23
카카오 Code Festival 본선 1~6번 풀이  (10) 2017.09.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함