오랜만의 포스팅이다...

읽은 모든 논문에 대해 정리를 하려고 시작했는데..

습관이 덜되고 일에 치이다 보니.. 다시 열심히 해봐야지..

 

 

누군가 이 리뷰에서 잘못된 부분을 발견한다면 또는 글쓴이가 잘못 이해하고 있는 부분이 있다고 생각한다면...

주저 없이 댓글을 남겨 준다면 많은 도움이 될거같다.

 

오늘 리뷰할 논문은 AttendNets이라는 논문으로 DarwinAI 와 Waterloo 대학에서

제안한 내용으로 2020년 9월 archive에 올라왔다.

Title: AttendNets: Tiny Deep Image Recognition Neural Networks for the Edge via Visual Attention Condensers

paper link: https://arxiv.org/pdf/2009.14385.pdf

 

특징 및 Contribution:

1. 단말 기기에서 image recognition을 수행하기 위한 AttendNets이라는 모델을 제안

 

2. 단말 기기란 스마트 폰과 같은 기기를 말하며 제안된 모델은 서버의 도움없이 on-device에서 동작할 수 있는 모델이다.

-> 이를 위해 모델 개발시 low-pricision(정확히 말하자면 8bit pricision)이라는 제한 사항을 두었다.

 

3. Visual Attendtion Condenser(VAC)라는 모듈을 사용하는데 이 모듈은 spatial-channel selective attention을 향상시킨 attention condenser이다. (attention condenser라는 개념이 햇갈렸는데 아래에 이해한대로 열심히 정리해놨다.)

 

4. 이 모델은 machine-driven design 되었는데 내가 이해한 바가 맞다면 AutoML로 모델 개발했다는 말이다.

 

구조:

이 모델의 특징적 구조는 visual attention condenser라는 모듈인데 self attention machanism을 사용한 모듈이다.

 

1. VAC

Visual Attention condenser(VAC) 구조

위 그림은 이 논문에서 주로 사용 되는 self- attention을 위한 구조이다.

이전 까지 타 논문에서 제안되고 사용된 self-attention는 주로 network의 accuracy 향상을 위해 channel-wise attention과 local attention을 분리하고 합쳤던데 반해 이 논문에서는 self-attention machanism을 network 의 효율성 향상을 위한 방향으로 탐구했다.

 

논문의 필자가 주장하는 바에 따르면 제안된 VAC는 낮은 차원수(reduced dimensionality)의 통합된 embedding을 학습하고 생성 할 수 있는데 생성된 embedding은 channel공간과 spatial 공간의 activation관계를 잘 나타내는 특징을 가진 다고 한다.

 

VAC는 다음과 같은 하위 컴포넌트로 구성되어있다.

 

1. Down mixing layer : V'=M(V)

역할: channel reduction

구현 method: point wise convolution

 

