[논문리뷰] EfficientNet : Rethinking Model Scaling for Convolutional Neural Networks

jaeyeon_lee·2023년 9월 7일

Paper Review

목록 보기
2/3

저번 논문리뷰에서 Resnet에 대해 이야기했었는데, resnet 이후 한번 더 효율성을 높인 방법론인 EfficientNet에 대해 알아보겠습니다.

EfficientNet


Introduction

이 논문에서는 mobilenet, resnet, gpipe를 계속해서 언급하고있습니다. 그래서 이 세가지 모델을 간단히 살펴보면, mobilenet은 depthwise을 활용하여 학습이 잘되게 만든 모델이고, resnet은 저번에도 말했듯이 중간중간에 skip-connection을 통해 학습이 잘되게 만든것입니다. 그리고 g-pipe model은 메모리를 많이 차지하는 큰 모델을 효율적으로 학습하는데 유용한 모델이라고 합니다.

이러한 모델들과 같이 기존에 CNN에서 정확도를 높이기 위해 사용한 방법으로는 대표적으로 3가지 방법이 있습니다.

첫번째는 깊이를 늘리는 것 즉 layer의 개수를 늘리는 것

두번째는 width scaling, filter의 개수를 늘리는 것

마지막 방법은 input image의 resolution을 올리는 것

기존에는 이 세가지 방법중 한가지만을 선택해 정확도를 높여왔습니다.

본 논문에서는 CNN의 더 높은 정확도와 효율성을 달성할 수 있는 Scaling 방법의 원칙을 찾고자 연구를 진행하였습니다.

그 결과로, 세가지 방법의 적절한 밸런스가 더 좋은 성능을 이끌어낸다고 말하며 세가지 사이의 관계를 수식으로 표현하고 균형을 맞춰 효율적으로 조절할 수 있는 Compound Coefficient을 제안하였습니다. 이때 Compound Scaling의 효과는 baseline network에 따라 성능이 크게 좌지우지 되기때문에 이 연구에서는 새로운 baseline인 EfficientNet을 제안 하였습니다. .

다음과 같은 그림을 통해 이전 모델들은 Parameters가 많을수록 정확도가 올라가는 모습과 함께 EfficientNet은 더 적은 파라미터들로 더 높은 정확도를 보인다는 것을 보여줍니다.

이것이 가능했던 이유는 본 논문에서 제시하는 compound scaling의 역할이 크다고 할 수 있습니다.


Compound Scaling

이전 연구들에서는 아까 말했듯이 세가지 방법중 하나를 선택해 scaling하여 모델의 성능을 높였습니다. 다음 그림을 살펴보면, (a)는 baseline, (b),(c),(d)는 각각 한가지 방법만 조정한 모델의 구조입니다. 마지막 e는 본 논문에서 제안하는 세가지를 모두 조정한 compound scaling입니다.


Compound scaling에서 가장 기본이 되는 공식은 y=f(x)식입니다. 여기서 x shape은 이미지 shape을 나타내는 높이, 너비, channel을 의미합니다. 한 모델에는 여러 레이어들이 쌓여있기 때문에 아래 (1)번식과 같이 표현할 수 있습니다. (합성함수의미)

대부분의 CNN이 가장 성능이 좋은 layer 아키텍쳐 fi를 찾는 것과는 달리, compound scaling은 미리 정의된 layer 구조인 fi를 변경하지 않고 나머지를 조정하는 방법입니다.

Fi를 고정하게 되면, model scaling은 아키텍처 설계 문제를 단순화 할 수 있지만 각 layer에서 각각 다른 Li,Ci,Hi,Wi를 찾아야 하는 문제가 발생합니다.

이와 같은 문제점 때문에 기존방법 대부분은 다음과 같은 차원에서 CNN을 확장합니다. 첫번째로는 layer 수를 늘리는 방법입니다. CNN 에서 가장 일반적으로 사용하는 scaling입니다.

하지만 이 방법은 깊은 모델에서 기울기 소실 문제가 생겨 학습이 어렵습니다. 이를 해결하는 방법이 있긴하지만 매우 깊은 모델에서는 효과가 없습니다.

위의 그림을 보면 깊이가 8인경우 정확도가 오히려 떨어지는것을 볼 수 있습니다.

두번째로는 주로 작은 모델에서 사용하는 channel 수를 늘리는 방법입니다. 학습과정에서 세밀한 특징을 잘 잡아내지만, 넓고 얕은 모델에서는 특징을 포착하기 어렵습니다.

