본문 바로가기
CV(Computer Vision)

ShuffleNet V1

by namduhus 2026. 6. 8.

[논문 정보]

Xiangyu Zhang et al. | arXiv:1707.01083 | 2017년 12월
논문명: ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices


1. 서론

ShuffleNet V1은 모바일 디바이스, 드론, 로봇, 스마트폰처럼 연산 자원이 제한된 환경에서 CNN을 효율적으로 실행하기 위해 제안된 경량 CNN 아키텍처입니다. 기존 CNN 연구는 주로 더 깊고 넓은 네트워크를 만들어 정확도를 높이는 방향으로 발전했습니다. ResNet, GoogLeNet, VGG, ResNeXt 같은 모델들은 이미지 분류와 객체 검출에서 높은 성능을 보였지만, 수백만 개 이상의 파라미터와 수십억 단위의 FLOPs를 요구하는 경우가 많았습니다.

 

하지만 모바일 환경에서는 이런 접근이 그대로 적용되기 어렵습니다. 모바일 CPU나 저전력 ARM 프로세서에서는 GPU 서버처럼 큰 연산량을 감당하기 어렵고, 메모리 접근 비용도 무시할 수 없습니다. 따라서 단순히 모델을 작게 만드는 것이 아니라, 모바일 하드웨어에서 실제로 빠르게 동작할 수 있는 연산 구조가 필요합니다.

 

ShuffleNet의 핵심 문제의식은 다음과 같습니다. 기존의 효율적인 CNN 구조인 Xception, MobileNet, ResNeXt는 연산량을 줄이기 위해 depthwise separable convolution이나 group convolution을 사용했지만, 여전히 1×1 pointwise convolution의 계산 비용이 매우 크다는 한계가 있었습니다. 특히 작은 모델에서는 1×1 convolution이 전체 연산의 대부분을 차지합니다.

 

논문에서는 ResNeXt의 residual unit에서 1×1 convolution이 전체 multiply-add 연산의 약 93.4%를 차지한다고 지적합니다. 즉, 3×3 convolution만 group convolution으로 줄여서는 충분하지 않고, 1×1 convolution 자체도 효율화해야 한다는 것이 ShuffleNet의 출발점입니다.

 

이를 위해 ShuffleNet은 두 가지 핵심 연산을 제안합니다.

 

첫째, pointwise group convolution입니다. 이는 1×1 convolution에도 group convolution을 적용하여 연산량을 크게 줄이는 방식입니다.

 

둘째, channel shuffle입니다. group convolution을 반복적으로 사용하면 서로 다른 channel group 간 정보가 섞이지 않는 문제가 발생합니다. ShuffleNet은 channel shuffle을 통해 group 간 정보 흐름을 회복합니다.

 

결과적으로 ShuffleNet은 MobileNet보다 훨씬 낮은 FLOPs 조건에서도 더 높은 정확도를 달성했습니다. 예를 들어 약 40 MFLOPs 수준에서 ShuffleNet은 MobileNet보다 ImageNet top-1 error를 7.8%p 낮췄습니다. 또한 ARM 기반 모바일 디바이스에서 AlexNet 대비 약 13배 실제 속도 향상을 보였습니다.


2. 문제 정의

ShuffleNet이 해결하려는 문제는 단순히 "모델 크기를 줄이는 것"이 아닙니다. 정확한 문제는 다음과 같이 정의할 수 있습니다.

매우 제한된 연산량, 예를 들어 10~150 MFLOPs 수준의 모바일 환경에서, CNN의 표현력을 최대한 유지하면서 ImageNet 수준의 복잡한 시각 인식 문제를 해결하는 효율적인 기본 아키텍처를 설계하는 것.

 

기존 경량화 접근은 크게 두 가지로 나눌 수 있습니다. 하나는 이미 학습된 큰 모델을 pruning, quantization, low-rank factorization, knowledge distillation 등으로 압축하는 방식입니다. 다른 하나는 처음부터 효율적인 CNN 구조를 설계하는 방식입니다. ShuffleNet은 후자에 속합니다.

 

