AI with U-Seminar, Daneil Jeong

SENet(2019) 본문

컴퓨터비전(CV)

SENet(2019)

유세미나 2021. 5. 6. 11:30

컴퓨터 비전에서 advanced된 CNN 모델 중 하나인 SENet입니다.

 

논문링크

 

arxiv.org/abs/1709.01507

 

Classification task를 수행하는 모델입니다. DenseNet 이후에 나온 방법이기도 합니다.

 

1. 서론

CNN은 visual task를 수행하는 검증된 유용한 모델이다. CNN의 각 층에서는, 여러 필터들이 입력 채널들(RGB)에 대하여 이미지 사이의 이웃한 픽셀끼리의 공간적인 연결 패턴(spatial connectivity patterns)을 표현한다. 비선형적인 활성화 함수들과 downsampling을 사용하여, CNN은 계층적인 패턴을 잡아내거나 전체의 반영 영역을(receptive fields)를 얻어내는 이미지 representation을 만들 수 있다. 주어진 task에 가장 현저하게(salient) 사용되는 이미지의 특성들을 추출하는 ㅓ것이 CV연구의 핵심 주제라 할 수 있다(이는 곧 성능 향상에 도움이 된다). 이를 실현하기 위해 새로운 모델을 개발하는 것이 현재 연구의 중요 개척점이다. 최근 연구들은 다양한 학습 기법을 접목시키는 것이 네트워크가 공간적인 상관관계(correlation)을 파악하는 것을 개선시킬 수 있음을 보여준다. Inception 등이 그러한 접근 중 하나이다. 이 연구의 경우 공간적 의존성을 잘 파악하고, 공간적인 attention을 통합하는 데 도움이 되는 것으로 보인다. 이 논문에서는, 채널간의 관계를 통해 네트워크를 디자인한다. SE block이라는 새로운 구조적(architectural) unit을 도입하여 각 channel간의 convolutional feature들 사이의 상관관계를 파악함으로 양질의 represetantion을 만들고자 한다. 궁극적으로, 전체적인 정보를 이용하여 선택적으로 feature을 구하고 이를 통해 network가 feature 재보정(recalibration)이 가능하도록 한다.

SE의 구조는 아래와 같다.

주어진 Ftr을 통해 X를 U로 mapping 한다. (U는 HxWxC의 차원을 갖는다). Feature U는 우선 squeeze 연산을 통과하는 데, 이곳에서 공간적인 차원(HxW)에 대한 feature map들을 종합하여 channel descriptor를 만든다. 이 descriptor 함수는 각 채널에 대한 feature 응답의 global distribution을 임베딩하는데, 이를 통해 모든 layer에서 global receptive field의 정보를 접근할 수 있게 한다. 이후에는 excitation 연산이 진행되는데, 간단한 self-gate 기법을 통해 임베딩된 입력을 각 채널에 해당하는 채널당 modulation weight으로 바꿔준다. 이 weight들이 다시 U에 적용되어, 최종적으로 SE 블록의 출력을 만들어낸다.(이는 이후 layer들에게 직접적으로 인가(feed)할 수 있다) SE 블록들을 여러개 쌓아 SENet를 만들 수 있다. 또한, 기존 block에 대하여 drop-in replacement(기존 것을 없애고 새로이 추가하는 것을 의미)을 사용하는 것이 가능하다. 각각 다른 depth에 대하여 네트워크 내에서 block의 역할이 달라진다. 초기 층에서는, class와 무관한(class-agnostic) 정보 feature들을 추출(excite)하는 역할을 한다.(low-level representation). 후기 층에서는 SE의 각 블록들이 class와 연관된(class specific)정보들을 추출하는 개성적인(specialised)형태가 된다. 마지막으로, 블록들에 의한 feature 재보정이 네트워크를 통해 축적될 수 있다. 새로운 CNN 구조를 만드는 것은 많은 새로운 hyperparameter들과 layer 형태를 만드는 것이 요구된다(그래서 힘들다). 그러나 SE 구조의 경우에는 간단하며 현재 존재하는 SOTA 구조들을 직접적으로 교체하여 사용하는 것이 가능하다.(성분만 바꿔줌) 또한 Computation 비용도 적으며, 모델 complexity도 약간의 증가만 있을 뿐이다. 다양한 SENet들을 통해 논문에서 검증을 진행할 것이다. ImageNet 데이터 셋을 사용하였으며, SENet은 실제로 ILSVRC 2017에서도 1등을 차지하였다.(최고의 모델 ensemble은 2.251%의 에러률을 가진다). 

 

