2022. 2. 8. 18:17ㆍComputer Vision
MobileNetV2: Inverted Residuals and Linear Bottlenecks
Mark Sandler Andrew Howard Menglong Zhu Andrey Zhmoginov Liang-Chieh Chen
Google Inc.
Abstract
이 논문에서는 다양한 모델 크기의 스펙트럼뿐만 아니라 여러 작업 및 벤치마크에서 모바일 모델의 최신 성능을 향상시키는 새로운 모바일 아키텍처인 MobileNetV2에 대해 설명합니다.
또한 우리는 SSDLite라고 하는 새로운 프레임워크에서 이러한 모바일 모델을 객체 감지에 적용하는 효율적인 방법을 설명합니다.
또한 Mobile DeepLabv3이라고 하는 축소된 형태의 DeepLabv3을 통해 모바일 의미론적 세분화 모델을 구축하는 방법을 보여줍니다.
이는 바로 가기 연결이 얇은 병목 계층 사이에 있는 역잔차 구조를 기반으로 합니다.
중간 확장 레이어는 비선형성의 소스로 피처를 필터링하기 위해 가벼운 깊이별 컨볼루션을 사용합니다.
또한 표현력을 유지하기 위해 좁은 레이어에서 비선형성을 제거하는 것이 중요하다는 것을 알았습니다.
우리는 이것이 성능을 향상시키고 이 디자인으로 이어진 직관을 제공한다는 것을 보여줍니다.
마지막으로, 우리의 접근 방식은 추가 분석을 위한 편리한 프레임워크를 제공하는 변환의 표현성에서 입력/출력 도메인의 분리를 허용합니다.
ImageNet[1] 분류, COCO 객체 감지[2], VOC 이미지 분할[3]에 대한 성능을 측정합니다.
정확도와 곱하기 더하기로 측정한 작업 수(MAdd), 실제 지연 시간, 매개변수 수 간의 균형을 평가합니다.
1. Introduction
신경망은 기계 지능의 많은 영역에 혁명을 일으키며 까다로운 이미지 인식 작업을 위한 초인적인 정확도를 가능하게 합니다.
그러나 정확도를 향상시키려는 노력에는 대가가 따르는 경우가 많습니다: 최신 네트워크는 많은 모바일 및 임베디드 애플리케이션의 기능을 넘어서는 높은 계산 리소스를 필요로 합니다.
이 논문에서는 모바일 및 리소스가 제한된 환경에 맞게 특별히 설계된 새로운 신경망 아키텍처를 소개합니다.
우리의 네트워크는 동일한 정확도를 유지하면서 필요한 작업 및 메모리 수를 크게 줄임으로써 모바일 맞춤형 컴퓨터 비전 모델에 대한 최신 기술을 제공합니다.
우리의 주요 기여는 선형 병목 현상이 있는 역 잔차인 새로운 레이어 모듈입니다.
이 모듈은 먼저 고차원으로 확장되고 가벼운 깊이별 컨볼루션으로 필터링되는 저차원 압축 표현을 입력으로 사용합니다.
피쳐는 이후 선형 컨볼루션을 사용하여 저차원 표현으로 다시 투영됩니다.
공식 구현은 [4]에서 TensorFlow-Slim 모델 라이브러리의 일부로 사용할 수 있습니다.
이 모듈은 모든 최신 프레임워크에서 표준 작업을 사용하여 효율적으로 구현될 수 있으며 표준 벤치마크를 사용하여 여러 성능 포인트에서 최신 모델을 능가할 수 있습니다.
또한, 이 컨볼루션 모듈은 대형 중간 텐서를 완전히 구체화하지 않음으로써 추론 중에 필요한 메모리 공간을 크게 줄일 수 있기 때문에 모바일 설계에 특히 적합합니다.
이것은 소량의 매우 빠른 소프트웨어 제어 캐시 메모리를 제공하는 많은 임베디드 하드웨어 설계에서 주 메모리 액세스의 필요성을 줄입니다.
2. Related Work
정확도와 성능 사이의 최적의 균형을 유지하기 위해 심층 신경 아키텍처를 조정하는 것은 지난 몇 년 동안 활발한 연구 영역이었습니다.
수많은 팀에서 수행한 수동 아키텍처 검색과 학습 알고리즘의 개선은 AlexNet[5], VGGNet[6], GoogLeNet[7] 및 ResNet[8] 과 같은 초기 설계에 비해 극적인 개선으로 이어졌습니다.
최근에는 하이퍼파라미터 최적화[9, 10, 11]와 네트워크 가지치기[12, 13, 14, 15, 16, 17] 및 연결 학습[18, 19]의 다양한 방법을 포함하는 알고리즘 아키텍처 탐색에 많은 진전이 있었습니다. .
ShuffleNet[20]과 같은 내부 컨볼루션 블록의 연결 구조를 변경하거나 희소성[21] 및 기타[22]를 도입하는 데에도 상당한 양의 작업이 투입되었습니다.
최근 [23, 24, 25, 26]은 유전 알고리즘과 강화 학습을 포함한 최적화 방법을 아키텍처 검색에 적용하는 새로운 방향을 제시했습니다.
그러나 한 가지 단점은 결과 네트워크가 매우 복잡해진다는 것입니다.
이 논문에서 우리는 신경망이 작동하는 방식에 대한 더 나은 직관을 개발하고 이를 사용하여 가능한 가장 간단한 네트워크 설계를 안내하는 목표를 추구합니다.
우리의 접근 방식은 [23] 및 관련 작업에 설명된 접근 방식을 보완하는 것으로 간주되어야 합니다.
이러한 맥락에서 우리의 접근 방식은 [20, 22]에서 취한 접근 방식과 유사하며 내부 작동을 엿볼 수 있는 동시에 성능을 더욱 향상시킬 수 있습니다.
우리의 네트워크 설계는 MobileNetV1[27]을 기반으로 합니다.
단순함을 유지하고 특수 작업자가 필요하지 않으며 정확도가 크게 향상되어 모바일 애플리케이션을 위한 다중 이미지 분류 및 감지 작업에 대한 최신 기술을 달성합니다.
3. Preliminaries, discussion and intuition
3.1. Depthwise Separable Convolutions
Depthwise Separable Convolutions는 많은 효율적인 신경망 아키텍처[27, 28, 20]의 핵심 빌딩 블록이며 현재 작업에서도 이를 사용합니다.
기본 아이디어는 전체 컨볼루션 연산자를 컨볼루션을 두 개의 개별 레이어로 분할하는 인수분해 버전으로 대체하는 것입니다.
첫 번째 레이어를 depthwise 컨볼루션이라고 하며 입력 채널당 단일 컨볼루션 필터를 적용하여 경량 필터링을 수행합니다.
두 번째 레이어는 pointwise 컨볼루션이라고 하는 1x1 컨볼루션으로, 입력 채널의 선형 조합을 계산하여 새로운 기능을 구축하는 역할을 합니다.
표준 컨볼루션은 hi x wi x di 입력 텐서 Li를 사용하고 컨볼루션 커널 K ∈ R^(k x k x di x dj)를 적용하여 hi x wi x dj 출력 텐서 Lj를 생성합니다.
표준 컨볼루션 레이어의 계산 비용은 hi x wi x di x dj x k x k입니다.
깊이 분리 가능한 컨볼루션은 표준 컨볼루션 레이어를 대체하는 드롭인입니다.
경험적으로 그들은 일반 컨볼루션만큼 잘 작동하지만 비용은 다음과 같습니다:
이것은 depthwise 컨볼루션과 1x1 pointwise 컨볼루션의 합입니다.
효과적으로 깊이별 분리 가능한 컨볼루션은 기존 레이어에 비해 거의 k^2 요소로 계산을 줄입니다.
MobileNetV2는 k=3(3x3 depthwise separable convolutions)을 사용하므로 계산 비용은 정확도가 약간 감소하면서 표준 컨볼루션보다 8~9배 더 작습니다[27].
3.2. Linear Bottlenecks
각각 hi x wi x di 차원의 활성화 텐서를 갖는 n개의 레이어 Li로 구성된 심층 신경망을 고려하십시오.
이 섹션 전체에서 우리는 이러한 활성화 텐서의 기본 속성에 대해 논의할 것이며, 이를 di 차원의 hi x wi "픽셀" 컨테이너로 취급합니다.
비공식적으로 실제 이미지의 입력 세트에 대해 레이어 활성화 세트(모든 레이어 Li에 대해)가 "관심 있는 매니폴드"를 형성한다고 말합니다.
신경망에서 관심 있는 매니폴드가 저차원 부분 공간에 포함될 수 있다고 오랫동안 가정해 왔습니다.
다시 말해, deep convolutional layer의 모든 개별 d-channel 픽셀을 볼 때 해당 값으로 인코딩된 정보는 실제로 일부 매니폴드에 있으며, 이는 차례로 저차원 부분 공간에 포함될 수 있습니다.
언뜻 보기에 이러한 사실은 단순히 레이어의 차원을 줄여서 작동 공간의 차원을 줄임으로써 포착되고 활용될 수 있습니다.
이것은 폭 승수 매개변수를 통해 계산과 정확도 사이를 효과적으로 절충하기 위해 MobileNetV1[27]에 의해 성공적으로 활용되었으며 다른 네트워크의 효율적인 모델 설계에도 통합되었습니다[20].
그 직관에 따라 너비 승수 접근법을 사용하면 관심 있는 다양체가 이 전체 공간에 걸쳐 있을 때까지 활성화 공간의 차원을 줄일 수 있습니다.
그러나 이 직관은 deep convolutional 신경망이 실제로 ReLU와 같이 좌표당 비선형 변환을 갖는다는 것을 기억할 때 무너집니다.
예를 들어, 1D 공간의 선에 적용된 ReLU는 '선'을 생성하며, R^n 공간에서와 같이 일반적으로 n-조인트가 있는 조각별 선형 곡선을 생성합니다.
일반적으로 레이어 변환의 결과 ReLU(Bx)가 0이 아닌 볼륨 S를 갖는 경우 내부 S에 매핑된 점은 입력의 선형 변환 B를 통해 얻어지며, 따라서 전체 차원 출력에 해당하는 입력 공간은 선형 변환으로 제한됩니다.
다시 말해, 심층 네트워크는 출력 도메인의 0이 아닌 볼륨 부분에 대해서만 선형 분류기의 성능을 갖습니다.
보다 공식적인 진술은 보충 자료를 참조하십시오.
반면에 ReLU가 채널을 접으면 필연적으로 해당 채널의 정보를 잃게 됩니다.
그러나 채널이 많고 활성화 매니폴드에 구조가 있는 경우 정보가 다른 채널에 여전히 보존될 수 있습니다.
보충 자료에서 입력 매니폴드가 활성화 공간의 상당히 낮은 차원 부분 공간에 포함될 수 있는 경우 ReLU 변환이 정보를 보존하면서 필요한 복잡성을 표현 가능한 기능 세트에 도입한다는 것을 보여줍니다.
요약하자면, 우리는 관심 있는 다양체가 고차원 활성화 공간의 저차원 부분 공간에 있어야 한다는 요구 사항을 나타내는 두 가지 속성을 강조했습니다:
1. ReLU 변환 후에도 관심 있는 매니폴드가 0이 아닌 볼륨으로 남아 있으면 선형 변환에 해당합니다.
2. ReLU는 입력 매니폴드에 대한 완전한 정보를 보존할 수 있지만, 입력 매니폴드가 입력 공간의 저차원 부분 공간에 있는 경우에만 가능합니다.
이 두 가지 통찰력은 기존 신경 아키텍처를 최적화하기 위한 경험적 힌트를 제공합니다: 관심 있는 매니폴드가 저차원이라고 가정하면 선형 병목 레이어를 컨볼루션 블록에 삽입하여 이를 캡처할 수 있습니다.
실험적 증거는 선형 레이어를 사용하는 것이 비선형성이 너무 많은 정보를 파괴하는 것을 방지하기 때문에 중요하다고 제안합니다.
섹션 6에서 우리는 병목 현상에서 비선형 레이어를 사용하면 실제로 성능이 몇 퍼센트 저하된다는 것을 경험적으로 보여주므로 가설이 더욱 검증됩니다.
우리는 비선형이 도움이 된 유사한 보고서가 [29]에서 보고되었으며 여기서 비선형이 기존 잔차 블록의 입력에서 제거되고 CIFAR 데이터 세트의 성능이 향상되었습니다.
이 논문의 나머지 부분에서 우리는 병목 현상을 사용할 것입니다.
입력 병목 현상의 크기와 내부 크기의 비율을 확장 비율이라고 합니다.
3.3. Inverted residuals
병목 블록은 각 블록이 입력과 여러 병목을 포함하고 확장이 뒤따르는 잔여 블록과 유사하게 나타납니다[8].
그러나 병목 지점에는 실제로 필요한 모든 정보가 포함되어 있고 확장 계층은 텐서의 비선형 변환을 수반하는 구현 세부 사항으로만 작동한다는 직관에서 영감을 받아 병목 지점 사이에 직접 지름길을 사용합니다.
그림 3은 설계의 차이를 개략적으로 시각화한 것입니다.
지름길을 삽입하는 동기는 고전적 잔차 연결의 동기와 유사합니다: 우리는 승수 레이어에 걸쳐 전파하는 그라디언트의 능력을 개선하고자 합니다.
그러나 거꾸로 된 디자인은 훨씬 더 메모리 효율적이며(자세한 내용은 섹션 5 참조) 실험에서 약간 더 잘 작동합니다.
병목 현상에 대한 실행 시간 및 매개변수 수
기본적인 구현 구조는 표 1과 같다.
d' 입력 채널 및 d'' 출력 채널이 있는 크기 h x w, 확장 인자 t 및 커널 크기 k의 블록에 대해 필요한 곱셈의 총 수는 h x w x d' x t(d' + k2 + d'')입니다.
(1)과 비교할 때 이 표현식에는 추가 항이 있습니다, 실제로는 추가 1x1 컨볼루션이 있기 때문입니다, 그러나 네트워크의 특성으로 인해 훨씬 더 작은 입력 및 출력 차원을 활용할 수 있습니다.
표 3에서는 MobileNetV1, MobileNetV2 및 ShuffleNet 간의 각 해상도에 필요한 크기를 비교합니다.
3.4. Information flow interpretation
우리 아키텍처의 흥미로운 속성 중 하나는 빌딩 블록(병목 계층)의 입력/출력 도메인과 입력을 출력으로 변환하는 비선형 기능인 계층 변환 간의 자연스러운 분리를 제공한다는 것입니다.
전자는 각 계층의 네트워크 용량으로 볼 수 있고 후자는 표현력으로 볼 수 있습니다.
이는 표현력과 용량이 모두 함께 얽혀 있고 출력 레이어 깊이의 함수인 일반 및 분리 가능한 기존 컨볼루션 블록과 대조됩니다.
특히, 우리의 경우 내부 레이어 깊이가 0일 때 지름길 연결 덕분에 기본 컨볼루션은 항등 함수입니다.
확장 비율이 1보다 작을 때 이것은 고전적인 잔차 컨볼루션 블록[8, 30]입니다.
그러나 우리의 목적을 위해 1보다 큰 확장 비율이 가장 유용하다는 것을 보여줍니다.
이 해석을 통해 네트워크의 용량과 별도로 네트워크의 표현력을 연구할 수 있으며 네트워크 속성에 대한 더 나은 이해를 제공하기 위해 이 분리에 대한 추가 탐구가 필요하다고 믿습니다.
4. Model Architecture
이제 아키텍처를 자세히 설명합니다.
이전 섹션에서 논의한 것처럼 기본 빌딩 블록은 잔차가 있는 병목 깊이 분리 가능한 컨볼루션입니다.
이 블록의 세부 구조는 표 1과 같다.
MobileNetV2의 아키텍처에는 32개의 필터가 있는 초기 완전 컨볼루션 계층과 표 2에 설명된 19개의 잔여 병목 계층이 포함됩니다.
우리는 ReLU6을 저정밀도 계산과 함께 사용할 때의 견고성 때문에 비선형성으로 사용합니다[27].
우리는 항상 최신 네트워크의 표준으로 커널 크기 3x3을 사용하고 훈련 중에 드롭아웃 및 배치 정규화를 활용합니다.
첫 번째 레이어를 제외하고 네트워크 전체에서 일정한 확장 속도를 사용합니다.
우리의 실험에서 우리는 5와 10 사이의 확장 속도가 거의 동일한 성능 곡선을 생성한다는 것을 발견했습니다, 작은 네트워크는 약간 더 작은 확장 속도에서 더 좋고 더 큰 네트워크는 더 큰 확장 속도에서 약간 더 나은 성능을 제공합니다.
모든 주요 실험에서 입력 텐서의 크기에 적용되는 확장 계수 6을 사용합니다.
예를 들어, 64채널 입력 텐서를 사용하여 128개 채널이 있는 텐서를 생성하는 병목 계층의 경우 중간 확장 계층은 64 · 6 = 384채널입니다.
Trade-off hyper parameters
[27]에서와 같이 입력 이미지 해상도와 너비 승수를 조정 가능한 하이퍼 매개변수로 사용하여 원하는 정확도/성능 균형에 따라 조정할 수 있는 다양한 성능 지점에 아키텍처를 맞춤화합니다.
우리의 기본 네트워크(width multiplier 1, 224x224)는 3억 곱셈-덧셈의 계산 비용이 있고 340만 매개변수를 사용합니다.
우리는 96에서 224까지의 입력 해상도와 0.35에서 1.4까지의 너비 승수에 대한 성능 트레이드 오프를 탐구합니다.
네트워크 계산 비용 범위는 7 곱하기에서 5억8500만 MAdds에 이르는 반면 모델 크기는 170만에서 690만 매개변수 사이에서 다양합니다.
[27]과의 한 가지 사소한 구현 차이점은 승수가 1보다 작은 경우 마지막 컨볼루션 레이어를 제외한 모든 레이어에 너비 승수를 적용한다는 것입니다.
이렇게 하면 더 작은 모델의 성능이 향상됩니다.
5. Implementation Notes
5.1. Memory efficient inference
6. Experiments
6.1. ImageNet Classification
Training setup
TensorFlow[31]를 사용하여 모델을 훈련합니다.
감쇠와 운동량이 모두 0.9로 설정된 표준 RMSPropOptimizer를 사용합니다.
우리는 모든 레이어 후에 배치 정규화를 사용하고 표준 가중치 감쇠는 0.00004로 설정됩니다.
MobileNetV1[27] 설정에 따라 0.045의 초기 학습률과 에포크당 학습률 감쇠율 0.98을 사용합니다.
16개의 GPU 비동기 작업자와 96개의 배치 크기를 사용합니다.
Results
MobileNetV1, ShuffleNet 및 NASNet-A 모델과 네트워크를 비교합니다.
일부 선택된 모델의 통계는 그림 5에 표시된 전체 성능 그래프와 함께 표 4에 표시됩니다.
6.2. Object Detection
COCO 데이터 세트[2]에 대한 수정된 버전의 Single Shot Detector(SSD)[34]와 객체 감지를 위한 특징 추출기[33]로서 MobileNetV2 및 MobileNetV1의 성능을 평가하고 비교합니다.
또한 YOLOv2[35] 및 원본 SSD(VGG-16[6]을 기본 네트워크로 사용)를 기준선으로 비교합니다.
우리는 모바일/실시간 모델에 중점을 두고 있기 때문에 Faster-RCNN [36] 및 RFCN [37]과 같은 다른 아키텍처와 성능을 비교하지 않습니다.
SSDLite
이 논문에서는 일반 SSD의 모바일 친화적 변형을 소개합니다.
우리는 SSD 예측 계층에서 모든 일반 컨볼루션을 분리 가능한 컨볼루션(깊이별 다음 1x1 투영)으로 대체합니다.
이 디자인은 MobileNets의 전체 디자인과 일치하며 훨씬 더 계산 효율적인 것으로 보입니다.
우리는 이 수정된 버전을 SSDLite라고 부릅니다.
SSDLite는 일반 SSD와 비교하여 표 5와 같이 매개 변수 수와 계산 비용을 모두 크게 줄입니다.
MobileNetV1의 경우 [33]의 설정을 따릅니다.
MobileNetV2의 경우 SSDLite의 첫 번째 레이어는 레이어 15의 확장에 연결됩니다(출력 보폭 16).
두 번째 및 나머지 SSDLite 레이어는 마지막 레이어 위에 연결됩니다(출력 보폭 32).
이 설정은 모든 레이어가 동일한 출력 스트라이드의 기능 맵에 연결되므로 MobileNetV1과 일치합니다.
두 MobileNet 모델 모두 Open Source TensorFlow Object Detection API[38]로 훈련되고 평가됩니다.
두 모델의 입력 해상도는 320x320입니다.
우리는 mAP(COCO 챌린지 메트릭), 매개변수 수 및 곱셈 추가 수를 모두 벤치마킹하고 비교합니다.
결과를 표 6에 나타내었다.
MobileNetV2 SSDLite는 가장 효율적인 모델일 뿐만 아니라 세 가지 모델 중 가장 정확합니다.
특히 MobileNetV2 SSDLite는 COCO 데이터 세트에서 YOLOv2보다 성능이 20배 더 효율적이고 10배 더 작습니다.
6.3. Semantic Segmentation
7. Conclusions and future work
우리는 고효율 모바일 모델 제품군을 구축할 수 있는 매우 간단한 네트워크 아키텍처에 대해 설명했습니다.
우리의 기본 블럭 단위에는 모바일 애플리케이션에 특히 적합한 몇 가지 속성이 있습니다.
매우 메모리 효율적인 추론을 허용하고 모든 신경 프레임워크에 있는 표준 작업을 활용합니다.
ImageNet 데이터 세트의 경우 우리의 아키텍처는 광범위한 성능 포인트에 대한 최신 기술을 개선합니다.
객체 감지 작업의 경우 우리의 네트워크는 정확도와 모델 복잡성 측면에서 COCO 데이터 세트에서 최첨단 실시간 감지기를 능가합니다.
특히, SSDLite 감지 모듈과 결합된 우리의 아키텍처는 YOLOv2보다 계산량이 20배 적고 매개변수가 10배 적습니다.
이론적 측면에서: 제안된 컨볼루션 블록은 네트워크 표현력(확장 계층으로 인코딩됨)을 용량(병목 입력으로 인코딩됨)과 분리할 수 있는 고유한 속성을 가지고 있습니다.
이를 탐색하는 것은 향후 연구의 중요한 방향이다.
'Computer Vision' 카테고리의 다른 글
NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING (0) | 2022.02.22 |
---|---|
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (0) | 2022.02.10 |
FaceNet, A Unified Embedding for Face Recognition and Clustering (0) | 2021.11.19 |
Deeper Depth Prediction with Fully Convolutional Residual Networks (번역) (0) | 2021.04.19 |
DenseNet: Densely Connected Convolutional Networks (번역) (0) | 2021.03.04 |