논문은 특히 기본 아키텍처 설계 자체가 중요하다고 봅니다. 이미 큰 모델을 압축하는 방식은 성능을 어느 정도 유지할 수 있지만, 매우 작은 연산량 조건에서는 기본 구조가 비효율적이면 한계가 명확합니다. 따라서 ShuffleNet은 압축 기법이 아니라, 모바일 환경에 적합한 새로운 CNN building block을 설계합니다.

 

기존 MobileNet은 depthwise separable convolution을 사용해 3×3 convolution의 연산량을 크게 줄였습니다. 하지만 MobileNet에서도 1×1 pointwise convolution은 dense convolution으로 남아 있습니다. 이 때문에 모델이 작아질수록 pointwise convolution의 계산 비용이 상대적으로 더 큰 병목이 됩니다.

 

반면 ResNeXt는 group convolution을 사용하지만 주로 3×3 convolution에 적용합니다. 1×1 convolution은 여전히 dense하게 연결되어 있어 작은 모델에서는 효율성이 떨어집니다. ShuffleNet은 바로 이 지점을 문제로 삼습니다.


3. 제안 방법론

3.1 핵심 아이디어

ShuffleNet의 핵심 아이디어는 다음 한 문장으로 요약할 수 있습니다.

1×1 convolution에도 group convolution을 적용해 연산량을 줄이고, 이로 인해 발생하는 channel group 간 정보 단절 문제를 channel shuffle로 해결한다.

 

즉, ShuffleNet은 단순히 convolution을 줄이는 모델이 아니라, 연산량 절감과 정보 흐름 보존 사이의 균형을 설계한 모델입니다.


3.2 Pointwise Group Convolution

일반적인 1×1 convolution은 모든 입력 채널과 모든 출력 채널이 연결됩니다. 입력 채널 수를 C_in, 출력 채널 수를 C_out, feature map 크기를 H × W라고 하면, 일반 1×1 convolution의 연산량은 대략 다음과 같습니다.

H × W × C_in × C_out

 

하지만 group convolution을 사용하면 채널을 여러 그룹으로 나누고, 각 그룹 안에서만 convolution을 수행합니다. group 수를 g라고 하면 연산량은 대략 다음처럼 줄어듭니다.

H × W × C_in × C_out / g

 

즉, group 수가 커질수록 연산량은 줄어듭니다. ShuffleNet은 이 아이디어를 1×1 pointwise convolution에 적용합니다. 기존 MobileNet이 depthwise convolution으로 3×3 convolution을 줄였다면, ShuffleNet은 1×1 convolution까지 줄이는 방향으로 나아갑니다.

 

이 설계의 장점은 같은 FLOPs 예산 안에서 더 많은 채널을 사용할 수 있다는 점입니다. 작은 모델에서는 채널 수가 부족하면 표현력이 크게 떨어집니다. ShuffleNet은 group convolution으로 연산량을 줄인 만큼, feature map의 채널 수를 늘릴 수 있습니다. 논문은 이것이 특히 tiny network에서 중요하다고 강조합니다.


3.3 Group Convolution의 문제: 정보 단절

하지만 pointwise group convolution에는 치명적인 문제가 있습니다. 여러 group convolution을 연속으로 쌓으면, 각 출력 채널은 특정 입력 group에만 의존하게 됩니다.

 

예를 들어 채널을 3개 그룹으로 나누고 group convolution을 두 번 연속 적용한다고 해보겠습니다. 첫 번째 group의 출력은 계속 첫 번째 group의 입력에서만 정보를 받습니다. 두 번째 group도 마찬가지입니다. 이렇게 되면 서로 다른 group 사이의 정보 교환이 발생하지 않습니다.

 

논문 Figure 1(a)는 이 문제를 시각적으로 보여줍니다. 동일한 group 구조를 가진 group convolution을 반복하면, 각 group의 정보가 자기 group 안에서만 순환합니다. 이 상태에서는 네트워크가 전체 채널 간의 풍부한 조합을 학습하기 어렵습니다.

 

따라서 단순히 1×1 convolution을 group convolution으로 바꾸기만 하면 연산량은 줄어들지만, 표현력도 함께 약해질 수 있습니다. ShuffleNet은 이 문제를 해결하기 위해 channel shuffle을 도입합니다.


3.4 Channel Shuffle

Channel shuffle은 group convolution 이후 채널의 순서를 재배열하여, 다음 group convolution이 이전과 다른 group의 채널들을 입력으로 받도록 만드는 연산입니다.

