ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

compression
sparse-convolution
convolutional

#1

Face++ 이라는 회사에서 나온 논문입니다. Mobilenet과 유사하게 빠른 네트워크 아키텍쳐를 제안하면서 특히 Convolutional Operation에 대한 제안을 합니다. 이 논문에서 제안한 Channel shuffle 덕분에 feature에 대한 convolutional operation은 줄이면서도 정보의 손실을 막을 수 있었다고 주장합니다.

  • Channel Shuffle + Pointwise Group Convolution
  • Arm-based mobile device 에서 이미지넷 클래시피케이션이 실시간으로 동작하는 수준으로 개발
  • 알렉스넷 대비 13배 수준의 성능 향상
  • Mobilenet 보다 낫다고 주장
  • Theoretical Speed up : 18x
  • Actual Speed up (on arm-device) : 13x

Channel Shuffle for Group Convolutions

Xception 이나 Mobilenet 에서 소개된 것처럼 Depthwise separable convolutions 는 representation 성능은 ‘아주 조금’ 떨어지지만 Computational Cost는 매우 줄일 수 있는 방법으로 알려져 있습니다.

Depthwise separable convolution을 조금 소개하자면 Input Tensor에 대해 채널별 n by n Convolution을 먼저 취하고 1x1 convolution으로 필터별 convolution을 하는 형태로 일반적인 convolution을 '분해’한 것입니다.

이 논문에서는 여기에서의 1x1 convolution이 여전히 Cost가 높은 영역이라는데에 문제를 삼고 있습니다. 이 문제를 해결하기 위해서 단순한 형태로는 Channel-Sparse 한 형태, 즉 모든 채널에 Weight를 연결하지 않는 형태로 네트워크 디자인을 설계할 수도 있을 것입니다. 특정 영역의 Channel에 대해서만 Convolutional Operation을 취하는 형태로 설계하면 계산양을 매우 줄일 수 있을 것입니다. 위 그림에서 a에 해당합니다. 이렇게 처리하면, 특정한 영역에 대한 정보 흐름만을 Input으로 얻게 되기 때문에 문제가 됩니다.

그런데, 그림 b와 같이 인풋 영역이 각 Group에 섞일 수 있도록 디자인한다면, input과 output이 서로 완전이 연결된다고 볼 수 있습니다. 이 논문의 핵심은 이것입니다. 이를 tensor의 reshape operation으로 단순하게 할 수 있음을 강조합니다.

1x1 Convolution으로 생각해보면 연산양이 대략 Group 수에 비례하게 줄어들 것으로 예상할 수 있습니다.

Shufflenet Unit

위에서 설명한 Channel Shuffle 연산을 사용하여 Resnet Unit처럼 하나의 Unit을 제안합니다.

b에서와 같이 Group Convolution을 처리하고 이를 Channel Shuffle을 한 후 3x3 Depthwise Convolution을 하고 다시 1x1 Group Convolution을 하는 형태입니다.

Experiments

Group Size가 성능에 영향을 미치는 파라미터임을 알 수 있습니다. 컴플릭세티를 급격하게 줄임에도 Cls Error가 어느정도 유지되고 있습니다.

채널 셔플에 대한 영향입니다. 셔플링이 있는 경우 꽤 차이가 납니다.

연산양을 고정하고 다른 아키텍쳐와 비교한 것입니다. 셔플넷이 가장 우수한 성능을 보입니다.

모바일 넷과의 직접적인 비교입니다. 셔플넷이 조금 더 Complexity가 낮은 경우에도 더 나은 성능을 보여줍니다. 특히 작은 모델일 수록 모바일넷보다 성능이 좋다는 점이 주목할 필요가 있습니다.

arm 기반의 임베디드에서 실질적으로 유의미한 속도를 내는 것도 확인 가능합니다.

Conclusion

모바일넷은 Depthwise Separable Convolution으로 연산양을 줄인 것에 대해 잘 Evaluation한 논문입니다. 그리고 그 논문에서는 더 적은 파라미터를 사용해야하는 환경을 위해서 채널수를 줄였을 경우에 대한 실험 결과를 보여주고 이를 파라미터 \rho 로 표현했습니다.

셔플넷은 모바일넷이 단순히 채널수만 줄여가며 네트워크 파라미터 수를 줄였다면, 채널 수는 상대적으로 덜 줄이지만 Group Convolution을 통해 채널 간에 Sparse한 연결을 만듦으로써 파라미터 수를 줄이도록 설계되어 있습니다. 즉, 채널만을 줄여가면서 모바일 넷의 파라미터를 줄이는 것보다는 채널 수를 최대한 유지하면서 커넥션 자체를 Sparse하게 만든 것이 더 성능이 좋다는 것이 이 논문의 요약이라고 할 수 있겠습니다. 실험 결과에서도 파라미터를 더 줄였을 때 성능 차이가 나는 것이 바로 그런 이유입니다.

모바일넷이 일반적으로 구현도 쉽고 추가적인 하이퍼파라미터도 없지만, 모델의 사이즈를 쥐어짜야하는 경우에는 셔플넷이 성능 차이를 더 크게 벌릴 것으로 보여지므로, 고려대상으로 충분한 것 같습니다.


Pelee: A Real-Time Object Detection System on Mobile Devices
'Network Compression' Outline