"MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications"
논문 리뷰입니다.
https://arxiv.org/pdf/1704.04861.pdf
2017년 4월에 Google Inc. 에서 발표한 MobileNet v1 논문을 간략하게 정리해보겠습니다.
- 성능 저하를 최소화하면서 딥러닝 모델 파일의 크기를 줄이는 것이 목적
- 요점 3가지: Depthwise separable convolution, Width multiplier, Resolution multiplier
목차
MobileNet 소개
ConvNet은 computer vision 분야라면 어디서든 사용되었지만, 모델의 크기가 너무 커지고 가성비가 좋지 않았습니다. MobileNet이 경량화에 집중한 이유는 핸드폰이나 임베디드 시스템 같이 저용량 메모리 환경에 딥러닝을 적용하기 위해서는 모델 경량화가 필요하기 때문입니다.
그래서 이 논문에서는 모델의 크기와 성능을 적절히 선택할 수 있도록 하는 2개의 hyper-parameter를 갖는 효율적인 모델을 제시합니다.
MobileNet이 어떻게 경량화에 성공했고, 구조를 이해하기 위해서는 Depthwise separable convolution에 대한 개념이 우선 필요합니다.
Depthwise separable convolution
(a)에 보이는 모양이 일반적으로 딥러닝에 사용되는 Filter입니다.
가로, 세로가 D K 고 Channel이 M개인 것이 Filter 하나가 되는데 그런 Filter가 총 N개가 되는 구조입니다.
일반적인 ConvNet은 parameter 개수가 너무 많기 때문에 MobileNet에서는 (b) 그림처럼
각 Channel에 대해서 따로따로 Filter를 만들어서 해당 Filter에 (c) 그림의 1x1 Conv를 적용을 하여
최종적으로 (a) 번과 같은 결과물을 만들어냄을 통해 parameter 개수를 많이 줄이자 라는 것이 이 논문의 주된 목표입니다.
따라서, Depthwise convolution에 1x1 convolution을 순차적으로 적용시키는 것이 이 논문의 핵심입니다.
이 기술은 이 논문을 쓴 연구자들이 만들어 낸 것이 아니고, L. Sifre's라는 사람의 박사논문에서 처음 도입되었다고 합니다.
Depthwise separable convolution 상세 (1)
먼저 일반적인 Convolution Neural Network에서는 어떻게 처리하는지를 살펴보겠습니다.
입력 크기는 D F X D F X M이라고 가정하겠습니다.
보통은 3x3이나 5x5를 많이 쓰는데, 이 논문에서는 가로, 세로를 D K로 그리고 depth는 M으로 표기했습니다.
이런 Filter를 우리가 원하는 N개만큼 적용하게 됩니다.
첫 번째 Filter가 입력 영상에 적용이 되면, 새로운 결과물 영상도 가로, 세로가 D F 이고 필터 하나당 Channel이 생깁니다. Filter는 N개가 있으니 N개가 생깁니다.
따라서, 이것이 출력이 됩니다.
이런 경우에 계산이 얼마나 이루어질까요?
Filter 하나당 D K X D K X M 만큼의 계산이 이루어지고 이러한 Filter가 N개가 있습니다.
그리고 이러한 각각의 Filter가 N개가 있고 D F X D F 만큼의 연산이 이루어져야 합니다.
따라서, 이것이 일반적인 Convolution Neural Network에서 연산량이 됩니다.
Depthwise separable convolution 상세 (2)
그렇다면 Depthwise separable Convolution에서는 계산량을 어떤 방식으로 줄이게 되었는지 알아보도록 하겠습니다.
일반적인 CNN에서는 Filter하나의 크기가 D K X D K X M 인 것을 N개 사용했었는데,
Depthwise separable convolution에서는 D K X D K X 1(channel)인 Filter를 M개 만듭니다.
즉, 입력에 있는 각각 M개의 channel에 대한 Filter를 따로따로 만들어 주겠다 라는 말입니다.
그다음에 첫 번째 Filter는 첫 번째 channel에 적용하고, 두 번째 Filter는 두 번째 channel에 적용하고, 마지막 Filter는 마지막 channel에 적용을 하면 중간 결과물은 입력 값과 같은 D F X D F X M 이 나올 것입니다.
각각의 channel은 Filter 하나하나가 입력 값에 적용되어서 나온 결과물입니다.
이제 이곳에 1 X 1 Convolution을 적용하게 됩니다.
Channel이 M개인 1 X 1 하나를 적용해주면 가로, 세로가 D F이고 depth가 1인 것이 나오게 됩니다.
이런 channel을 N개 적용함에 따라 일반적인 CNN 결과물과 똑같은
D F X D F X N 이 나오게 됩니다.
그렇다면 계산량은 어떻게 될까요?
각각의 Channel에 대해 Filter을 따로 적용하는 경우에 parameter 개수가
D K X D K 이런 M개의 channel을 D F X D F 해줘야 합니다.
그다음에 M개 짜리가 N개 있는 것에 D F X D F 해준 것을 더해줍니다.
원래 CNN에 비해서 얼마나 줄어드는지 비율을 통해 알아보면 1/N + 1/D2K 만큼 계산량이 줄어들게 됩니다
이것이 무슨 의미일까요?
Convolution을 쓴다는 것은 각각의 channel에 대한 Filtering을 하고 필요한 정보만 뽑아서 합친 후 새로운 특징을 만들어 낸다는 것입니다. 이 것을 일반적으로 한 단계로 진행 하지만, 해당 논문에서는 두 단계로 합니다.
첫 번째 단계 : 정보 Filtering
두 번째 단계: Filtering 된 정보들을 내가 원하는 방식으로 잘 조합해서 새로운 feature를 만드는 것
지금까지 이 논문에서의 제일 중요한 핵심들을 설명했습니다.
그 외 성능 향상을 위한 기법들
MobileNet은 모델의 latency와 accuracy를 조절하는 두 개의 하이퍼 파라미터가 존재합니다.
Width Multiplier: Thinner Models
예를 들어보겠습니다.
channel이 64개고 알파가 1/4이면 channel이 16개로 축소됩니다.
데이터가 줄어드니까 계산량이 줄어들고 속도가 빨라지지만 그 대신 정확도가 내려간다는 단점이 있습니다.
Depth가 달라지는 건데 Width multiplier라고 한 이유를 모르겠습니다.
Resolution Multiplier: Reduced Representation
해상도를 바꾸는 것이다. Resolution Multiplier야 말로 width, height 개념 같습니다.
예를 들어보겠습니다.
만약 가로세로가 224 x 224 일 때 로우가 0.571이면
채널은 그대로인데 128 x 128로 작업을 하겠다는 뜻입니다.
영상 크기가 줄어서 데이터가 줄면서 계산량이 줄어들고 속도가 빨라지지만 정확도가 떨어집니다.
결론(성능)
해당 논문에서는 위 그림 자료 말고도 성능 test 한 실험들이 많습니다.
논문을 읽으면서 예상했듯이 속도가 빨라지고 정확도가 내려갔다는 결과가 대부분이었습니다.
어떤 부분에서는 기존의 나왔던 모델들보다 정확도가 높은 경우도 있었습니다.
일반적으로는 정확도가 살짝 내려가면서 모델 크기를 많이 줄이고 속도를 빠르게 했다는 부분을 논문 후반부에서 계속 주장하는 내용입니다.
참고자료
https://greeksharifa.github.io/computer%20vision/2022/02/01/MobileNetV1/
https://deep-learning-study.tistory.com/532
'Main > Paper Review' 카테고리의 다른 글
[Paper Review] LWF: Learning Without Forgetting (0) | 2022.12.19 |
---|---|
[Paper Review] Transformer: Attention Is All You Need (0) | 2022.07.12 |
[Paper Review] SENet: Squeeze-and-Excitation Networks (0) | 2022.05.16 |
[Paper Review] Batch Normalization (1) | 2022.03.31 |
[CNN-Algorithm] ResNet (0) | 2022.03.22 |
댓글