[논문 정리] ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

논문정보

ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

 

ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

Recently, channel attention mechanism has demonstrated to offer great potential in improving the performance of deep convolutional neural networks (CNNs). However, most existing methods dedicate to developing more sophisticated attention modules for achiev

arxiv.org


논문정리

Abstract

최근 채널 어텐션(channel attention) 구조를 통해 심층 컨볼루션 신경망의 성능을 개선할 수 있음이 보여졌다.

하지만 기존의 방법은 주로 복잡한 어텐션 모듈을 개발하여 성능을 높였는데 이러면 불가피하게 모델의 복잡도가 높아지게 된다.

성능↔복잡도 간의 trade-off 문제를 해결하기 위해 본 논문에서는 Efficient Channel Attention (ECA) module을 제안하여 소수의 파라미터만 가지고 성능 향상을 이끌어내었다.

SENet의 채널 어텐션 모듈을 분석함으로써, 차원 축소를 피하는 것이 채널 어텐션을 학습하는 데 중요하고, 적절한 cross-channel interaction이 모델의 복잡도를 상당히 줄이면서 성능을 보전할 수 있다는 것을 보여준다.

따라서, 차원 축소가 없는 local cross-channel interaction 전략을 제안하였고 이는 1D 컨볼루션을 통해 효율적으로 구현할 수 있다.

1D 컨볼루션의 커널 사이즈를 적응적으로 선택하여 local cross-channel interaction의 적용 범위를 결정하는 방법을 개발

Fig 1. 다양한 어텐션 모듈 비교

Introduction

심층 컨볼루션 신경망 은 컴퓨터 비전 영역에서 널리 쓰이며 다양한 분야에서 발전해왔다.

image classification, object detection, semantic segmentation

획기적이었던 AlexNet을 시작으로 이 심층 CNN의 성능을 향상시키기 위한 연구가 계속해서 이뤄져 왔다.

 

최근에는 채널 어텐션을 컨볼루션 블럭에 통합하는 방식이 많은 관심을 끌었고 성능 개선을 이뤄냈다.

그 중 대표적인 방법은 각 컨볼루션 블럭에 대해 채널 어텐션을 학습하는 squeeze-and-excitation networks (SENet)이며 다양한 심층 CNN 구조의 성능을 개선시켰다.

SENet의 sqeeze(i.e. feature aggregation)와 excitation(i.e., feature recalibration) 설정을 따라서, 몇몇 연구들이 SE block을 개선하기 위해서 더 복잡한 채널별 종속성을 포착하거나 별도의 공간 어텐션을 추가하여 결합하였다.

이런 방식으로 더 높은 정확도를 얻긴 했지만, 모델의 복잡도가 높아지고 연산 부담이 늘어나게 되었다.

 

모델의 복잡도를 늘리면서 성능 개선을 했던 위의 언급된 방법과는 다르게, 본 논문에서는 해당 질문에 초점을 맞춘다.

 

Can one learn effective channel attention in a more efficient way?

 

위 질문에 답하기 위해 SENet의 채널 어텐션 모듈을 다시 살펴본다.

특히, 입력 특징이 주어지면 SE 블럭은 각 채널에 독립적으로 전역 평균 풀링(global average pooling)을 적용한다.

그 후, 비선형성을 갖는 2개의 FC(fully-connected)층과 시그모이드 함수로 채널 가중치를 생성한다.

2개의 FC 층으로 비선형 cross-channel interaction을 포착하는데, 모델의 복잡도를 낮추기 위해 차원축소가 포함된다.

 

이는 이후의 채널 어텐션 모듈에서도 널리 사용된 방법이지만, 경험적 연구에 따르면 차원 감소로 인해 채널 어텐션 예측에 부작용이 야기되고, 모든 채널에서 종속성을 포착하는 것은 비효율적이고 불필요한 작업이다.

 

본 논문은 심층 CNN을 위한 Efficient Channel Attention(ECA) 모듈을 제안하여 차원 축소를 버리고 cross-channel interaction을 효과적인 방법으로 포착해낸다.

Fig 2. ECA 모듈 다이어그램

 

그림 2에 표기된 것처럼  ECA가 차원 축소 없이 채널별 전역평균풀링을 거친 후, 모든 채널과 $k$개의 이웃을 고려하여 local cross-channel interaction을 포착한다.

효과와 효용성이 보장된 방법이다.

크기 $k$의 빠른 1D 컨볼루션으로 ECA를 효과적으로 구현할 수 있다.

커널 사이즈인 $k$는 local cross-channel interaction의 적용 범위를 나타낸다.
interaction의 적용범위가 채널 차원에 비례
i.e., 한 채널의 어텐션 예측에 몇개의 이웃이 참여하는지

 