2. 관련 지식

VGGNet과 Inception 모델은 네트워크의 깊이를 늘려 학습에 가능한 representation의 질을 상당히 향상시켰다. 각 층에서의 입력 분포를 조정하기 위해, Batch Normalization을 이용하였다.(deep network의 안정성을 키우는 방법) ResNet의 경우에는 identity skip connection을 이용하여 훨씬 깊고 강한 네트워크를 학습하는 것이 가능함을 보여주었다. Highway 네트워크는 gate 기법을 통해 shortcut connection을 이용한 정보의 흐름을 조정하는 방법을 도입하였다. 대부분의 연구들은 이후 네트워크 내에 있는 요소들을 조정하여 성능을 개선시키는 데 초점을 맞추었다. Grouped convolution은 학습된 transformation의 cardinality를 증가시킬 수 있음을 보였다. Multi-branch convolution 역시 좋은 성능을 보인다. 이전 작업들에서는 채널간의 상관관계를 단순히 feature들 사이의 새로운 mapping, 즉 1x1 standard convolutional filter를 이용하여 처리하였다. 대부분의 연구들은 모델과 computational complexity를 줄이는 데 목적을 두었고, 이는 채널간의 관계가 instance와 무관한 함수로 표현될 수 있다 가정한 것이다. 반대로, 논문에서는 역동적이고 비선형적인 채널간의 관계를 통해 global 정보를 알아내는 unit을 제안하였고, 이는 학습과정을 쉽게하며 네트워크의 representational power를 상당히 강화하였다. 

Attention은 정보 성분을 추출하는 훌륭한 방법이다.(biasing의 기법) Sequence 학습 등에서 유용성을 보였으며, localisation과 이미지 이해, image captioning, lip reading 등에 사용되었다. 특정 작업들은 공간적인 attention과 channel attention을 혼합하여 연구를 진행하였다. SE 블록의 경우에는 가벼운 gate 기법으로 computation 측면에서 효율적으로 채널 간의 상관관계를 모델링하는 representation power를 강화하는 것을 목표로 한다.

 

3. SE 블록

Transformation mapping인 Ftr을 이용하여 X를 U로 바꿔준다. Ftr은 convolutional operator로 칭하며, V는 각 채널에 해당하는 학습되는 filter를 의미한다. 

이 때 uc는 HxW의 차원을 갖는다. 간단히 하기 위하여 bias term은 생략하였다. 모든 채널의 합을 통해 출력을 계산하기 때문에, 채널간의 의존성은 내재적으로 vc에 임베딩된다.(local하다) 외부적으로 model의 channel 상관관계를 이용하여 이후 transformation에 이요할 수 있는 정보 feature들을 잘 넘길 수 있을 것이라 기대된다. 결과적으로, squeeze와 excitation을 이용하여 전체적인 정보에 접근하는 것이 쉽다. 

출력 feature들의 각 채널별 신호에 대하여 생각해보자. 각각의 학습되는 filter들은 지역적인 영역에서만 작동하며, 결과적으로 U의 각 unit들은 이 영역 밖에 있는 맥락 정보를 이용하는 것이 불가능하다. 이를 해결하기 위해, squeeze global 공간 정보를 이용한다.(channel descriptor). global average pooling을통해 채널별 statistics(z)를 구한다. 

U는 전체 이미지를 표현하는 statistic를 지닌 local descriptor들의 집합이다. 간단한 average pooling을 통해 이를 최적화시켰다.

Excitation은 channel 간 의존성을 알아내기 위하여 squeeze로 붙어 총합한 정보를 이용한다. 두 가지 기준을 만족해야 하는데, 첫째는 유연(flexible)해야 하고(비선형적인 관계를 학습할 수 있어야함) 두번째는 상호배타적이지 않은 관계를 학습할 수 있어야 한다.(여러개의 채널들이 강조될 수 있다(one-hot activation이 아님)). sigmoid 활성화를 이용하여 다음과 같은 gate 기법을 사용하였다.

