MobileNet v2 : Inverted residuals and linear bottlenecks |
MobileNet V2
이전 MobileNet → 일반적인 Conv(Standard Convolution)이 무거우니 이것을 Factorization
→ Depthwise Separable Convolution(이하 DSC)을 사용
사용한 기법들
1. Depthwise Separable Convolution
2. Inverted Residuals
■ Depthwise Separable Convolution
방식 : Standard Convolution을 Separate → Depthwise Conv. + Pointwise Conv.
1) Depthwise Convolution : kernel을 width * height * depth=1 로 설정하고
입력 이미지의 각 Channel 마다 별개로 Convolution 실시
(각 채널마다 독립적으로 Convolution)
2) Pointwise Convolution : kernel을 width=1 * height=1 * depth 로 설정하고
Convolution 실시(Network in Network 논문의 1 by 1 convolution과 동일)
기존 Convolution Layer의 연산량
DK⋅DK⋅M⋅N⋅DF⋅DF
DSC(Depthwise Separable Convolution) Layer의 연산량
DK⋅DK⋅M⋅DF⋅DF + M⋅N⋅DF⋅DF
= DF⋅DF⋅M(DK⋅DK + N)
∴ Standard Convolution보다 8배~9배 수준의 속도 향상을 가져옴.
(추가 1. Batch Normalization 대신 Fused Batch Normalization 사용이 더 좋다.)
■ Linear Bottlenecks
방식: Residual Learning 방식을 통해 네트워크를 깊게 구성할 경우, 연산량이 많이 늘어나게 된다.
→ 1 by 1 Convolution을 활용해 채널 수를 감소시킴.
(Residual Learning? : 학습을 위한 Weight Layer를 거친 후에, 초기 Input의 값을 더해주는 형태)
1) 일반적인 방식
일반적인 3*3 convolution 실시
2) Bottleneck 방식
1 by 1 convolution으로 채널 수를 줄이고 → 3 by 3 convolution을 실시 → 다시 1 by 1 convolution으로 채널 수를 복구시킴.
Q. 왜 Inverted Residual 인가?
A. 기존의 bottleneck(C)은 채널 감소 → 학습(DSC) → 채널 복구 방식이지만,
Inverted Residual(D)은 채널 증가 → 학습(DSC) → 채널 감소 방식이다(Inverted 됨.)
∴ Input Data와 Output Data의 크기가 작기 때문에 메모리 효율적이다.
■ Network Architecture
1) 19개의 Layer로 구성되어 있음.
2) 각 building block은 1번 이상의 동일 구조의 반복으로 되어 있다.(parameter n 참조)
'딥러닝 > 논문' 카테고리의 다른 글
[논문정리] SPPNet : Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition (0) | 2019.02.01 |
---|