티스토리 뷰
목차
이번 글에서는 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 및 다른 모델들과 비교한 도표만 정리한다.
보는 것처럼 같은 복잡도에서 다른 모델대비 성능이 좋은 것을 확인할 수 있다.
https://arxiv.org/abs/1707.01083
'AI' 카테고리의 다른 글
[논문 구현] ShuffleNet v1 직접 구현해보기 (0) | 2022.08.24 |
---|---|
[논문 구현] MobileNet v1 직접 구현해보기 (0) | 2022.08.24 |
[논문 리뷰] MobileNet v1에 대해서 간단하게 알아보기 (0) | 2022.08.22 |
[논문 리뷰] EfficientNet 간단하게 리뷰하기! (0) | 2022.08.02 |
[Loss Function] Cross Entropy에 대해 간단하게 알아보자! (0) | 2022.07.31 |