교차검증하여 $k$를 결정하는 방법보다는 $k$를 적응적으로 결정하는 방법을 개발하였다.

그림 1과 표 3에서 확인할 수 있듯, ECA module을 활용한 심층 CNN은 백본모델과는 달리 파라미터를 조금만 추가하거나 무시할  수 있는 정도의 연산을 추가하면서 눈에 띄는 성능 향상을 보여주었다.

ResNet-50의 파라미터 수와 GFLOPs는 각각 24.37M, 3.86이며, ECA_Net50의 추가적인 파라미터/연산은 80, 4.7$e^{-4}$이다. 게다가, ECA-Net50이 ResNet-50에 비해 Top-1정확도 측면에서 2.28% 향상되었다.

 

표 1. 다른 어텐션 모듈과의 비교

표 1은 채널 차원 축소 (DR),  cross-channel interaction, lightweight(SE에 비해 적은 파라미터 수를 가지는 경우)의 측면에서 다른 어텐션 모듈과 비교한 결과를 보여준다.

이를 통해 ECA 모듈이 채널 차원 축소를 거치지 않고 채널 어텐션을 효과적으로 학습하고 동시에 매우 가벼운 방식으로 cross-channel interaction을 포착할 수 있다.

이를 평가하기 위해 ImageNet-1K와 MS COCO 데이터셋으로 실험을 진행하였다.

 

요약하면 다음과 같다.

  1. SE block을 분석하여 차원 감소를 피하는 전략
  2. ECA(Efficient Channel Attention)을 제안하여 심층 CNN의 매우 가벼운 채널 어텐션 모듈을 개발하였고, 모델 복잡도를 극소량 증가시키면서 확실한 성능개선
  3. ImageNet-1K와 MS COCO의 대한 실험 결과로 본 연구방법을 통해 SOTA와 경쟁력있는 성능을 선보이면서 매우 낮은 모델 복잡도를 선보임을 입증

 

Related Work

일단 시간상 읽기만 하고 skip

(중요한 내용은 없었음)

 

Proposed Method

<Revisiting Channel Attention in SE Blcok>

SE-Net

$\mathcal{X} \in \mathbb{R}^{W\times H\times C}$을 컨볼루션 블럭의 출력값으로 표기 (위 그림과는 별개)

W : width
H : height
C : channel dimension (number of filters)

SE block의 채널 가중치는 다음과 같이 표기

 

식 1

이때 $\mathcal{g(X)} = \frac{1}{WH} \sum_{i=1,j=1}^{W,H} \mathcal{X}_{ij}$로 채널별 전역 평균 풀링(GAP)이고 $\sigma$는 시그모이드 함수

이제 $y = \mathcal{g(X)}$라 하자.

식 2

모델 복잡도가 높아지지 않도록 $W_1, W_2$의 크기는 각각 $C \times (\frac{C}{r}), (\frac{C}{r}) \times C$이다.

$f_{\{W_1, W_2\}}$가 채널 어텐션의 모든 파라미터를 포함한다.

 

식 2의 차원 축소가 모델 복잡도를 낮출 수 있지만 이는 채널과 가중치 간의 직접적인 대응을 떨어트린다.

단일 FC 레이어가 모든 채널간 선형결합을 통해 각 채널의 가중치를 예측한다면
식2는 채널의 특징을 저차원공간에 투과한 후에 다시 매핑하기 때문에 채널과 가중치 간의 대응관계가 간접적으로 바뀜

 

SE-Net은 크게 squeeze단계와 excitation 단계로 나뉘게 되는데

식1에서보면 $g(\cdot)$를 squeeze 단계, $f(\cdot)$를 excitation 단계로 보는 것 같다.

  • Squeeze : Global information embedding을 통해 각 채널들의 중요한 정보만을 추출
  • Excitation : Adaptive Recalibration 즉, Squeeze 연산을 통해 압축된 정보들의 채널 간 의존성을 계산, 두번의 FC 레이어와 비선형 활성화 함수를 통해 중요한 특징 부분을 강조한다. 이 과정에서 차원 감소 발생

<Efficient Channel Attention (ECA) Module>

Avoiding Dimensioanlity Reduction

위에서 언급했 듯이, 식2의 차원 축소가 채널과 그 가중치 간의 대응 관계를 간접적이게 된다.

그 효과를 확인하기 위해 기존의 CE 블럭과 3개의 변이 블록 (i.e, SE-Var1, SE-Var2, SE-Var3)을 비교하는데 모두 차원 축소를 거치지 않는다.

표 2. 변이 모듈과의 비교 (백본 : ResNet-50)

