모델의 정확도를 높일 때, 일반적으로
(1) 모델의 깊이,
(2) 너비,
(3) 입력 이미지의 크기
를 조절합니다. 기존에는 이 세 가지를 수동으로 조절하였기 때문에, 최적의 성능과 효율을 얻지 못했습니다.
EfficientNet은
3가지를 효율적으로 조절할 수 있는 compound scaling 방법을 제안합니다. 깊이, 너비, 입력 이미지 크기가 일정한 관계가 있다는 것을 실험적으로 찾아내고, 이 관계를 수식으로 만듭니다.
Compound scaling 방법으로 NAS(neural architecture search) 구조를 수정하여 SOTA를 달성합니다. ResNet이나 MobileNet등 CNN 기반 구조에도 효과가 있다고 하네요.
Model Scaling
일반적으로 모델을 Scaling하는 방법은 (b)너비, (c)깊이, (d)입력 해상도를 조절하는 것입니다.
(a) baseline에서 입력값은 각 레이어 함수(f)를 거쳐서 최종 출력값을 생성합니다. 이를 수식으로 표현하면 다음과 같습니다.
입력값 X가 각 레이어의 함수 F()연산을 거쳐서 출력값 N이 생성됩니다. 이를 일반화하면 다음과 같습니다.
여기에서, 각 레이어에서 수행하는 연산(F)를 고정하고, 레이어수, 채널 수, 입력 이미지 크기에만 집중하여 search space가 감소합니다.
위 수식을 보면 w, d, r 상수가 생겼네요. 이 상수들의 관계를 연구한 것이 EfficientNet 입니다.
w(너비), d(깊이), r(입력 해상도)에 따른 정확도 값입니다. 그림을 보면 w, d, r이 일정 값 이상이 되면 정확도가 빠르게 saturate 합니다. 그리고, w, d, r이 낮을 때는 약간만 값을 조절해도 효과가 크네요. w, d, r 중 하나만 조절하는 것보다 d와 r을 함께 조절하여 최고의 효율을 찾아내는 것이 Compound Scailing 입니다.
Compound Scailing
Compound Scailing은 아래와 같은 과정으로 진행합니다.
ResNet과 MobileNet을 Compound Scailing했을 때의 결과입니다.
EfficientNet의 너비, 깊이, 입력 해상도를 하나만 조절했을 때와 compound scaling을 했을 때의 성능 비교입니다.
동일한 연산량을 갖으면서 Compound Scale이 성능이 제일 좋네요.
EfficientNet Architecture
EfficientNet은 MnasNet과 동일한 search space를 사용해서 찾은 구조입니다. 따라서 MnasNet 구조와 비슷합니다. MnasNet 구조는 아래 그림과 같습니다.
아래는 EfficientNet 구조입니다. MBConv는 MnasNet에서 사용하는 Conv 구조입니다.
Performance
ImageNet 데이터셋에서 성능입니다.
FLOPs와 정확도를 비교한 그림입니다.
'딥러닝&머신러닝 > Paper Review' 카테고리의 다른 글
Fast Nearest Convolution for Real-Time Effictient Image Super-Resolution[논문리뷰] (1) | 2024.01.10 |
---|---|
[논문리뷰] ESRGAN (1) | 2024.01.03 |
CNN의 parameter 개수와 tensor 사이즈 계산하기 (0) | 2023.03.30 |
NFNet 논문 번역(추후에 리뷰) (2) | 2023.03.28 |
The Forward-Forward Algorithm: Some Preliminary Investigations 논문 리뷰 (2) | 2023.03.09 |
댓글