일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데이터베이스
- 신경망
- 교차엔트로피오차
- 최댓값
- sigmoid
- 평균
- max
- join
- COUNT
- PyQt5
- next.js 튜토리얼
- 밑바닥부터 시작하는 딥러닝
- total
- 미니배치
- 제약조건
- Next.js
- 시험데이터
- Depthwise Convolution
- Depthwise Separagle Convolution
- MIN
- sqlite3
- sum
- 합계
- 학습 구현
- PYTHON
- 오차제곱합
- AVG
- Pointwise Convolution
- 렐루함수
- 수치미분
- Today
- Total
우잉's Development
MobileNet 논문 리뷰 본문
이번에 리뷰할 논문은 MobileNets: Efficient Convolution Neural Networks for Mobile Vision Application입니다.
Abstract
Xception에서 Depthwise separable convolution을 활용하여 감소한 파라미터 수 만큼 층을 쌓아 성능을 높이는데
집중했습니다. MobileNet은 반대로 경량화에 중점을 뒀습니다. 경량화에 중점을 둔 이유는 핸드폰이나 임베디드 시스템 같이 저용량 메모리 환경에 딥러닝을 적용하기 위해서 모델 경량화가 필요하기 때문입니다.
Introduction
합성곱 신경망은 대중화 되면서 컴퓨터 비전에서 흔하게 됬습니다. 일반적으로 더 높은 정확도를 높이기 위해서 더 깊고 복잡한 네트워크를 만드는 것이 일반적인 트랜드였습니다. 그러나 네트워크의 크기와 속도를 더 효율적으로 만들기에 정확도를 높이는게 맞다고 할 수 없습니다.
모바일 및 임베디드 비전 애플리케이션에 맞게 매우 작고 짧은 지연시간 모델을 구축하기 위해 효율적인 네트워크 구조와 두개의 하이퍼 파라미터를 사용하는 MobileNet을 소개합니다.
MobileNet Architecture
1) Depthwise Separable Convolution
Depthwise Separable Convolution은 Depthwise Convolution 이후에 Pointwise Convolution을 결합한 것입니다.
일반적인 Convolution 연산
옆의 그림은 일반적인 convolution 연산의 모습입니다.
필터의 크기는 \(K\) x \(K\)이고 이미지의 높이 너비는 \(F\),
입력 채널 수는 \(N\), 출력 채널 수(=필터 수)는 M입니다.
이 경우 총 연산량은 \(F^2\)x\(K^2\)x\(N\)x\(M\)입니다.
Depthwise Convolution
Depthwise Convolution은 각 입력 채널에 대하여 3x3 conv 하나의 필터가 연산을 수행하여 하나의 피쳐맵을 생성합니다. 입력 채널 수가 M개 이면 M개의 피쳐맵을 생성하는 것입니다. 입력 feature map의 각 채널마다 각기 다른 커널을 사용합니다. 채널마다 다른 필터가 적용되기 때문에 출력 채널의 수는 입력 채널의 수와 동일합니다.
즉, 필터 수 = 출력 채널 수
총 연산량을 계산해보면 \(F^2\)x\(K^2\)x\(N\)입니다. 일반적인 convolution보다 연산량이 적어지는 이유는 채널 axis로 연산이 이루어지지 않았기 때문입니다.
Pointwise Convolution
1x1 conv는 연산량을 줄이는데 효과적이며, 필터 수를 줄여서 차원 축소를 할 수 있습니다. pointwise convolution은 depthwise convolution과 다르게 채널 방향으로 연산을 수행하고 공간 방향으로 연산을 하지 않는다.
총 연산량은 \(F^2\)x1^2x\(N\)x\(M\) 입니다.
Depthwise Separable Convolution
|
일반적인 convolution에서는 채널방향과 공간 방향의 convolution을 동시에 수행합니다. 그러나 depthwise separable convolution은 공간 방향의 depthwise convolution과 채널 방향의 pointwise convolution을 따로 수행하여 합치는 방식입니다.
2) Network Structure and Training
첫 번째 conv를 제외하고 depthwise separable convolution을 사용합니다. 마지막 FC레이어를 제외하고 모든 레이어에 BN, ReLU를 사용합니다. Down-sampling은 depthwise convolution과 첫 번째 conv layer에서 수행합니다. 총 28레이어를 갖고있습니다.
하이퍼파라미터
MobileNet은 모델의 latency와 accuracy를 조절하는 두개의 하이퍼파라미터가 존재합니다.
첫 번째는 Width Multiplier과 두 번짼느 Resolution Multiplier입니다. 두가지를 살펴 봅시다.
1) Width Multiplier : Thinner Models
기본 MobileNet alchitecture은 이미 작고 지연시간이 짧지만 특장 사용 사례 또는 애플리케이션에 따라 모델이 더 작고 더 빨라야 하는 경우가 많습니다. 이러한 경우에는 Width Mulitplier라고 하는 매우 간단한 매개변수 \(\alpha\)를 도입합니다. Width Muliplier \(\alpha\)는 MobileNet의 두께를 결정합니다. conv net에서 두께는 각 레이어에서 필터수를 의미합니다. 이 width Multiplier \(\alpha\)는 더 얇은 모델이 필요할 때 사용합니다. 입력채널 M과 출력채널 N에 적용하여 \(alpha M\), \(alpha N\)이 됩니다. 따라서 연산량은 다음과 같습니다.
\(D_k \cdot D_k \cdot \alpha M \cdot D_F \cdot D_F + \alpha M \cdot \alpha N \cdot D_F \cdot D_F \)
여기서 \(\alpha \in (0, 1]\) 이며 1, 0.75, 0.5, 0.25가 일반적인 설정입니다.
기준 MobileNet은 \(\alpha\)= 1이고 \(\alpha < 1\)이면 감소된 MobileNet입니다.
2) Resolution Multiplier : Reducted Representation
두 번째 Resolution Multiplier \(\rho\)는 신경망의 계산비용을 줄이기 위한 파라미터입니다. \(\rho\)는 입력 이미지에 적용하여 해상도를 낮춥니다. 범위는 \(\rho \in (0, 1]\)이고 네트워크의 입력 해상도는 224, 192, 160 또는 128입니다. MobileNet의 기준은 \(\rho=1\)이고 \(\rho<1\)은 축소 계산 MobileNet입니다.
Resolution multiplier은 \(\rho^2\)만큼 줄이는 효과가 있습니다.
다른 모델과 성능 비교
기본MobileNet, GoogleNet, VGG16과 비교해봅시다.
MobileNet은 VGG16만큼 정확성을 나타내지만 32배
더작고 27배 계산이 적습니다. 또한 GoogleNet보다 정확하지만 더작고 계산량이 2.5배이상 적습니다.
\(\alpha=0.5\), 해상도 160x160으로 감소된 MobileNet과 Squeezenet, AlexNet을 비교합니다.
축소된 MobileNet은 AlexNet보다 4% 더 우수하고 AlexNet보다 45배 작고 계산량이 9.4배 적습니다.
또한 Squeezenet은 동일한 크기지만 Squeezenet보다 4% 더 우수합니다.
'Deep learning > 논문' 카테고리의 다른 글
MobileNet 논문 리뷰 (0) | 2022.01.21 |
---|---|
Mask R-CNN 논문 리뷰 (0) | 2022.01.19 |