[PR] ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
Updated:
1. Introduction
A. Prior problems
- 기존에는 SENet을 기반으로 channel-wise dependencies를 구했다 (channel attention)
- 하지만 SEBlock의 MLP 구조로 인해 모델 복잡도가 너무 크다.
-
또한 MLP에서 차원 축소가 되는 과정에서 side-effect가 존재한다. ($C$ → $C/r$ 로 감소)
- 조금 더 효율적인 방법으로 channel attention을 학습할 수 있을까?
B. Contribution
(1) We dissect the SE block and empirically demonstrate avoiding dimensionality reduction and appropriate cross-channel interaction are important to learn effective and efficient channel attention, respectively
SENet의 SE block을 분석하고, 차원 축소하지 않는 것과 적절한 채널 간 interaction의 중요성을 보여준다.
(2) Based on above analysis, we make an attempt to develop an extremely lightweight channel attention module for deep CNNs by proposing an Efficient Channel Attention (ECA), which increases little model complexity while bringing clear improvement.
좀 더 가벼운 channel attention 모듈 (ECA)를 통해 모델 복잡도는 조금 상승하지만 이에 반해 확실한 성능 향상을 얻을 수 있다.
(3) The experimental results on ImageNet-1K and MS COCO demonstrate our method has lower model complexity than state-of-the-arts while achieving very competitive performance
SOTA 논문들과 비교해서 더 적은 복잡도를 갖으면서 더 나은 성능을 얻었다.
2. Method
A. Revisiting Channel Attention in SE Block
(1)식은 SE Block을 수식으로 표현한 것이다. $X$는 input feature를, $g$ 함수는 global average pooling을 나타낸다. $g(X)$ 는 길이가 $C$ (채널 수)인 벡터가 될 것이다. 이를 fully connected layer, $f(x)$ 의 입력으로 넣는다. $y = g(x)$ 일 때, FC layer의 구조는 다음과 같다 .
2개의 layer로 구성되어 있으며 $W_1$ 과 $W_2$ 는 $C * C/r$ , $C/r * C$ 의 크기를 갖는다. 저자는 $W_2$ 로 갈 때 $r$ 만큼의 비율로 축소되는 부분에서 channel과 weight간의 “direct correspondence”, 즉 직접적인 연결성이 깨지기 때문에 문제가 있다고 주장한다.
B. Efficient Channel Attention (ECA) Module
차원 축소 과정에서 문제가 있음을 실험을 통해 증명한다. 또한 cross-channel interaction의 효과도 보여준다.
-
Avoiding Dimensionality Reduction
Original SE block과 SE-Var1,2,3를 비교하며 차원 축소에 따른 성능 변화를 분석한다.
SE-Var1을 보면 단순히 GAP의 출력인 $y$ 에 activation을 주었음에도 불구하고 original 모델(vanilla)보다 성능이 향상되었다. 따라서 channel attention은 효과가 있다고 볼 수 있다.
SE-Var2는 y의 각 요소별로 대응하는 길이가 $C$ 인 $w$ 를 사용하는 방법으로, original SE와 비교했을 때 성능이 소폭 상능한 것을 알 수 있다. 이를 통해 저자는 weight와 channel간 direct한 연결성이 dimensionality reduction이 발생하여 indirect한 연결이 될 수 밖에 없는 SE 구조보다 성능이 좋은 이유라고 (가볍게) 주장한다.
SE-Var3은 single FC layer를 사용한 방법이다. Input 길이 $C$ 와 이에 대한 길이가 $C$ 인 가중치 벡터 w를 fully connect하게 되면 총 $C^2$ 개의 파라미터가 존재하게 된다. 단일 layer를 사용했지만 두 개의 차원 축소를 포함한 FC layer로 이루어진 SE 보다 성능이 향상된 것을 알 수 있다.
위 실험들을 통해 저자는 차원 축소를 하지 않는 것이 더 효과적으로 channel attention을 학습할 수 있다고 주장하며 차원 축소를 제거한 ECA 모듈을 제안한다.
-
Local Cross-Channel Interaction
(4)는 SE-Var2와 3에 해당하는 weight matrix를 나타낸 것이다. $W_{var2}$ 의 경우 input feature의 채널에 해당하는 weight value가 하나씩 존재하기 때문에 총 $C$ 개의 파라미터가 존재한다. 반면 $W_{var3}$ 의 경우에는 모든 채널을 고려하기 때문에 (cross-channel interaction) 총 $C^2$ 개의 파라미터를 갖는다.
두 방법의 차이는 table2에 나와있듯이 cross-channel interaction을 고려한 $W_{var3}$ 가 그렇지 않은 $W_{var2}$ 보다 성능이 높다. 즉 cross-channel interaction이 channel attention을 학습하는데 효과적이라는 것을 알 수 있다. 하지만 파라미터 수가 너무 많기 때문에 모델의 복잡도가 증가하게 된다.
따라서 $W_{var2}$ 와 $W_{var3}$ 를 적절하게 섞은 block diagonal matrix 형태 (5)를 W로 사용해보자. 이는 전체 $C$개의 채널을 $G$개의 group으로 나누어 각 그룹마다 $W_{var3}$ 의 형태를 갖는 방법이다. 즉, 각 그룹은 $C^2/G^2$ 개의 채널에 대한 local cross-channel interaction을 나타내고, 이러한 $G$ 개의 그룹들은 $W_{var2}$ 형태를 갖는다. 하나의 그룹은 $C^2/G^2$ 개의 파라미터를 갖고, 그룹은 $G$ 개 이므로 (5)는 총 $C^2/G$ 개의 파라미터를 갖는다.
저자는 $W_{var2}$, $W_{var3}$ , 그리고 (5)를 각각 depth-wise separable convolution, a FC layer 그리고 group convolution의 관점으로 해석할 수 있다고 말한다. 이 부분에서 $W_{var2}$ 를 depth-wise separable convolution으로 해석한 것이 잘 이해가 가지 않았다. 각 채널의 대표값 $y_i$에 대응되는 $w_i$ 값들이 다른 채널과 독립적으로 존재하고, 이후에도 섞이는 연산이 없는데 depth-wise가 아닌 depth-wise separable으로 표현했을까? 좀 더 고민이 필요할 것 같다. 아무튼 $W_{var3}$ 는 모든 weight와 $y$가 fully connected되어있기 때문에 FC layer로 볼 수 있고, 마지막으로 (5)는 그룹으로 묶어서 연산을 수행했기 때문에 group convolution으로 볼 수 있다고 주장하는 것 같다. 저자는 이러한 group convolution SE block (SE-GC)을 $\sigma(GC_G(y)) = \sigma(W_Gy)$ 로 표현한다.
하지만 선행연구에서 과도한 group convolution 연산은 메모리 접근량을 증가시키고 결국 연산 효율을 떨어뜨리는 것을 밝혀냈다. 또한 위 table 2에서 보이듯이, SE-GC의 group 크기를 변화시키며 다양한 실험을 했지만 $W_{var2}$ 를 사용하는 것(SE-GC)에 비해 별다른 차이를 보이지 않았다. 즉 이 방법은 local cross-channel interaction을 효과적으로 학습하지 못했다는 것을 보여주게 된다.
따라서 저자는 효과적이고 효율적으로 local cross-channel interaction을 학습하기 위한 다음과 같은 band matrix $W_k$ 을 제안한다.
$W_k$ 는 각 채널 별로 $k$ 개의 neighbors 간 interaction을 고려한다. 따라서 총 $C * k$ 개의 파라미터를 포함하며 이는 (5)의 $W_G$보다 파라미터 수가 적다. 또한 $W_G$ 에서는 그룹끼리는 고려되지 않는 반면 $W_k$ 에서는 그룹 간에도 interaction이 고려된다 (애초에 그룹 개념이 사라졌다). 저자는 $W_k$ 를 사용한 방법을 ECA-NS라고 정의하였다. Table 2의 결과를 보면 ECA-NS가 SE-GC보다 성능이 높은 것을 알 수 있다. ECA-NS에서 $y_i$ 의 가중치는 아래와 같이 수식으로 표현할 수 있다.
이는 $y_i$ 의 $k$ 개의 이웃 채널을 고려한 local cross-channel interaction을 고려한 것이다. 즉 $i$ 번째 채널과 그 이웃들끼리의 가중 합으로 볼 수 있다.
더 효율적은 방법으로는 모든 채널이 같은 파라미터, 즉 $w$ 를 공유하는 것이다. 모든 채널이 $k$ 개의 $w$를 공유하면 아래와 같이 나타낼 수 있다.
위 방법은 kernel size가 $k$ 인 convolution 연산을 통해 아래와 같이 표현할 수 있다.
위 (9)에 해당하는 방법을 저자는 efficient channel attention(ECA) module이라 명명하였다. 위 방법은 오직 $k$ 개의 학습 파라미터를 갖는다. Table 2에서 보이듯이, $k = 3$ 인 경우 SE-Var3와 비슷한 성능을 보여주며 동시에 더 낮은 모델 복잡도를 갖게 된다. 따라서 적절한 local cross-channel interaction이 학습되었다고 볼 수 있다.
-
Coverage of Local Cross-Channel Interaction
위에서 ECA module의 성능은 잘 증명하였다. 하지만 $k$ 의 값, 즉 coverage of interaction을 어떻게 정해야 할까?
저자는 manual하게 이를 cross validation을 통해 구할 수 있지만, 이는 많은 연산 자원을 소비하기 때문에 automatic한 방법을 찾고자 한다. Group convolution을 하게 되면 자동으로 채널 수가 늘어나면 하나의 그룹이 고려하는 채널 수가 증가하고 채널 수가 줄어들면 하나의 그룹에서 고려되는 채널 수가 감소하게 된다. 즉 coverage of interaction은 입력 채널에 비례하게 되고, 잘 적용되어 왔다는 것이 이미 선행 연구에서 많이 보여졌다. 즉 $k$ 와 $C$ 사이의 mapping 함수 $C = \phi(k)$ 가 존재한다고 볼 수 있다.
가장 쉬운 mapping 방법으로는 $\phi(k) = \gamma * k - b$ 와 같은 linear function을 사용하는 것이다. 하지만 이는 mapping 관계를 characterize하기에는 너무 단순한 모델이다. 따라서 저자는 일반적으로 채널 수 $C$ 는 2의 제곱으로 설정하기 때문에 위의 linear function을 확장하여 다음과 같이 non-linear mapping function을 제안한다.
위 mapping을 사용하게 되면 C가 주어졌을 때 coverage range를 나타내는 $k$ 는 아래와 같이 표현 가능하다.
이 때 $\lvert t \rvert_{odd}$ 는 $t$ 에 가장 가까운 홀수를 의미한다. 논문에서 $\gamma$ 와 $b$ 는 각각 2와 1로 설정하여 실험하였다.
C. ECA Module for Deep CNNs
위 그림은 ECA 모듈의 구조를 나타낸다. 입력 tensor를 먼저 GAP를 통해 대표값을 채널별로 추출한 다음, (12)를 통해 $k$ 값을 구한다. 이후 kernel size가 $k$ 인 1$D$ convolution과 이후 sigmoid 함수로 channel attention을 학습한다.
3. Experiments
A. Effect of Kernel Size $(k)$ on ECA Module
Figure 4는 ECA 모듈의 k를 manual하게 설정한 것과 (12)를 통해 adaptive하게 자동으로 설정되는 방법, 그리고 SENet과의 성능 비교를 보여준다. 위 결과를 통해 deep CNNs는 다양한 optimal $k$ 를 갖는다는 것을 알 수 있다 (ECA-Net 101과 ECA-Net 50 비교). 또한 깊은 모델일수록 고정된 $k$ 에 더 민감하게 반응한다. (12)를 통한 adaptive $k$를 사용하는 것이 manual하게 정하는 것보다 성능이 뛰어나는 것을 보여주며 마지막으로 ECA를 사용한 모든 방법이 SENet을 뛰어넘는 성능을 보여주었다.
B. Comparisons Using Different Deep CNNs
다양한 attention 기법들을 4개의 다른 backbone을 사용하여 비교한 것이다. Proposed method가 다른 기법에 비해 높거나 비슷한 성능, 그리고 적은 파라미터 수를 갖는 것을 보여주고 있다.
또한 다른 SOTA Deep CNN model들과 비교한 결과 better or competitive한 성능을 보여준다.
마지막으로 ResNet -18, 34 와 같이 shallow? CNNs에서의 결과 비교가 table 7에 제시되어있다. Table 3에서도 보이듯이 ResNet과 ECA-Net의 파라미터 수가 동일하게 나오는데 이는 ECA-Net이 ResNet 기반에 ECA module을 추가한 것으로, ECA module은 파라미터 수가 $k$ 개로 매우 적어서 차이가 나지 않는 것으로 보인다. 성능 역시 다른 attention 기법들과 비교해서 더 우수한 분류 결과를 보여준다.
Leave a comment