본문 바로가기
CV(Computer Vision)

ShuffleNet V2

by namduhus 2026. 6. 9.

[논문 정보]

Ningning Ma et al. | arXiv:1807.11164 | 2018년 7월

논문명: ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design


1. 서론

ShuffleNet V2 논문은 경량 CNN 설계에서 매우 중요한 관점을 제시합니다. 기존의 경량 네트워크 연구들은 대부분 모델의 계산량을 줄이는 데 집중했습니다. 여기서 계산량은 주로 FLOPs, 즉 multiply-add 연산 수로 측정됩니다. MobileNet, ShuffleNet V1, Xception, CondenseNet 같은 모델들은 depthwise convolution, pointwise group convolution, channel shuffle 등의 기법을 사용해 FLOPs를 줄이고 모바일 환경에서 사용할 수 있는 CNN을 만들고자 했습니다.

 

하지만 이 논문의 핵심 문제의식은 명확합니다. FLOPs가 낮다고 해서 실제로 빠른 모델은 아니다라는 것입니다. 실제 추론 속도는 FLOPs뿐 아니라 메모리 접근 비용, 연산자의 병렬화 가능성, 연산 그래프의 fragmentation 정도, 플랫폼별 라이브러리 최적화 상태에 크게 영향을 받습니다. 논문은 MobileNet V2와 NASNet-A가 비슷한 FLOPs를 가지더라도 실제 속도는 크게 다를 수 있다고 설명합니다. 즉, FLOPs는 간접 지표일 뿐이며, 우리가 실제로 관심 있는 것은 GPU나 ARM 같은 실제 타깃 장비에서의 latency 또는 throughput입니다.

 

이 논문은 특히 실용적인 관점이 강합니다. 저자들은 단순히 새로운 블록 구조를 제안하는 데 그치지 않고, 먼저 효율적인 CNN 설계를 위한 4가지 실용 가이드라인을 도출합니다. 이 가이드라인은 이론적 계산량보다는 실제 하드웨어에서 병목이 되는 요소들을 분석한 결과입니다. 이후 이 가이드라인을 반영하여 ShuffleNet V2 구조를 설계합니다.

 

ShuffleNet V2의 중요한 차별점은 "더 복잡한 구조를 추가해서 성능을 높이자"가 아니라, 오히려 실제 장비에서 빠르게 실행될 수 있는 단순하고 균형 잡힌 구조를 만들자는 방향입니다. ShuffleNet V1이 pointwise group convolution과 channel shuffle을 적극적으로 사용했다면, ShuffleNet V2는 과도한 group convolution이 오히려 메모리 접근 비용을 증가시킬 수 있다고 보고 이를 줄입니다.

 

논문은 ImageNet classification뿐 아니라 COCO object detection에서도 ShuffleNet V2가 좋은 성능을 보인다는 점을 실험으로 확인합니다. 특히 동일한 FLOPs 수준에서 ShuffleNet V2는 ShuffleNet V1, MobileNet V2, Xception보다 더 나은 accuracy-speed trade-off를 보여줍니다.

 

이 논문의 기여는 크게 세 가지입니다. 첫째, FLOPs 중심의 경량 CNN 설계가 실제 속도 최적화와 다를 수 있음을 실험적으로 보여줍니다. 둘째, 효율적인 네트워크 설계를 위한 4가지 실용 가이드라인을 제안합니다. 셋째, 이 가이드라인을 반영한 ShuffleNet V2 구조를 제안하고, ImageNet과 COCO에서 우수한 속도와 정확도 균형을 입증합니다.


2. 문제 정의

이 논문이 해결하려는 문제는 제한된 연산 예산 안에서 정확도와 실제 추론 속도를 동시에 만족하는 CNN 구조를 어떻게 설계할 것인가입니다. 기존 경량 CNN 연구들은 일반적으로 FLOPs를 줄이는 방향으로 모델을 설계했습니다. 하지만 FLOPs는 단순히 곱셈과 덧셈 연산 수를 세는 지표이기 때문에 실제 실행 속도를 완전히 설명하지 못합니다.

 