표 2에 나타난 대로, 파라미터가 없는 SE-Var1이 기존 네트워크보다 우수하며, 이는 채널 어텐션이 deep CNN의 성능을 개선했음을 보여준다

여기서 말하는 original이라는 것은 ResNet50만 쓰인 바닐라모델을 의미하는건가?
왜냐면 original SE를 의미하는 거라면 성능이 떨어지기 때문,,

SE-Var2는 각 채널의 가중치를 독립적으로 학습하였다. 소량의 파라미터만을 가지고 SE 블럭의 성능을 넘었다.

이를 통해 채널과 가중치는 직접적인 대응관계를 가져야 하고 차원 축소를 피하는 것이 비선형채널의 종속성보다 중요하다는 것을 알 수 있다.

게다가, 하나의 FC 레이어를 통과하는 SE-Var3은 2개의 FC를 통과하여 차원을 줄이는 기존의 SE 블럭보다 성능이 높다.

따라서 모든 실험결과에서 차원축소를 피하는 것이 채널어텐션을 효과적으로 학습하는데 도움이 된다는 것을 확인하였다.

ECA 모듈은 차원축소 없이 개발한다.

 

Local Cross-Channel Interaction

식 3

Sqeeze 단계를 거쳐 축약된 특징 $\mathbf{y}\in \mathbb{R}^C$에 대해서 채널 어텐션은 식3을 통해 학습한다.

이때 $\mathbf{W}$은 $C\times C$개의 파라미터를 갖는 행렬이다.

식 4

식 4는 Se-Var2, Se-Var3의 파라미터(가중치)

SE-Var2의 가중치 $\mathbf{W}_{var2}$는 C개의 파라미터를 갖는 대각행렬이고 SE-Var3의 가중치 $\mathbf{W}_{var3}$는 $C\times C$개의 파라미터를 갖는 full matrix

가장 차이가 있는 부분은 SE-Var3은 채널간 어텐션을 고려한다는 것이고 SE-Var2은 아니라는 점

가중치 요소 안에 SE-Var2은 대각행렬 이므로 $w^{1,1}$처럼 자기 자신과의 가중치 뿐임
SE-Var3은 $w^{1,C}$등 다른 채널과의 가중치도 고려

결과적으로는 SE-Var3의 성능이 더 낫다는 점에 있어서 cross-channel interaction이 채널 어텐션을 학습하는 데 도움이 된다.

하지만 SE-Var3의 경우 파라미터가 너무 많기 때문에 채널의 수가 많으면 모델 복잡도가 매우 높아지게 된다.

 

식 5

SE-Var2와 SE-Var3 사이에서 절충안을 찾기 위해 $\mathbf{W}_{var2}$를 블록 대각 행렬로 확장한다.

블록 대각 행렬 (block diagonal matrix)
일반적인 대각 행렬은 대각선을 따라 단일 요소들이 있다면 블록 대각선에 작은 행렬들이 포함된 행렬이다.
이때 각 행렬 요소들은 서로 크기가 달라도 된다.

 

식 5은 채널을 G개의 그룹으로 분할하여 각각 $C/G$채널을 가지며, 각 그룹이 독립적으로 채널 어텐션을 학습하게 된다.

local하게 cross-channel interaction 학습

따라서 파라미터 수는 $C^2/G$개가 된다.

 

컨볼루션 측면에서 보면 SE-Var2, SE-Var3식5는 각각 depth-wise separable convolution, FC 레이어, group convolution 으로 간주할 수 있다.

 