위의 그림을 보면 w가 3.8에서 5.0으로 증가했음에도 정확도는 큰 차이가 없는 것을 볼 수 있습니다.

마지막으로는 이미지 해상도를 높이는 방법입니다. 고해상도 이미지일수록 세밀한 패턴을 잘 잡아내지만 오른쪽 그림을 살펴보면 어느순간부터 정확도의 상승이 줄어드는 것을 볼수있습니다.

위 실험 결과들을 통해, different scaling dimension은 독립적이지 않다는 것을 알 수 있습니다.

직관적으로 고해상도 이미지를 입력받는 경우, 더 많은 픽셀을 포함하는 유사한 feature를 추출할 수 있도록 네트워크의 깊이를 늘려야하고, 이미지에서 더 많은 픽셀을 캡쳐할수 있도록 네트워크의 채널 수도 늘려야합니다.

따라서 단일 차원을 스케일하는 것보다 모든 차원에 다른값을 스케일링할 필요가 있다는 것을 시사합니다.

이를 검증하기 위해 위 그림과 같이 서로 다른 깊이와 resolution에서 scaling한 결과를 비교했습니다.

그림을 보면 네트워크가 깊어지고, 고해상도가 될수록 정확도가 향상되는 것을 확인할 수 있습니다.

이 논문에서는 앞선 분석을 결과로 다음과 같은 관찰을 도출해냅니다.

Network의 깊이, 너비, 해상도의 차원을 스케일링하는 것은 정확도 향상에 도움이 되지만 모델이 커질수록 성능 향상 폭이 작아집니다.

두번째로는 더 나은 정확성 및 효율성을 위해 cnn의 세가지 차원의 균형을 맞추는 것이 중요하다는 것을 도출해냅니다.

따라서 본 논문에서는 위 식과 같은 compound scaling method를 제안하였습니다.

여기서 파이는 자원이 추가될 경우에, Model Scaling을 비례해서 증가시킬 계수입니다. 밑에 제곱이 있는 이유는 플롭스(1초동안 수행할 수 있는 부동소수점 연산의 횟수)의 배수 문제 때문입니다.


EfficientNet Architecture

Model scaling은 baseline network의 Fi를 바꾸지 않기 때문에 좋은 Baseline을 가지는 것이 매우 중요합니다.

그래서 본 논문에서는 정확도와 플롭스를 고려한 Efficientnet-b0를 설명합니다. 구조는 아래 그림과 같습니다.

여기서 MBconvmobile inverted bottleneck으로, ResNet에서 사용되는 Bottleneck는 channel 수를 마지막에서 4배 증가시키는데, Inverted Bottleneck은 중간에서 channel 수를 늘리고, 마지막에서 감소시키는 구조입니다.

이렇게 EfficientNet-B0로 부터 시작해서, 우리의 scaling method는 아래의 두 단계로 구성됩니다.

  1. 파이를 1로 고정하고 계산식을 적용하여 알파1.2, 베타 1.1, 감마1,15일때 최상의 값을 가진다.

  2. 알파,베타,감마를 상수로 고정한 후 서로 다른 파이를 이용해 모델을 확장합니다.

이 결과로 얻은 모델이 efficientnet-b1~b7입니다.

이제 EfficientNet과 다른 Architecture 를 비교해본 결과들을 살펴보겠습니다. 아래 그림을 보면 기존의 MobileNet과 ResNet에 compound scale을 적용했을 때 플롭스와 정확도에서의 차이를 보여줍니다.

아래 그림은 efficientnet이 파라미터 수가 작아 플롭스도 작게 나타나지만 정확도는 월등히 높은 것을 확인할 수 있습니다.

다음 그림에서 볼 수 있듯이 동일한 모델 EfficientNet-B0에 대하여 각각 한가지만 scaling만 하는 경우와 compound scaling을 하는 경우에 compound scaling을 수행했을 때 가장 좋은 정확도를 보여줍니다.


Discussion

본 논문에서는 cnn의 scaling을 체계적으로 연구하여 네트워크에 세가지 값의 균형을 신중하게 유지하는 것이 중요하지만 이전 연구에서는 찾지 못해 더 나은 정확도와 효율성을 얻지 못했다는 것을 확인했습니다.

이 문제를 해결하기 위해 효과적인 방법인 compound scaling 를 제안했습니다.

이 방법을 통해 compound scaling을 적용한 efficientnet은 더 적은 파라미터와 플롭스로 더 좋은 성능을 이끌어냈습니다.

profile
🙋🏻‍♀️

0개의 댓글