이 때 안에 존재하는 δ 함수는 ReLU이다. W1의 차원은 C/r x C 이고, W2의 차원은 C x C/r이다.(r은 dimensionality reduction ratio이다) 일반화를 위하여, 두개의 FC 층과 비선형을 이용한 bottleneck을 만들었다. 그 후 다시 ReLU을 통과시키고 dimension을 증가시켜 U의 출력이 되게 한다. 마지막 결과는 U를 s를 이용하여 rescaling함으로 얻어진다.

이 때 X는 각 channel 별 x의 모음이고(행렬), Fscale함수는 channel-wise mutilplication을 의미한다.(sc는 scalar이고, uc는 feature map(HxW)이다) 이는 마치 self-attention의 모습과 유사하다(채널에 대하여 진행한 것으로 보면 된다) 

Instantiations

SE 블록은 VGGNet과 같은 기존 구조들의 non-linearity가 진행된 이후에 삽입될 수 있다. 또한, flexible하기 때문에 transoformation을 직접 구할 수 있다. 다양한 구조들에 SE block을 사용한 결과를 후에 기술한다. Inception 모델의 경우, Inception module을 Ftr로 바꿔준다(SE-Inception 네트워크). SE는 residual 네트워크에도 이용될 수 있다. 이 때 Ftr은 non-identity 브랜치로 동작한다. identity branch가 더하기 전에 squeeze와 excitation을 진행할 수 있다. SE 블록은 이와 같이 다양한 구조와 결합할 수 있는 flexible한 특성을 갖는다.

4. 모델 및 계산 복잡도

SE 블록은 모델 복잡도와 성능 개선 사이의 좋은 trade-off를 갖는다. ResNet-50과 SE-ResNet-50을 예시로 비교해본다. ResNet059은 3.86 GFLOPs를 필요로 한다(224 x 224 pixel 이미지에 대하여). 각 SE 블록은 global average pooling을 x통해 squeeze를, 2개의 작은 FC 층을 이용하여 excitation을 수행한다.(channel-wise scaling과 더불어) reduction ratio r을 16으로 설정할 때, 3.87 GFLOPs 정도로 0.26 % 증가한다. 그 대신 정확도는 ResNet-50을 상회한다. SE-ResNet-50은 8개의 NVIDIA Titan X GPU들을 이용하였을 때, 256개 이미지들의 minbatch를 훈련시키는 데 209ms가 걸린다(ResNet-50은 190ms). 이 정도의 시간은 합당하다(reasonable)고 여겨진다. 또한 그외의 parameter 숫자 등에서도 효율적임을 알 수 있다.

 

5. 실험

Image Classification : ImageNet 2012 데이터셋에서 실험하였다. 1000개의 클래스로 이루어진 128만개의 훈련 데이터와, 5만개의 검증 데이터에 대하여 진행하였다. 검증 데이터 셋에서의 top-1 error와 top-5 error를 기록하였다. Data augmentation으로는 random cropping(scale, aspect ratio)을 이용하였고 random horizontal flipping을 진행하였다. mean RGB 채널 subtraction을 이용하여 각 입력 이미지들을 normalize하였다. synchronous SGD를 이용하였으며, 모멘텀은 0.9, 미니배치 크기는 1024이다. 초기 학습율은 0.6에서 시작하여 30번의 epoch마다 10분의 1씩 줄였다. 100개의 에폭에 대하여 진행하였으며, weight initialization을 사용하였다. reduction ratio r은 16으로 사용하였다. 

SE 블록들은 다른 깊이에서 개선된 성능을 꾸준히 보였다. computationally 효율적이면서 좋은 결과를 보임을 확인할 수 있었다. 

다른 구조와의 결합도 가능하다. 그 당시 SOTA였던 Inception-ResNet-v2, ResNeXt등에 SE 블록을 집어넣었다. 이 역시 상당한 성능의 향상을 관측할 수 있었다. (parameter 숫자는 훨씬 적다!) 

또한 MobileNet과 ShuffleNet과 같은 Mobile의 구조에 대하여도 진행하였다.(역시나 성능이 좋음)