그룹 컨볼루션을 수행하는 SE 블럭(SE-GC)의 경우 $\sigma(GC_G(\mathbf{y}) = \sigma(\mathbf{W}_G\mathbf{y})$로 나타낼 수 있다.

하지만, 과도한 그룹 컨볼루션은 메모리 접근 비용을 증가시키기 때문에 연산 효율성이 떨어트린다.

표 2에서도 SE-GC를 여러 그룹에 대해서 실험하였을 때 SE-Var2보다 성능이 나아지지 않았다.

≫ local cross-channel interaction을 포착하는 것이 효과가 없다.

SE-GC가 다른 그룹간의 종속성을 완전히 버려버리기 때문

 

본 논문에선 다른 방법을 통해 lcoal cross-channel interaction을 포착하여 효과와 효율을 모두 높인다.

구체적으로 보자면, 채널 어텐션을 학습하기 위해 띠행렬 $\mathbf{W}_k$를 도입하였다.

띠 행렬 (band amtrix)
모든 0이 아닌 성분이 주 대각선 주변에 집중된 희소 행렬

식 6

이 띠 행렬 $\mathbf{W}_k$는 $k \times C$개의 파라미터를 가지며 식5에서보다 현저히 적다.

게다가 식6에서는 각기 다른 그룹들이 독립적이지 않다.

 

식2에서 비교해보면 식6을 사용한 ECA-NS가 식 5를 사용한 SE-GC의 성능을 능가한다.

식6에서 $y_i$의 가중치는 $y_i$와 $k$개의 이웃간의 상호작용만을 고려하여 계산한다.

 

식 7

이때 $\Omega_i^k$는 $y_i$주변 k개의 인접한 채널 집합을 나타낸다.

 

여기서 효율성을 높이기 위해 모든 채널이 같은 학습파라미터를 공유하도록 한다.

식 8

이 방법은 $k$크기의 커널을 가진 1D 컨볼루션에 의해 쉽게 구현될 수 있다. 

식 9

$C1D$는 1D 컨볼루션을 나타낸다.

식 9에 사용된 방법을 efficient channel attention(ECA) 모듈이라 하고, 이는 $k$개의 파라미터만을 포함한다.

표2에서 보면 $k=3$인 ECA 모듈이 SE-var3와 비슷한 성능을 보이며 모델 복잡도는 훨씬 작다.

즉,local cross-channel interaction을 통해 효과와 효율을 모두 잡은 셈

 

Coverage of Local Cross-Channel Attention

ECA 모듈(식 9)가 local cross-channel interaction을 적절하게 포착할 수 있도록 interaction의 적용 범위를 결정해야 함

1D 컨볼루션의 커널 사이즈 $k$

최적의 범위는 다양한 CNN 구조의 서로 다른 채널 수에 따라 직접 계산하여 찾아내는 것이겠지만

이를 위해 교차검증을 시행하면 많은 연산자원을 소모하게 된다.

 

group convolutoin은 고정된 수의 그룹에 대해 고차원(저차원) 채널이 넓은(좁은) 범위의 컨볼루션을 적용한다.

즉, interaction의 적용 범위 ($k$)는 채널 차원 C에 비례하도록 하자.

 

$k$와 $C$사이의 매핑함수를 $\phi$라고 하자.

식 10

가장 간단한 매핑함수는 선형 함수로 볼 수 있지만 선형함수로 관계를 표현하기에는 한계가 있다.

$\phi(k) = \gamma * k-b$

 

채널 차원 $C$ (필터 수)를 2의 제곱수로 설정하는 것이 일반적

따라서 선형함수 $\phi(k) = \gamma * k-b$를 다음과 같이 비선형적으로 확장한다.

식 11

이를 C에 대한 함수로 바꾸면 $k$를 적응적으로 결정할 수 있다.

식 12

$|t|_{odd}$ : t의 가장 가까운 홀수값

본 논문에선 실험을 통해 $\gamma,b$를 각각 2,1로 설정하였다.

$\psi$ 로 비선형 매핑을 거치면 고차원의 채널은 더 넓은 적용범위를 가지며 저차원 채널은 더 적은 범위를 가진다.

 

<ECA Module for Deep CNNs>

그림 2는 ECA 모듈의 전반적인 개요를 보여준다.

컨볼루션 특징들을 GAP을 거쳐 차원 축소 없이 집약시킨 후 ECA 모듈이 1D 컨볼루션을 수행하여 시그모이드 함수를 거쳐 채널 어텐션을 학습한다.

심층 CNN에 ECA를 적용하기 위해 SE 블록을 SE-Net의 동일한 구성을 따르는 방식으로 ECA 모듈로 교체한다.

Fig 3. Pytorch로 구현한 ECA 모듈

그림 3은 ECA를 Pytorch로 구현한 코드를 보여준다.

 

Experiments

skip

 

Conclusion

본 논문에서는 효과적인 채널 어텐션을 학습하여 심층 CNN의 모델 복잡도를 낮추었다.

이를 위해 efficient channel attention (ECA) 모듈을 제안하여 1D convolution을 통해 채널 어텐션을 수행하며, 이때 비선형 매핑함수를 통해 적응적으로 커널크기 $k$를 결정하여 사용한다.

여러 실험을 통해 ECA는 ResNets이나 lightweight MobileNetV2을 포함한 심층 CNN 구조의 성능을 개선할 수 있는 초경량 plug-and-ply 블럭임을 입증하였다.

게다가, ECA-Net은 객체탐지나 객체분할 작업에서 좋은 일반화 능력을 보여주었다.

후에는, ECA 모듈을 ResNeXt나 Inception같이 더 많은 CNN 구조에 적용하고 공간 어텐션 모듈과 ECA를 통합할 수 있도록 더 조사할 것이다.