본문 바로가기
논문리뷰

ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design (CVPR 2018)

by Park Hyun Kook 2020. 6. 4.

ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design (CVPR 2018)

  Authors:  Ningning MaXiangyu ZhangHai-Tao ZhengJian Sun

 

- 본 논문에서는 현재까지 뉴럴 네트워크들은 연산량의 효율에 초점을 두고 efficient Network 개발하고 있지만, 실제로 시간당 영상 처리나 속도를 비교했을 그러한 계산 연산량이 실제 처리 속도와 결과가 다르다는 것에 초점을 두었다. 이러한 차이는 이유는 몇가지 중요한 factor들이 연산량에는 포함되지 않기 때문이다. 예를 들어 memory access cost(메모리를 몇번 반복해서 들어가냐) 플랫폼(GPU,CPU) 등이 계산량에서는 이러한 부분을 포함하지 않는다.

- 따라서 논문에서는 고정된 2개의 플랫폼으로 실험을 하여 효율적이고 성능이 좋은 네트워크를 만들기 위해서 포함되어야 하는 몇가지 분석을 제안한다.

MobileNet V2 와  ShuffleNet V1  동일   플랫폼에서의   메모리   사용량   비교 .

 

- 제안1. 입력으로 들어오는 input feature output feature channel 동일하게 하면 memory cost 최소화할 있다. convolution 할때는 channel balance 맞춰야한다.

- 제안 2. Group convolution 할수록 memory cost 올라가기 때문에 Group convolution 최소화해야 한다.

- 제안 3. Network fragmentation(ex, GoogleNet inception module에서 네트워크 브랜치가 여러 갈래로 갈라지는 , 5x5 convolution 3x3 ,3x3 2개의 convolution으로 나눌때) 많을수록 GPU parallelism 효과를 많이 사용할 없기 때문에 효율적이지 못하다.

- 제안 4. Element-wise operation(ReLU, AddTensor(short connection에서 add) 생각보다 메모리를 차지한다. 연산량으로는 작아보이지만 실제 수행시 시간이 많이 소요된다.

- 이러한 제안 4가지를 토대로 ShuffleNet 분석했을 shuffleNet group convolution, element wise sum, bottleNeck 통한 channel 감소 모든 안좋은 요소를 가지고 있다는 것을 분석하며 새로운 효율적인 ShuffleNet V2 제안했다.

(a),(b) ShuffleNet V1, (c),(d) ShuffleNet V2

 

- (c)에서 확인할수 있듯이 초기 input channel split하여 채널의 절반만 convolution 수행한다. 그리고 수행된 output convolution 지나지 않은 나머지 절반을 concat하고 channel shuffle 진행한다. 이렇게 되면 나머지 절반이 convolution 진행되지 않는다고 생각할수 있지만, 제일 마지막 channel shuffle 통해 섞이고 그다음 shufflenet unit에서 다시 절반으로 나눠지며 연산이 이루어지기 때문에 적절하게 shuffle된다고 볼수 있다.

댓글