Scene Classification : Places365-Challenge 데이터셋에 대하여 진행하였다. 365개의 카테고리에 대하여 8백만 개의 훈련 이미지, 36500개의 검증 데이터로 이루어져있다. ResNet-152을 baseline으로 SE 블록의 성능을 평가하였다. (역시나 성능이 뛰어나다).

Object Detection : COCO 데이터셋을 이용하였다. Faster R-CNN 디텍션 네트워크를 베이스라인으로 비교하였다. 

ILSVRC 2017 Classification Competition : 일등을 차지하였다. 

 

6. SE 블록의 역할

Squeeze의 역할 : squeeze로 부터 만들어진 global 임베딩을 평가하기 위해 같은 숫자의 파라미터를 갖지만 global average pooling을 수행하지 않는 SE 블록의 변형을 실험하였다. average pooling을 없애고 그 자리에 1x1 컨볼루션(채널 수 동일, NoSqueeze)의 2개의 FC 층을 대신하였다. (이 때, excitation 출력이 입력의 차원을 유지한다) SE 블록과는 다르게, point-wise 컨볼루션이 local operator의 출력을 재매핑(remap)할 뿐이다. 실제로는, 딥 네트워크의 후반 층들이 대표적으로 글로벌 receptive 영역을 가지는 데, 글로벌 임베딩은 NoSqueeze에서는 더이상 직접적으로 가능하지 않다.

Excitation의 역할 : excitation들이 다른 클래스의 이미지들과, 같은 이미지들 사이의 클래스에서 어떠한 역할을 하는 지 생각해본다. 다른 클래스들 사이에서의 excitation의 분포를 살펴보자. 4개의 ImageNet 클래스를 선정(goldfish, pug, plane, cliff). 각 클래스에서 50개의 샘플들을 추출한 후(검증 데이터셋에서), 각 단계별 마지막 SE 블록의 평균적인 activations을 계산하였다. 

 

위 데이터에서 excitation의 역할에 관한 3가지 정보를 관측할 수 있다. 초기 레이어에서 다른 클래스 별 분포는 비슷하다.(SE_2_3) . 초기 레이어서는 다른 클래스들이 중요한 feature 채널들을 공유하는 것으로 보인다. 깊은 층에서는, 클래스 별로 feature들에 대한 해석이 달라지는 것을 확인할 수 있다. (SE_4_6, SE_5_1) 초기 레이어들의 feature들은 좀 더 일반적이고, 후기 레이어들은 개별성이 있음을 알 수 있다. 다음으로, 네트워크 마지막 stage에서 saturation이 일어나는 것을 확인할 수 있다.(SE_5_2) 대부분의 activation이 1로 수렴하는데, 이곳에서 SE operator는 identitiy operator로 작동한다. SE_5_3에서는 비슷한 패턴이 여러 클래스들에 걸쳐 나타나는데, 이는 곧 SE_5_2와 SE_5_3이 feature 재보정에 필요하지 않다는 것을 의미한다. 마지막으로, 각 activation들의 평균과 표준편차에 대하여 알아보자.

초기 레이어서는 일정한 트렌드가 확인됨을 볼 수 있고, 후기 레이어서는 각 클래스 별로 representation이 상당히 다양함을 확인할 수 있다.(feature 재보정에 도움이 된다) 결론적으로, SE 블록들은 instance-specific 반응을 만들기 때문에 다른 구조에 여러 층에서 활용될 수 있다.(class-specific 과정을 도울 수 있다)

7. 결론

SE 블록은 동적인 채널 별 feature 재보정이 가능하게 함으로 representation power을 증가시키는 방법이다. 또한 SE 블록들은 실제 사용되는 다양한 모델들에 더하여 사용이 가능한 장점이 있다. 채널별 feature 의존성을 파악하는 것이 가능하며, 모델 압축등에도 사용가능할 것으로 예상된다.

'컴퓨터비전(CV)' 카테고리의 다른 글

Swin Transformer (2021) : 새로운 CV 모델의 시작  (0) 2022.03.06
Mask R-CNN(2017)  (0) 2021.06.06
Dense Net(2018)논문 정리  (0) 2021.04.16
Comments