예를 들어 1×1 convolution과 3×3 convolution은 FLOPs 기준으로 보면 큰 차이를 보일 수 있지만, 실제 GPU에서는 cuDNN 같은 라이브러리의 최적화 여부에 따라 실행 시간이 단순 FLOPs 비율과 다르게 나타날 수 있습니다. 논문에서도 3×3 convolution이 이론적으로 1×1 convolution보다 9배 많은 연산을 요구한다고 해서 실제로 항상 9배 느린 것은 아니라고 설명합니다.

 

문제는 경량 네트워크일수록 이런 차이가 더 크게 드러난다는 점입니다. 대형 CNN에서는 convolution 연산 자체가 대부분의 시간을 차지하지만, 경량 CNN에서는 ReLU, Add, Concat, Channel Shuffle, data movement 같은 부가 연산의 비중이 커집니다. 즉, FLOPs에는 거의 반영되지 않지만 실제 추론 시간에는 큰 영향을 주는 요소들이 많아집니다.

 

논문은 이 문제를 해결하기 위해 다음과 같은 관점을 취합니다.

 

첫째, 네트워크 효율성은 FLOPs가 아니라 실제 타깃 플랫폼에서의 속도로 평가해야 합니다. 둘째, 모델 구조는 하드웨어의 메모리 접근 특성, 병렬 처리 능력, 연산자 최적화 상태를 고려해야 합니다. 셋째, 경량 CNN 설계에서는 단순히 채널 수를 늘리거나 group convolution을 많이 사용하는 것이 항상 좋은 선택은 아닙니다.


3. 제안 방법론

ShuffleNet V2의 방법론은 크게 두 단계로 구성됩니다. 먼저 저자들은 실제 실행 속도에 영향을 주는 요인을 분석해 4가지 설계 가이드라인을 도출합니다. 그 다음 이 가이드라인을 반영하여 새로운 네트워크 블록인 ShuffleNet V2 unit을 설계합니다.

3.1 Guideline 1: 입력 채널과 출력 채널 수를 같게 유지하라

첫 번째 가이드라인은 동일한 FLOPs 조건에서는 입력 채널 수와 출력 채널 수가 같을 때 메모리 접근 비용이 최소화된다는 것입니다.

1×1 convolution의 FLOPs는 다음과 같이 표현됩니다.

B = h * w * c_1 * c_2

 

여기서 h, w는 feature map의 spatial size이고, c_1은 입력 채널 수, c_2는 출력 채널 수입니다.

메모리 접근 비용은 대략 다음과 같이 볼 수 있습니다.

 

MAC = hw{c_1 + c_2} + c_1 c_2

첫 번째 항은 input/output feature map 접근 비용이고, 두 번째 항은 convolution weight 접근 비용입니다. 논문은 평균 부등식을 통해 입력 채널과 출력 채널이 균형을 이룰 때 MAC가 최소화된다고 설명합니다.

 

이 관점에서 보면 bottleneck 구조는 효율성 측면에서 불리할 수 있습니다. ResNet이나 ShuffleNet V1, MobileNet V2는 채널을 줄였다가 다시 늘리는 구조를 사용합니다. 이런 구조는 FLOPs를 줄이는 데는 유리하지만, 채널 폭이 불균형해지기 때문에 실제 메모리 접근 비용 측면에서는 최적이 아닐 수 있습니다.


3.2 Guideline 2: 과도한 group convolution은 메모리 접근 비용을 증가시킨다

두 번째 가이드라인은 group convolution을 지나치게 많이 사용하면 오히려 실제 속도가 느려질 수 있다는 것입니다.

 

Group convolution은 convolution을 여러 그룹으로 나누어 수행하기 때문에 FLOPs를 줄일 수 있습니다. ShuffleNet V1은 pointwise group convolution을 적극적으로 사용하여 제한된 FLOPs 안에서 더 많은 채널을 사용할 수 있도록 했습니다.

 