논문에서는 다음과 같은 방식으로 설명합니다.

  1. group convolution의 출력 채널 수가 g × n이라고 가정합니다.
  2. 채널 차원을 (g, n) 형태로 reshape합니다.
  3. 두 차원을 transpose합니다.
  4. 다시 flatten하여 원래 채널 차원으로 되돌립니다.

개념적으로는 다음과 같습니다.

기존 채널 배열: [G1_1, G1_2, G2_1, G2_2, G3_1, G3_2]
Shuffle 이후:   [G1_1, G2_1, G3_1, G1_2, G2_2, G3_2]

이렇게 하면 다음 group convolution에서는 각 group이 이전 layer의 서로 다른 group에서 온 채널들을 함께 받게 됩니다. 즉, group convolution의 연산 효율은 유지하면서도 group 간 정보 흐름을 확보할 수 있습니다.

 

중요한 점은 channel shuffle이 별도의 학습 파라미터를 추가하지 않는다는 것입니다. 단순한 reshape, transpose, flatten 연산이므로 파라미터 수는 증가하지 않습니다. 또한 미분 가능한 연산이기 때문에 end-to-end 학습에 자연스럽게 포함될 수 있습니다.


3.5 ShuffleNet Unit

ShuffleNet의 기본 building block은 ResNet bottleneck 구조를 기반으로 합니다. 논문 Figure 2는 세 가지 구조를 비교합니다.

 

첫 번째는 depthwise convolution을 포함한 bottleneck unit입니다.

두 번째는 ShuffleNet unit입니다.

세 번째는 stride=2일 때의 ShuffleNet unit입니다.

 

여기서 중요한 점은 첫 번째와 두 번째 1×1 convolution 모두 group convolution이라는 것입니다. 다만 첫 번째 pointwise group convolution 뒤에는 channel shuffle을 넣어 group 간 정보 흐름을 보장합니다.

 

3×3 convolution은 depthwise convolution으로 구성됩니다. depthwise convolution은 각 채널별로 독립적으로 3×3 convolution을 수행하므로 연산량이 매우 작습니다. 따라서 ShuffleNet unit에서는 대부분의 연산 비용을 차지할 수 있는 1×1 convolution을 group화하고, 3×3 convolution은 depthwise 방식으로 처리합니다.


3.6 Stride=2 ShuffleNet Unit

feature map의 공간 해상도를 줄여야 할 때는 stride=2 구조를 사용합니다. 일반 ResNet에서는 shortcut path와 residual path를 더하기 위해 차원을 맞춰야 합니다. ShuffleNet은 이 경우 약간 다른 방식을 사용합니다.

 

Stride=2 ShuffleNet unit에서는 shortcut path에 3×3 average pooling을 적용합니다. 그리고 residual branch의 출력과 shortcut branch의 출력을 element-wise addition으로 더하지 않고, channel concatenation을 사용합니다.

 

이 설계의 장점은 채널 수를 자연스럽게 늘릴 수 있다는 점입니다. addition은 두 branch의 채널 수가 같아야 하지만, concatenation은 두 branch를 이어붙이면 되기 때문에 채널 확장에 유리합니다. 작은 추가 비용으로 feature dimension을 늘릴 수 있습니다.


3.7 전체 네트워크 구조

Stage2, Stage3, Stage4는 ShuffleNet unit을 반복해서 쌓은 구조입니다. 각 stage의 첫 번째 unit은 stride=2로 feature map 크기를 줄이고, 나머지 unit은 stride=1로 유지합니다.

 

논문 Table 1에서는 group 수 g에 따라 채널 수를 다르게 설정합니다. 예를 들어 g=1, g=2, g=3, g=4, g=8에 따라 Stage2, Stage3, Stage4의 output channel 수가 달라집니다. group 수가 커질수록 pointwise convolution의 연산량이 줄어들기 때문에 더 많은 채널을 사용할 수 있습니다.


4. 핵심 통찰 및 의의

ShuffleNet의 가장 큰 의의는 1×1 convolution이 경량 CNN의 핵심 병목이라는 점을 명확히 지적했다는 것입니다. MobileNet은 3×3 convolution을 depthwise convolution으로 바꿔 큰 효과를 얻었지만, 1×1 convolution의 비용은 여전히 컸습니다. ShuffleNet은 이 부분에 group convolution을 적용함으로써 더 극단적인 경량화를 달성했습니다.

 

