높은 정확도만큼 중요한 것이 연산량, 파라미터 수, 메모리, 실제 지연 시간이다. MobileNet 계열은 모바일 환경을 위한 효율적인 Convolution Block을 발전시켰고, EfficientNet은 모델의 Depth·Width·Resolution을 균형 있게 키우는 방법을 제안했다.
Standard Convolution, Depthwise Separable Convolution, Inverted Residual 비교

모바일 모델을 이해할 때는 “정확도를 조금 희생해 가볍게 만들었다”는 한 줄에서 멈추면 안 된다. 어떤 연산을 분리했고, 정보 손실을 어디서 막았으며, 실제 Hardware Latency를 어떻게 반영했는지가 핵심이다.
1. MobileNet V1: Depthwise Separable Convolution
일반 Convolution은 공간 특징 추출과 Channel 결합을 한 번에 한다. MobileNet V1은 이를 둘로 분리한 Depthwise Separable Convolution을 사용한다.
Depthwise Convolution
Input Channel마다 하나의 공간 Kernel을 독립적으로 적용한다. Channel 사이를 섞지 않고 각 Channel의 공간 패턴만 찾는다.
Pointwise Convolution
이후 1×1 Convolution으로 Channel을 결합하고 Output Channel 수를 만든다.
일반 3×3 Convolution과 비교하면 연산량이 크게 줄지만 정확도 손실은 상대적으로 작다. 강의 자료의 비교처럼 파라미터 수와 Multiply-Add가 큰 폭으로 감소한다.
일반 Convolution의 계산량을 단순화하면 D_k² × M × N × D_f²다. Depthwise Separable 방식은 D_k² × M × D_f² + M × N × D_f²다. 여기서 D_k는 Kernel Size, M은 Input Channel, N은 Output Channel, D_f는 Feature Map 크기다. 두 방식의 비율은 대략 다음과 같다.
1/N + 1/D_k²
3×3 Kernel과 큰 Output Channel에서는 일반 Convolution의 약 1/8~1/9 수준까지 계산을 줄일 수 있다.
MobileNet V1은 Downsampling Block에서 Stride 2를 사용하고, 별도의 큰 FC Layer 대신 GAP를 쓴다. 또한 두 Hyperparameter로 모델 크기를 조절한다.
- Width Multiplier (α): 각 Layer의 Channel 수 조절
- Resolution Multiplier (ρ): 입력 이미지 해상도 조절
작은 α와 ρ는 빠르고 가벼운 모델을 만들지만 정확도도 낮아질 수 있다.
Width Multiplier를 α로 줄이면 Input과 Output Channel이 함께 줄어 연산량이 대략 α²에 비례해 감소한다. Resolution Multiplier ρ는 Height와 Width를 함께 줄이므로 연산량이 대략 ρ²에 비례해 감소한다. 두 값은 정확도와 연산 예산을 연속적으로 조정할 수 있는 Knob이다.
2. MobileNet V2: Inverted Residual과 Linear Bottleneck
MobileNet V2는 Inverted Residual Block을 도입한다. ResNet Bottleneck이 Channel을 줄였다가 복원한다면, V2는 좁은 입력을 먼저 넓히고 다시 줄인다.
1×1 Expansion → 3×3 Depthwise → 1×1 Projection
- Expansion: Channel을
t배 확장 - Depthwise: 확장된 각 Channel의 공간 특징 추출
- Projection: 좁은 Output Channel로 압축
Stride가 1이고 Input/Output Shape가 같을 때만 Skip Connection을 사용한다.
마지막 Projection에는 ReLU를 쓰지 않는 Linear Bottleneck이 핵심이다. 낮은 차원의 Bottleneck에 ReLU를 적용하면 음수 영역이 모두 0이 되며 정보가 손실될 수 있다. 넓은 고차원 공간에서는 ReLU6를 사용하되, 좁은 출력에서는 Linear Activation으로 정보를 보존한다.
ReLU6는 출력을 0과 6 사이로 제한한다. 낮은 정밀도의 Quantization 환경에서 큰 Activation 값에 덜 민감하도록 설계된 선택이다. 그러나 좁은 Bottleneck에서는 어떤 차원이 사라지면 복원하기 어려우므로 마지막 Projection을 Linear하게 둔다.
Skip Connection은 stride=1이고 C_in=C_out일 때만 사용할 수 있다. Stride 2로 Downsampling하거나 Channel 수가 다르면 Tensor Shape이 맞지 않아 Identity Addition을 생략한다.
3. MobileNet V3: NAS, SE Block, Hard-Swish
MobileNet V3는 Neural Architecture Search (NAS)로 전체 구조를 탐색하고 수작업 조정을 더했다. Large와 Small 두 가지 모델을 제공한다.
주요 변화는 다음과 같다.
- V2의 Inverted Residual 유지
- 일부 Block에 SE Block 추가
- Hard-Swish Activation 사용
- 마지막 Stage와 Head의 연산 구조 개선
Swish는 x × sigmoid(x)이지만 모바일에서 Sigmoid 계산은 비쌀 수 있다. Hard-Swish는 이를 구간별 선형 함수로 근사한다.
h-swish(x) = x × ReLU6(x + 3) / 6
SE Block에서도 Hard-Sigmoid를 사용해 Gate 계산을 효율화한다. 중요한 점은 파라미터 수만이 아니라 실제 하드웨어의 Latency를 최적화 대상으로 삼았다는 것이다.
MobileNet V3는 초기와 마지막 Stage의 구조도 손봤다. 마지막 Expensive Layer 일부를 GAP 뒤로 이동하면 Spatial Size가 1×1인 상태에서 연산할 수 있어 비용이 크게 줄어든다. NAS가 찾은 구조를 그대로 쓰기보다 Hardware 특성과 구현 효율을 고려해 수정한 것이다.
Depth, Width, Resolution을 함께 확장하는 EfficientNet Compound Scaling