하지만 논문은 group 수가 증가하면 채널 수를 늘릴 수는 있지만, 동시에 메모리 접근 비용도 증가한다고 지적합니다. 특히 1×1 group convolution에서 group 수 g가 커질수록 실제 MAC가 증가합니다. 이로 인해 FLOPs는 낮아도 실제 실행 속도는 느려질 수 있습니다.

 

논문 실험에서도 group 수를 1, 2, 4, 8로 증가시켰을 때, 동일 FLOPs 조건에서도 속도가 크게 저하되었습니다. GPU에서는 group 수가 8일 때 group 수가 1인 경우보다 2배 이상 느려지는 결과가 나타났습니다.

 

따라서 ShuffleNet V2는 ShuffleNet V1과 달리 1×1 pointwise group convolution을 제거하고 일반 1×1 convolution을 사용합니다. 이는 FLOPs만 보면 비효율적으로 보일 수 있지만, 실제 플랫폼에서는 더 빠를 수 있습니다.


3.3 Guidline 3: 네트워크 fragmentation을 줄여라

세 번째 가이드라인은 작은 연산을 여러 갈래로 쪼개는 fragmented structure는 병렬성을 떨어뜨리고 실행 오버헤드를 증가시킨다는 것입니다.

 

Inception 계열이나 NAS로 생성된 모델들은 하나의 블록 안에 여러 개의 branch와 작은 연산자를 포함하는 경우가 많습니다. 이런 구조는 표현력을 높이고 정확도를 개선할 수 있지만, GPU 같은 병렬 연산 장비에서는 비효율적일 수 있습니다.

 

그 이유는 작은 연산자가 많아질수록 kernel launch, synchronization, memory movement overhead가 커지기 때문입니다. 즉, FLOPs는 낮아도 실제 실행 시간이 늘어날 수 있습니다.

 

논문에서는 1-fragment, 2-fragment, 4-fragment 구조를 비교합니다. GPU에서는 4-fragment 구조가 1-fragment 구조보다 최대 3배 느려질 수 있음을 보여줍니다. 이 결과는 NAS 기반 모델들이 FLOPs 대비 실제 속도가 느린 이유를 설명하는 근거가 됩니다.

 

ShuffleNet V2는 이 가이드라인에 따라 block 내부 구조를 단순하게 유지합니다. 복잡한 multi-branch 구조를 피하고, 한쪽 branch만 convolution을 수행하며 다른 branch는 identity로 통과시킵니다.


3.4 Guideline 4: Element-wise operation의 비용을 무시하지 말라

네 번째 가이드라인은 ReLU, Add, Concat, Channel Shuffle, depthwise convolution 같은 연산도 실제 실행 시간에서 무시할 수 없다는 것입니다.

 

FLOPs 관점에서 ReLU나 Add는 거의 비용이 없는 것처럼 보입니다. 하지만 실제 장비에서는 feature map을 메모리에서 읽고 쓰는 비용이 발생합니다. 특히 경량 모델에서는 convolution FLOPs가 줄어든 만큼 이런 element-wise operation의 상대적 비중이 커집니다.

 

논문은 ResNet bottleneck unit에서 ReLU와 shortcut Add를 제거해보는 실험을 수행합니다. 그 결과 ReLU와 shortcut을 제거했을 때 GPU와 ARM 모두에서 약 20%의 속도 향상이 나타났습니다. 이는 element-wise operation이 실제로 무시할 수 없는 비용을 가진다는 것을 보여줍니다.

 

ShuffleNet V2는 이 점을 반영하여 ShuffleNet V1의 shortcut Add를 제거합니다. 또한 ReLU와 depthwise convolution은 전체 채널이 아니라 한쪽 branch에서만 수행되도록 설계합니다. Concat, Channel Shuffle, Channel Split도 가능한 한 하나의 연산으로 합쳐 구현할 수 있도록 구성합니다.


4. ShuffleNet V2 구조

ShuffleNet V2의 핵심 아이디어는 다음과 같습니다.

 

