티스토리 뷰

목차



    이번 글에서는 ShuffleNet논문을 간단하게 리뷰해보려 한다. Intro와 Architecture 중심으로 작성해보겠다.

     

    0. Abstract

     

    이 논문에서는 Mobile 장치에 특화된 extremely computation-efficient CNN인 ShuffleNet을 소개한다. ShuffleNet은 Channel shuffle과 pointwise group convolution operation을 이용하여 computation cost는 낮추면서도 accuracy는 유지하여 MobileNet보다 더 좋은 효율을 보여준다.

     

    1. Intro

     

    현재 트렌드는 CNN을 더 깊게, 더 크게 design하여 성능을 올리는 것이다. 하지만 현재 SOTA 모델들은 layer도 수백개, channel은 수천개에 달하는 매우 무겁게 design되어 computation cost가 높아 mobile network같은 제한된 조건하에서는 효율적이라고 말할 수 없다. 이 논문은 그러한 제한된 조건에서 최적의 성능을 추구하는 모델을 소개한다. 제한된 조건이란 스마트폰, 드론, 로봇 등의 mobile platform을 의미한다. 대부분 속도향상 / 경량화를 위해 pruning / compressing / low-bit representing of basic network architecture를 활용하는데, 이 논문에서는 3번째인 efficient basic architecture에 주목하였다.

     

    그런면에서 ResNeXT / Xception 등의 SOTA모델들은 덜 효율적이다. $1x1 Conv$가 여전히 computation cost가 높기에 이를 pointwise group conv로 대체하여 computation cost (complexity)를 줄이려 한다. 또한 MobileNet에서도 사용되었던 $Group Conv$는 channel간 정보교류가 없으므로 channel shuffle을 추가하여 이를 해결하고자 했다. 그것이 바로 ShuffleNet이며 small network 환경에서도 좋은 성능을 보인다.

    2. Architecture

     

    전체 아키텍쳐를 보기 전에 두 가지를 먼저 확인해야한다.

     

    1. Channel Shuffle for Group Convolutions

     

     기존 $Group Conv$는 Channel Group 간 정보교류가 없다. 그래서 model의 representation을 약화시킨다. 그래서 channel group간 정보교류가 되도록 하면 서로 간의 완전히 연관시킬 수 있어 representation 문제를 해결할 수 있다. 이를 좀 더 똑똑하게 split 할 수 있으며 이를 통해 computation cost를 크게 늘리지 않으면서 적용할 수 있다.

     channel을 g개의 group으로 나눠진 상태에서 output channels를 $g * n$라 하자. 이를 reshape하여 (g, n)으로 만든 후 transpose & flatten 하면 위의 그림 처럼 split되어 모든 채널의 input data를 연관시킬 수 있다.

     

    channel shuffle은 미분가능하여 end-to-end 학습도 가능하다.

     

    2. ShuffleNet Unit

     

     

    위 그림의 (a) 처럼 Bottleneck 구조(Residual Block)로 출발하며, 여기서 $3x3 Conv$는 $3x3 DWConv$ 즉, Depthwise convolution으로 변경, $1x1 Conv$는 $1x1 GConv$ 즉, Group Conv로 변경하며 첫번째 GroupConv + BN + ReLU 후 Channel Shuffle을 진행한다. 두번째 $1x1 GConv$는 skip-connection의 channel dimension을 맞추는 거이 목적이기 때문에 channel shuffle을 적용하지 않는다. 이것이 위 그림의 (b)와 같다. 만약 stride = 2로 이미지 사이즈를 줄이는 경우에는 위 그림의 (c)처럼 변경하여 사용하게 된다. 특이한 것은 add가 아닌 concat을 사용하는데 이는 computation cost를 좀 더 줄이면서도 channel dimension을 키울 수 있다는 장점이 있다.

     

    그래서 전체 아키텍쳐는 다음과 같다.

    3. Experiments

     

    이 포스팅에서는 간단하게 MobileNet 및 다른 모델들과 비교한 도표만 정리한다.

    MobileNet VS ShuffleNet
    ResNet, ResNeXt, Xception-like, VGG-like와 비교한 Table

    보는 것처럼 같은 복잡도에서 다른 모델대비 성능이 좋은 것을 확인할 수 있다.

     

    https://arxiv.org/abs/1707.01083

     

    ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

    We introduce an extremely computation-efficient CNN architecture named ShuffleNet, which is designed specially for mobile devices with very limited computing power (e.g., 10-150 MFLOPs). The new architecture utilizes two new operations, pointwise group con

    arxiv.org