자습용으로 작성한 자료 입니다. 출처는 맨 밑에 있습니다.
관련된 논문
– 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