입력 feature map을 두 branch로 나누고, 한 branch는 그대로 통과시키며, 다른 branch만 convolution 연산을 수행한 뒤 다시 concat하고 channel shuffle을 적용한다.

 

이 구조는 다음과 같은 장점을 가집니다.

 

첫째, 입력과 출력 채널 수가 동일하게 유지됩니다. 이는 Guideline 1을 만족합니다.

 

둘째, 1×1 group convolution을 사용하지 않고 일반 1×1 convolution을 사용합니다. 이는 과도한 group convolution으로 인한 MAC 증가를 피하기 위한 선택입니다.

 

셋째, block 내부가 지나치게 fragmented되지 않습니다. 한쪽 branch는 identity이고, 다른 한쪽 branch만 1×1 conv, 3×3 depthwise conv, 1×1 conv를 통과합니다.

 

넷째, ShuffleNet V1에서 사용하던 element-wise Add를 제거합니다. 대신 두 branch를 concat한 뒤 channel shuffle을 적용합니다.

Downsampling unit에서는 spatial resolution을 줄여야 하므로 channel split을 사용하지 않습니다. 대신 두 branch 모두 연산을 수행하고, stride=2 depthwise convolution을 사용해 feature map 크기를 줄입니다. 이후 concat을 통해 출력 채널 수를 증가시킵니다.

 

전체 네트워크는 Conv1, MaxPool, Stage2, Stage3, Stage4, Conv5, Global Pooling, FC로 구성됩니다. 논문은 0.5×, 1×, 1.5×, 2× 네 가지 크기의 모델을 제시합니다.

 

흥미로운 점은 ShuffleNet V2가 단순히 빠르기만 한 구조가 아니라 정확도 측면에서도 유리하다는 것입니다. 논문은 그 이유를 feature reuse 관점에서 설명합니다. 각 block에서 절반의 채널은 identity branch를 통해 직접 다음 block으로 전달됩니다. 이는 DenseNet처럼 이전 feature를 재사용하는 효과를 일부 제공합니다. 다만 DenseNet처럼 모든 layer를 dense하게 연결하지 않기 때문에 훨씬 효율적입니다.


5. 핵심 통찰 및 의의

이 논문의 가장 중요한 통찰은 효율적인 CNN 설계에서 FLOPs는 충분한 기준이 아니라는 점입니다. 많은 경량 모델 연구가 FLOPs를 줄이는 데 집중했지만, 실제 장비에서는 메모리 접근 비용, 병렬성, 연산자 수, 라이브러리 최적화가 속도를 좌우합니다.

 

두 번째 통찰은 group convolution이 항상 좋은 것은 아니라는 점입니다. ShuffleNet V1은 pointwise group convolution을 통해 FLOPs를 줄였지만, ShuffleNet V2는 이것이 실제 속도에서는 손해가 될 수 있음을 보여줍니다. 특히 group 수가 많아질수록 메모리 접근 비용이 증가하고, 실제 속도가 느려질 수 있습니다.

 

세 번째 통찰은 단순한 구조가 실제 시스템에서 더 강할 수 있다는 점입니다. NAS 기반 모델이나 Inception 계열처럼 복잡한 multi-branch 구조는 이론적으로 표현력이 높을 수 있지만, 실제 GPU나 모바일 CPU에서는 작은 연산자가 많아져 오버헤드가 커질 수 있습니다. ShuffleNet V2는 상대적으로 단순한 block 구조를 유지하면서도 높은 정확도를 달성합니다.

 

네 번째 통찰은 feature reuse를 효율적으로 구현했다는 점입니다. DenseNet은 모든 layer를 연결해 feature reuse를 극대화하지만, 메모리와 연산 비용이 큽니다. ShuffleNet V2는 channel split을 통해 일부 채널을 identity로 직접 전달함으로써 더 가벼운 방식으로 feature reuse 효과를 얻습니다.

 

