본문 바로가기
Paper

ShuffleNet_V2

by 띰쥬 2020. 9. 29.
728x90
반응형
SMALL

1. Introduction

 ˙ Accuracy뿐만 아니라, computation complexity도 중요한 요소이다.

˙ computation complexity 측정하기위해서 FLOPs를 많이 측정하는데 이것은 간접적인 방식이며 충분하지 않다.

˙ 직접적인 방식으로 speed와 latency(지연시간)을 중요하게 생각해야한다.

˙ 왜냐하면,

    1) MAC(memory access cost)와 같은 요소는  FLOPs를 측정하는데 포함되지 않는다. 그리고 모델의 degree of parallelism이 높을수록 더 빨라지는데 이것은 FLOPs에 포함되지 않는다. (*mac은 group convolution과 같은 특정 연산의 runtime에서 많은 부분을 포함한다.)

   2) 플랫폼에 따라서 같은 FLOPs를 가져도 runtime이 다르다.(* 최신 CUDNN 라이브러리가 3x3 conv에 최적화 되어 있어서 GPU에서 tensor decompositiondl하는것이 더느리다.)

˙ 위 두가지 observation으로 효과적인 네트워크 설계를 위한 2가지 원칙을 제안한다.

    1) FLOPs보다 speed를 측정해야한다.

    2) target platform에서 측정되어야 한다.

2. Practical Guidelines for Efficient Network Design

G1) Equal channel width minimizes memory access cost(MAC)

    ˙ 1x1이 전체연산에 많은 비중을 차지하기 때문에 1x1의 kernel크기에 따라 연산 속도에 어떤 영향을 끼치는지 알아본다.

    ˙ the number of input channel : c1 / the number of input channel : c2

    ˙ 1x1의 FLOPs는 B=hwc1c2, MAC =hw(c1+c2)+c1c2

      → 산술기하평균에 의해,

    ˙ 위의 식은 c1과 c2가 같다는 가정하에 나온식이므로, MAC이 작아지려면 c1과 c2가 같아야 한다는 의미과 같다. 이것을 증명한 실험의 결과는 Table1으로 보여주고 있다.

 

G2) Excessive group  convolution increases MAC

    ˙ FLOPs를 많이 줄여주기 때문에 group convolution을 많이 사용해왔다.

    ˙ group convolution은 더 많은 채널을 사용하게 되는데 이러한 점이 MAC을 증가시킨다.

   

    ˙ group convolution의 경우, 위의 식처럼 다시 정의할 수 있고 결론적으로 group이 커질수록 MAC이 증가한다는 것을 알 수 있다.

    ˙ Table 2는 FLOPs를 고정하고 g를 달리하여 실험한것이다. g를 증가시킬수록 속도가 감소한다.

    ˙ 따라서, 본 논문에서는 group number는 target platform과 task에 따라서 group number를 신중하게 선택해야 하며, 단순히 더 많은 채널을 사용하기 위해 큰 group number 사용하기보다 정확도의 증가와 계산의 속도의 중간지점을 잘 찾아야한다.

 

G3) Network fragmentation reduces degree of parallelism

    ˙ fragmented operation : 본 논문에서는 하나의 블록내에서 나눠진 커널들을 의미

    ˙ fragmented structure들은  정확도 개선에는 도움이 되었지만 GPU와 같은 디바이스에는 좋지못한 방안이다.

    ˙ 위의 그림과 같이 각각 다른 정도의 fragmentation을 갖게 설계하여 각 10개씩 쌓아 실험하였다.

    ˙ Table 3가 실험 결과로, GPU상에서 1-fragment보다 4-fragment가 약 3.5배 느리고 2-fragment-parallel보다 4-fragment-parallel이 약 2.5배 느리다.

 

G4) Element-wise operations are non-negligible

    ˙ 특히 GPU 에서  ReLU, AddTensor, AddBias같은 원소적인 요소과 depthwise convolution같은 연산이 작은 FLOPs를 가지지만 큰 MAC을 가진다.

˙ ReLU와 short-cut 연산이 있는것과 없는것을 비교했을때 GPU, CPU 모두 약 20프로 속도가 증가하였다.

 

3. Architecture

 

 

˙ ShuffleNet_v2는 group convolution 대신 'channel split'이라는 개념을 도입한다.

˙ (c)는 설계한 shuffle unit으로, 입력이 들어오면 채널들을 두개만으로 나누고(G3), 하나의 갈래는 입력과 출력이 같은 연산을 수행한다(G1). 이전의 버전과 달리 1x1 conv는 이미 channel split을 했기 때문에 group convolution을 수행하지 않는다(G2). 하나의 branch에서만 element-wise operation을 수행하도록 한다(G4).

 

 

 

 

 

 

˙ (d)는 spatial downsampling을 위해 설계한 unit으로, channel split이 없어 출력이 두배가 된다.

 

 

 

 

 

 

    - Analysis of Network Accuracy-

    ˙ShuffleNet_V2 is not only efficient, but also accurate.

    ˙ 1) 각 블록에서의 높은 효율성이 더많은 feature channel과 network capacity를 사용할 수 있게 하기 때문이다.

    ˙ 2) (c)의 그림처럼 채널의 절반은 어떠한 연산없이 다음 블록에 합쳐지게되는데 이것은 일종의 feature reuse라고 볼 수 있기 때문이다.

˙ 왼쪽 그래프(b)를 보면 ShuffleNet_v2에서 각 레이어가 얼마나 서로 영향을 주는 지 보여준다. 결론적으로 2개의 블록 정도까지는 영향을 주지만 그외에 거리가 먼  블록에는 영향을 주지 않는다는 것을 알 수 있다.

728x90
반응형
LIST

'Paper' 카테고리의 다른 글

ShuffleNet_V1  (0) 2020.09.24