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 ConvolutionSeparate Depthwise Conv. + Pointwise Conv.

 

1) Depthwise Convolution : kernelwidth * height * depth=1 로 설정하고

입력 이미지의 각 Channel 마다 별개로 Convolution 실시

(각 채널마다 독립적으로 Convolution)

 

2) Pointwise Convolution : kernelwidth=1 * height=1 * depth 로 설정하고

Convolution 실시(Network in Network 논문의 1 by 1 convolution과 동일)

 


기존 Convolution Layer의 연산량

DKDKMNDFDF

 

DSC(Depthwise Separable Convolution) Layer의 연산량

DKDKMDFDF + MNDFDF

= DFDFM(DKDK + 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 DataOutput Data의 크기가 작기 때문에 메모리 효율적이다.



Network Architecture





 

1) 19개의 Layer로 구성되어 있음.

2) building block1번 이상의 동일 구조의 반복으로 되어 있다.(parameter n 참조)

 

Posted by NDC :