이전 MobileNet 논문 리뷰 : 2023.01.04 - [Paper Review] - [Paper Review] MobileNet : Efficient Convolutional Neural Networks for Mobile VisionApplications
[Paper Review] MobileNet : Efficient Convolutional Neural Networks for Mobile VisionApplications
이전 ResNet 논문 리뷰 : 2023.01.04 - [Paper Review] - [Paper Review] ResNet [Paper Review] ResNet 이전 GoogLeNet 논문 리뷰 : 2023.01.03 - [Paper Review] - [Paper Review] GoogLeNet [Paper Review] GoogLeNet 이전 VGGNet 논문 리뷰 : 2023.01.0
josh3255.tistory.com
논문 : https://arxiv.org/pdf/1707.01083.pdf
여섯 번째로 리뷰할 논문은 megvii에서 발표한 ShuffleNet 논문이다. ShuffleNet은 MobileNet과 같이 제한된 환경에서의 추론을 위한 모델로써 Xception, ResNeXt와 같은 네트워크에서 사용되는 밀도가 높은 1 x 1 컨볼루션 연산의 효율성을 높이기 위해 Group Convolution과 Channel Shuffle Operation을 제안한다.
Group Convolution & Channel Shuffle Operation
그룹 컨볼루션의 초기 개념은 이미 초창기 네트워크인 AlexNet에서 사용되었으며 ResNeXt에서 그 효과가 입증되었다.
AlexNet 리뷰 : 2023.01.02 - [Paper Review] - [Paper Review] AlexNet : ImageNet Classification with Deep ConvolutionalNeural Networks
[Paper Review] AlexNet : ImageNet Classification with Deep ConvolutionalNeural Networks
객체 검출 논문의 서베이가 끝나서 CNN 서베이를 진행하려고 한다. 읽는 순서는 서베이 논문인 A Survey of Convolutional Neural Networks: Analysis, Applications, and Prospects 를 참고하여 읽을 것이다. 서베이 논
josh3255.tistory.com
다만 이전 연구인 Xception과 ResNeXt에서 사용된 Depthwise Separable Convolution, Group convolution 모두 밀도가 높은 1 x 1 컨볼루션에서 효율적으로 계산하지 못 하는 것으로 밝혀졌다. ShuffleNet은 이러한 문제를 해결하기 위해 channel sparse connections를 1 x 1 컨볼루션에도 적용한다.
Group Convolution은 말 그대로 입력을 일정한 Group으로 나누어 Group 내에서만 연산을 진행하는 방법이다. 그러나 이러한 방식은 위 그림의 (a)와 같이 정보가 한정된 공간에서만 움직인다는 문제가 있다. ShuffleNet에서는 그림의 (c)와 같이 Group Convolution 레이어의 출력 결과물을 다시 하위 그룹으로 나누어 무작위로 재배치하여 이러한 문제를 해결하였다.
ShuffleNet Unit
논문에서는 Channel Shuffle Operation의 이점을 활용하여 ShuffleNet Unit을 제안한다. 제안하는 유닛은 기본적으로 identity mapping을 사용하며 그림 2의 (b)와 같이 Channel Shuffle과 1 x 1 컨볼루션에 Group Convolution을 사용한다. 이 때 1 x 1 Group Convolution이 2번 사용되는데 이는 Shortcut Connections 되는 입력 데이터와의 차원을 일치시켜주기 위함이다.
또한 마지막에 Add 연산이 아닌 Concat을 수행하여 추가적인 계산 비용 없이 채널의 차원을 확장한다. ShuffleNet은 위와 같은 구조를 통해 모든 구성 요소의 계산 효율성을 높였다.
입력값이 (\( c \) x \(h\) x \(w\)) 이고 bottleneck channels가 \(m\)일 때 ResNet unit은 \( hw(2cm + 9m^{2}) \) FLOPs를 필요로 하고 ResNeXt는 \(hw(2cm + 9m^{2} / g)\) FLOPs를 필요로 하는 반면에 ShuffleNet은 \( hw(2cm/g + 9m) \) FLOPs 만을 필요로 한다. (\(g\)는 Group Convolution의 수를 의미함.)
다음글에서는 CNN 서베이의 마지막인 GhostNet을 리뷰하겠습니다.