2. Condensation layer: Q=C(V')

역할: 공간도메인에서의 차원 축소(featurea의size축소라고 해석해도 될거 같다) 및 강한 activation결과를 가지는 관심영역(ROI)간의 거리 축소를 통해 spatial attention 응집

구현 method: Max pooling

 

3. Embedding structure: K=E(Q)

역할: spatial-channel activation 관계의 특징을 내포하는 embedding K 생성

->spatial-channel activation relationship을 characterzing했다고 하는 이유는 down-mixing layer에서 channel 간의

activation 관계를 모델링 하고 condensation layer에서 spatial domain의 activation관계를 모델링 했기 때문인거 같다.

구현 method: grouped convolution, point wise convolution

 

4. Expansion layer: A=X(K)

역할 : V'에서 관심 영역을 boosting 하기 위한 self-attention value 생성을 위한 spatial domain dimensionality 확대

구현 method: unpooling

 

5. Selective attention mechanism: V''=F(V', A,S), where S is scale factor

역할: selective attention

구현 method: element wise multiplication

 

6. Upmixing layer: V'''=M'(V'')

역할: VAC 모듈의 output이 input V와 같은 channel dimensionality를 같게 하기 위한 channel dimensionality 확대

구현 method: point wise convolution

 

이를 종합해 보면 제안된 VAC모듈의 코드 형태는 다음과 같다고 생각해 볼수 있다.

(어디까지나 수도 코드이다)

down_mixing = torch.nn.Conv2d(in_ch, out_ch,kernel_size=(1,1)) # in_ch > out_ch
condensation_layer =torch.nn.MaxPool2d()
embedding_structure = torch.nn.Sequential(torch.nn.Conv2d(out_ch, out_ch2, kernel_size=(k,k), groups=n),\
        torch.nn.Conv2d(out_ch2, out_ch3, kernel_size=(1,1))) # where k>1, n>1
expansion_layer = torch.nn.MaxUnpool2d()
upmixing_layer = torch.nn.Conv2d(out_ch3, out_ch4, kernel_size=(1,1)) #where out_ch4> out_ch3

V' = down_mixing(V)
Q = condensation_layer(V')
K = embedding_structure(Q)
A = expansion_layer(K)
V'' =V'*A*S #where S is scale factor
V''' = upmixing_layer(V'')

 

2. Machine-driven Design

논문의 실험에 사용된 모델 구조는 식을 통해 machine-driven된 구조이다.

간단하게 생각하자면 디자인 하고자 하는 모델의 제한사항을 정의한 하고 그 제한 사항을 만족하는 모델을 iterative solving process같은 방식으로 찾는 것이다.

 

식에서 G(s)는 모델의 생성자이다. 생성된 모델 중 성능평가 함수 U()를 최대화 하면서 동작조건 $l_r(G)=1$ 을 만족하는 모델이 찾고자 하는 모델이다.

 

$l_r(G)$은 생성된 모델 G가 아래 두 조건을 만족하는지 판단한다.

1. $imagenet_{50}$에 대해 top-1 validation accuracy 가 71% 크거나 같다.

2. 8-bit weight pricision

 

본 논문에서는 prototype 모델에 대해 아래와 같은 기본적인 정의만 한 상태에서 구체적인 모델의 디자인은 위 수식을 통해 생성한다.

1. input channel=3

2. output logits은 average pooling, fully connected, softmax를 순서대로 거쳐 생성한다.

 

 

이렇게 생성된 모델은 아래와 같은 모습이다.

AttendNets achitecture-각 모듈을 나타내는 사각형 심볼안의 숫자는 각 layer의 output channel수를 의미하고 VAC 심볼 안의 숫자는 각각 down-mixing layer, first and second layer of embedding structure, up-mixing layer의 output channel 수를 의미한다. PEPE 모듈의 심볼안에 있는 숫자들은 각각 first projection layer, first expansion layer, second projection layer, second expansion layer의 output channel 수이다.

AttendNet-A와 B에서 공통적으로 보이는 특징은 VAC(visual attention condenser)모듈이 모델의 초반부에 집중적으로 사용되고 PEPE(projection-expansion-projection-expansion)모듈이 모델 후반부에 집중적으로 사용된다는 것이다.

PEPE모듈은 machine-driven exploration을 통해 발견한 구조이다.

 

VAC모듈이 모델 초반부에 많이 사용되는 것은 visual selective attention이 low-mid level visual feature extraction 단계에서 중요한 역할을 한다고 해석 할 수 있다.

 

AttendNets-A와 B의 구조적 차이는 효율성과 정확성의 균형을 이루며 특정 테스크를 수행하는데 필요한 모델을 찾기 위한 machine-driven exploration의 결이다.

 

논문의 필자는 이러한 구조적 차이를 macroarchitecture 와 microarchitecture 의 다양성이라고 표현했는데

macroarchitecture의 다양성이란 VAC, PEPE, spatial convolution, point wise convolution등이 서로 다르게 섞여있는 것이고

microarchitecture의 다양성이란VAC, PEPE 모듈 내부의 layer들이 서로 다른 channel수를 갖도록 configuration된것에서 알 수 있다고 주장한다.

 

(의문은 microarchitecture에 대한 주장은 이해가 가는데, macroarchitecture의 다양성에 대한 주장은 이해가 가지 않는다.

논문에서는 At macroarchitecture level, there is a heterogeneous mix of visual attention condensers, PEPE modules, spatial and pointwise convolutions, and fully-connected layers.

라고 표현했는데 모델 구조를 나타낸 그림에서 AttendNets-A와 B 에서 macroarchitecture level의 차이는 보이지 않는다. 내가 잘못 이해 하고 있는 걸까? )

 

결과

위 테이블은 $imageNet_{50}$에 대한 대조군과 제안된 AttendNets 의 실험 결과를 보여준다.

AttendNets은 대조군들에 비해 낮은 8-bits weight pricision과 적은 MACs을 가짐에도 불구하고

대조군들과 유사하거나 높은 Top-1 accuracy를 보여준다.

목표했던 단말에서 on-device로 동작 가능한 model을 제안한다는 주장에 힘을 실어 주는 결과로 보인다.

+ Recent posts