두 번째 의의는 channel shuffle입니다. group convolution은 연산량을 줄이지만, group 간 정보 흐름을 제한합니다. ShuffleNet은 단순한 채널 재배열만으로 이 문제를 해결했습니다. 별도의 파라미터나 복잡한 모듈 없이 정보 교환을 가능하게 했다는 점에서 매우 효율적인 아이디어입니다.

 

세 번째로, ShuffleNet은 "FLOPs가 낮으면 무조건 빠르다"는 단순한 가정을 경계합니다. 논문은 실제 ARM 기반 디바이스에서 inference time을 측정했고, 이론적 속도 향상과 실제 속도 향상 사이에 차이가 있음을 보여줍니다. 이는 모바일 모델 설계에서 FLOPs뿐 아니라 메모리 접근, 연산 패턴, 라이브러리 최적화까지 고려해야 한다는 중요한 메시지를 줍니다.

 

네 번째로, ShuffleNet은 작은 모델에서 채널 수가 중요하다는 점을 실험적으로 보여줍니다. 동일한 FLOPs 조건에서 더 많은 feature channel을 확보할 수 있으면 작은 모델의 표현력이 크게 개선됩니다. ShuffleNet이 group convolution을 사용하는 이유도 단순한 계산 절감이 아니라, 절감한 예산을 채널 확장에 재투자하기 위함입니다.


5. 한계점 및 향후 연구

ShuffleNet V1의 한계는 group convolution과 channel shuffle이 실제 하드웨어에서 항상 최적으로 동작하지는 않는다는 점입니다. 논문에서도 group 수가 큰 경우 정확도는 좋아질 수 있지만, 실제 구현에서는 효율이 떨어질 수 있다고 언급합니다. 이 때문에 실제 모바일 추론에서는 g=3이 정확도와 속도의 균형이 좋다고 보고합니다.

 

또한 channel shuffle은 연산량 자체는 작지만, 메모리 재배열이 필요한 연산입니다. 하드웨어나 inference engine이 이를 효율적으로 처리하지 못하면 이론적 FLOPs 대비 실제 속도 향상이 제한될 수 있습니다.

 

그리고 ShuffleNet V1은 수동 설계된 아키텍처입니다. 이후 MobileNetV2, ShuffleNetV2, EfficientNet, NAS 기반 모델들이 등장하면서 하드웨어 친화성, memory access cost, operator fusion 등을 더 체계적으로 고려하게 됩니다. 특히 ShuffleNetV2에서는 단순히 FLOPs만 보는 것이 아니라 실제 속도를 결정하는 설계 원칙을 더 명확히 제시합니다.


6. 결론

ShuffleNet V1은 모바일 환경을 위한 경량 CNN 설계에서 중요한 전환점이 된 논문입니다. 핵심은 1×1 pointwise convolution의 비용을 줄이기 위해 pointwise group convolution을 사용하고, 이로 인한 정보 단절 문제를 channel shuffle로 해결하는 것입니다.

 

실험적으로 ShuffleNet은 ImageNet classification에서 MobileNet보다 낮은 FLOPs로 더 좋은 정확도를 달성했습니다. 특히 약 40 MFLOPs 수준에서 MobileNet 대비 top-1 error를 7.8%p 낮춘 결과는 매우 인상적입니다.

 

또한 ARM 기반 모바일 디바이스에서 AlexNet 대비 약 13배 실제 속도 향상을 보였다는 점에서, 단순한 이론적 모델이 아니라 실제 모바일 배포를 고려한 구조라는 의미가 있습니다.

 

정리하면 ShuffleNet V1은 다음과 같은 메시지를 남깁니다.

 

작은 모델에서는 연산량을 줄이는 것만큼, 제한된 연산 예산 안에서 채널 표현력을 어떻게 유지할 것인지가 중요하다.
ShuffleNet은 pointwise group convolution과 channel shuffle을 통해 이 균형을 효과적으로 달성한 모델이다.

 

References
논문 원문: ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

https://arxiv.org/abs/1707.01083

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

EfficientNet  (0) 2026.06.10
ShuffleNet V2  (0) 2026.06.09
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