4. EfficientNet: 한 축만 키우지 말자
기존 Scaling 방식은 보통 한 요소만 키웠다.
- ResNet: Depth Scaling
- WideResNet: Width Scaling
- 더 큰 입력: Resolution Scaling
그러나 해상도가 커지면 더 넓은 Receptive Field와 더 많은 Channel Capacity도 필요하다. EfficientNet은 세 축을 함께 키우는 Compound Scaling을 제안한다.
depth = α^φ
width = β^φ
resolution = γ^φ
연산량이 대략 depth × width² × resolution²에 비례하므로, 계수는 다음과 같은 제약 아래 정한다.
α × β² × γ² ≈ 2
α, β, γ ≥ 1
먼저 작은 Baseline EfficientNet-B0에서 Grid Search로 균형 계수를 찾고, φ를 늘려 B1부터 B7까지 확장한다. 한 축만 과도하게 키우는 것보다 정확도 대비 FLOPs와 파라미터 효율이 좋아진다.
φ를 1 늘릴 때 계산량이 대략 2배가 되도록 α, β, γ를 고른다. 이렇게 한 번 찾은 비율을 유지하며 전체 Model Family를 생성한다. B1~B7은 완전히 별개의 Architecture Search 결과가 아니라 B0에 같은 Scaling Rule을 적용한 계열이다.
5. EfficientNet-B0의 핵심 부품
B0는 MobileNet V2 계열의 MBConv (Mobile Inverted Bottleneck Convolution)를 사용하고 SE Block을 결합한다. Activation은 SiLU/Swish, 정규화에는 Batch Normalization, 깊은 모델의 규제에는 Stochastic Depth를 사용한다.
즉, EfficientNet은 완전히 새로운 Block 하나로 성공한 모델이 아니다. Mobile Inverted Bottleneck, SE, Swish 같은 검증된 요소를 효율적인 Baseline에 결합하고, Scaling 규칙을 체계화한 모델이다.
Stochastic Depth는 학습 중 일부 Residual Branch를 확률적으로 건너뛴다. Sample마다 더 얕은 Subnetwork를 학습하는 효과가 있어 깊은 모델의 Regularization을 돕는다. 추론 시에는 모든 Block을 사용하므로 구조가 결정적이다.
6. 효율을 비교할 때 생기는 함정
Parameter Count, FLOPs, Multiply-Adds, Latency는 서로 같은 지표가 아니다.
- 파라미터가 적어도 메모리 접근이 비효율적이면 느릴 수 있다.
- FLOPs가 적어도 특정 하드웨어에서 Group/Depthwise 연산이 최적화되지 않으면 Latency가 높을 수 있다.
- 입력 해상도와 Batch Size가 다르면 속도 비교가 공정하지 않다.
따라서 모바일 모델은 정확도뿐 아니라 실제 배포 장치의 Latency와 메모리까지 함께 측정해야 한다.
7. Parameter와 FLOPs만으로 부족한 이유
Depthwise Convolution은 이론적 FLOPs가 매우 작지만 Arithmetic Intensity가 낮고 Memory Access 비중이 커 특정 Device에서는 기대만큼 빠르지 않을 수 있다. 반대로 표준 Convolution은 FLOPs가 많아도 GPU Kernel이 잘 최적화되어 실제 Latency가 더 나을 때가 있다.
공정한 Benchmark라면 다음 조건을 함께 기록해야 한다.
- Input Resolution과 Batch Size
- Precision: FP32, FP16, INT8
- Device와 Runtime Library
- Warm-up 여부와 반복 횟수
- End-to-end Latency인지 Kernel Latency인지
- Accuracy 측정 시 Crop과 Ensemble 사용 여부
8. 모델 발전 흐름 한 줄 정리
MobileNet V1: 공간 연산과 Channel 결합을 분리
MobileNet V2: 확장된 공간에서 처리하고 좁은 출력은 Linear하게 보존
MobileNet V3: NAS + SE + Hard-Swish로 실제 Latency 최적화
EfficientNet: 좋은 Block을 기반으로 Depth·Width·Resolution을 함께 Scaling
구조를 비교하며 외울 것
| Model | 핵심 Block | Scaling/최적화 축 | 반드시 기억할 제한 |
|---|---|---|---|
| MobileNet V1 | Depthwise + Pointwise | Width, Resolution | Channel Mixing은 Pointwise가 담당 |
| MobileNet V2 | Inverted Residual | Expansion Ratio | 좁은 Projection은 Linear |
| MobileNet V3 | MBConv + SE | NAS, Hardware Latency | Hard-Swish/Hard-Sigmoid 사용 |
| EfficientNet | MBConv + SE | Depth+Width+Resolution | Compound Coefficient로 균형 확장 |
Key Terms
Depthwise Separable Convolution · Depthwise Convolution · Pointwise Convolution · Width Multiplier · Resolution Multiplier · Inverted Residual · Linear Bottleneck · ReLU6 · Hard-Swish · MBConv · Compound Scaling · Stochastic Depth
Self Check
- Depthwise Convolution과 Pointwise Convolution은 각각 어떤 일을 하는가?
- MobileNet V2의 좁은 Projection Layer에서 ReLU를 제거한 이유는 무엇인가?
- EfficientNet이 Depth, Width, Resolution을 함께 키우는 이유는 무엇인가?
'DL > CNN' 카테고리의 다른 글
| 4. WideResNet·ResNeXt·DenseNet·SE-Net - 깊이 다음의 네 가지 질문 (0) | 2026.09.01 |
|---|---|
| 2. Inception Net V1-V3 - 여러 크기의 특징을 한 번에 보는 네트워크 (0) | 2026.09.01 |
| 3. ResNet과 Residual Learning - 깊어질수록 왜 학습이 더 어려워질까? (0) | 2026.09.01 |
| 1. CNN 기초와 VGGNet - 이미지의 위치 패턴을 읽는 법 (0) | 2026.08.31 |