MobileNet V2 : Inverted Residuals and Linear Bottlenecks

자습용으로 작성한 자료 입니다. 출처는 맨 밑에 있습니다.

 

 

 

관련된 논문

– mobile net v1, shuffle net 등

 

개요

– 지금까지 CNN이 발전해 오면서 성능도 좋아졌지만 높은 연산량이 필요하도록 발전함
– 최근에 NAS계열의 Architecture Search도 있지만 역시 너무 복잡함.
– 모바일에 맞는 Architecture를 찾는게 목표

 

Recap

– Mobilenet V1 은 Depthwise와 Pointwise(1 x 1)의 결합
– 첫번째로 각 채널별로 3×3 콘볼루션을 하고 다시 Concat 하고
– 두번째로 각각 1 x 1 콘볼루션을 하면
– 스탠다드 3 x 3 콘볼루션의 결과와 같이 나온다.
– 밑에 짤렸는데 h x w x 1인 output이 나옴
– 가로 방향과 2D와 세로방향을 1D로 factorization
– 연산량을 많이 줄일수 있음

연산량을 보자

– i 붙은것이 입력(height, width, depth)
– 콘볼루션 연산 k x k(여기서 k는 3) 가로 세로는 바뀌지 않고 채널수만 dj로 바뀌는 것으로 가정
– 스탠다드 연산량 : 아웃풋 기준으로 h w d 랑 콜롤루션 k를 전부 다 곱하는것과 비슷
– Depthwise 연산은 아웃풋 인풋이랑 아웃풋이랑 같고, 아웃풋의 채널이 1이니깐 k*K
– 8이나 9분의 1이 된다.

 

모바일넷

– 3 x 3을 depthwise랑 1 x 1을 합쳐서 만듬( Xception 논문과 비슷함)

Width Multiplier & Resolution Multiplier

– Layer의 채널수를 줄이는것 (보통 3/4, 1/2로 줄임)
– Input Image의 해상도를 줄이는것

Mobile Net v2 Key feature

– Depthwise Separable
– Linear Bottlenecks
– Inverted Residual

 

LinearBottlenecks

– LinearBottlenecks는 수학적으로도 증명 되었다고함.
– Real Image를 Input을 받았을때 뉴럴넷의 어떤 레이어들은 Manifold of interest 라고 생각한다
– Manifold of interest는 lowdemensional subspaces로 embedding이 가능하리라고 믿음

– 결국 논문에서는 Manifold of interest가 non-zero volume을 가졌을때 ReLU를 통과하면 Linear transformation을 할수 있음
– Input manifold가 input space low demensional subspace에 살고 있다면 Linear bottle necks을 쓰면 도 효과적일것이다.

– 바틀넷을 쓸때 ReLU를 쓰면 성능이 떨어지는 실험결과도 있음(Linear layer가 뭔지 잘 모름)

Residual Blocks

– 보통 채널이 많은 구조에서 1 x 1을 써서 bottleneck을 일으키고 그 다음에 3 x 3으로 컨볼루션 하고
– 레지듀얼 써야 하니깐 다시 1 x 1을 써서 채널을 맞추고, 더해준다.
– wide -> narrow -> wide

Inverted Residuals

– 빗금쳐져 잇는 것이 Linear layer ReLU없이 들어온 것임
– 빗금 쳐져 있는 부분은 즉 bottle necks부분은 모든 정보를 가지고 있다고 가정하므로, 그 부분으로 레지듀얼을 만들어도 상관없을 것임
– 메모리 사용량도 적어짐
– narrow -> wide -> narrow
– 반대로 했다라고 해서 Inverted

Bottleneck Residual Blocks

– narrow상태로 들어오면
– 1 x 1으로 채널을 키움 -> BN -> ReLU6(6이상이면 그냥 6으로)

– 3 x 3을 Depthwise하고 -> BN -> ReLU6

– 1 x 1을 다시 줄이는 (Bottlenet) -> 그리고 Residual 합침
* expansion factor : 얼만큼 늘이고 줄이냐를 t  -> 6
(5에서 10정도가 제일 좋다고 함)

Operations

– 파란색이 아웃풋, 빨간색이 컨볼루션 필터의 사이즈, t만큼 확대 되고, depthwise하고, 마지막으로  1 x 1 하고 등등
– Mobile Net v1보다 연산량이 많아 보이지만 채널수을 더 적은 가지고 할 수 있기 때문에 V1의 60%가 된다고함

Information Flow Interperetation

– capacity 와 expressiveness를 잘 분리 시켰다.
– 실제로  expansion은 모델의 expressiveness 조절하는 역할을 하고
– capacity는 bottle neck에서 결정한다.

The Architecture of MobileNetV2

– 첫번째는 노멀 컨볼루션
– t : Expanstion ratio, c는 채널, n은 몇번 반복하느냐, s는 stride(스샷때문에 안보임)

Memory Efficeint Inference

– 결국 레지듀얼은 밖에서 가져 와야하는데 작은거를 들고 있는게 효과적이다.

 

비교

– Mobile V2는 2가지가 있음 Stride 1인것, Stride가 2인것
– Stride가 2인것은 레지듀얼이 없음.

The Max Number of channels

– 메모리 사용량이 제일 적음

ImageNet Classification Results

– V1보다는 확실히 좋음 shuffle Net이랑 비슷함


Object Detection – SSDLite

– Depthwise로 바꿔서 적용 했음
– 파라미터가 확 적음

 

출저 : https://arxiv.org/pdf/1801.04381.pdf

Leave a Reply

Your email address will not be published. Required fields are marked *