마지막으로 이 논문은 경량 CNN 연구뿐 아니라 NPU, 모바일 AI, 온디바이스 AI 설계에도 중요한 시사점을 줍니다. 실제 edge device에서는 FLOPs보다 memory bandwidth, operator fusion, kernel optimization, latency가 더 중요할 수 있습니다. 따라서 모델을 설계할 때는 논문상의 FLOPs뿐 아니라 실제 배포 환경에서의 벤치마크가 필수입니다.


6. 한계점 및 향후 연구

첫 번째 한계는 실험 플랫폼이 제한적이라는 점입니다. 논문은 GTX 1080Ti GPU와 Qualcomm Snapdragon 810 ARM 환경에서 실험합니다. 당시 기준으로는 충분히 의미 있는 설정이지만, 현재의 모바일 NPU, Apple Neural Engine, Qualcomm Hexagon, Edge TPU, TensorRT 기반 GPU 환경에서는 결과가 달라질 수 있습니다.

 

두 번째 한계는 channel shuffle 자체도 여전히 memory movement를 유발한다는 점입니다. ShuffleNet V2는 ShuffleNet V1보다 효율적으로 설계되었지만, channel shuffle은 여전히 하드웨어에 따라 비용이 발생할 수 있습니다. 실제 NPU나 DSP에서는 shuffle류 연산이 convolution보다 비효율적으로 처리될 가능성도 있습니다.

 

세 번째 한계는 가이드라인이 강력하지만 절대적인 법칙은 아니라는 점입니다. 예를 들어 group convolution이 특정 하드웨어에서 매우 잘 최적화되어 있다면 Guideline 2의 영향은 줄어들 수 있습니다. 즉, 논문의 가이드라인은 플랫폼 독립적인 직관을 제공하지만, 최종 판단은 반드시 target platform benchmark를 통해 이루어져야 합니다.

 

향후 연구 방향으로는 ShuffleNet V2의 설계 원칙을 NAS와 결합하는 방법이 있습니다. 논문에서도 자동 구조 탐색이 유망하지만, FLOPs만 최적화하면 실제 속도에서 손해를 볼 수 있다고 지적합니다. 따라서 latency-aware NAS, hardware-aware NAS와 결합하면 더 실용적인 모델을 찾을 수 있습니다.


7. 결론

ShuffleNet V2는 경량 CNN 설계에서 매우 중요한 전환점을 제시한 논문입니다. 기존 연구들이 FLOPs 감소에 집중했다면, 이 논문은 실제 추론 속도에 영향을 주는 요소들을 체계적으로 분석하고, 그 결과를 바탕으로 새로운 네트워크 구조를 제안했습니다.

 

논문의 핵심 메시지는 명확합니다. 좋은 경량 모델은 FLOPs가 낮은 모델이 아니라, 실제 타깃 장비에서 빠르고 정확한 모델이다. 이를 위해서는 채널 균형, group convolution 사용량, fragmentation, element-wise operation 비용을 모두 고려해야 합니다.

 

ShuffleNet V2는 이러한 원칙을 반영해 channel split, identity branch, 일반 1×1 convolution, channel shuffle을 조합한 단순하면서도 효율적인 구조를 만듭니다. 그 결과 ImageNet classification과 COCO object detection에서 ShuffleNet V1, MobileNet V2, Xception 등과 비교해 우수한 accuracy-speed trade-off를 달성합니다.

 

이 논문은 단순히 ShuffleNet V2라는 모델 하나를 제안한 것 이상의 의미를 가집니다. 온디바이스 AI, 모바일 비전, NPU 최적화, edge deployment를 고려하는 모델 설계에서 "실제 하드웨어 기준으로 모델을 봐야 한다"는 실용적 기준을 제시했다는 점에서 지금도 중요한 논문입니다.

References
논문 원문: ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
https://arxiv.org/abs/1807.11164

'CV(Computer Vision)' 카테고리의 다른 글

EfficientNet  (0) 2026.06.10
ShuffleNet V1  (0) 2026.06.08
MobileNetV2  (0) 2026.06.08
MobileNetV1  (0) 2026.06.01
SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size  (0) 2026.05.28