0. EfficientNet
이번에는 EfficentNet에 대하여 리뷰를 해볼 것이다. 너무나도 유명한 네트워크이며 b0부터 지금 b7까지 다양한 버전이 존재하고 성능이 뛰어나다.
우선 이 논문의 Introduction에서 바로 성능비교를 한 이미지가 나오는데 이것만 봐도 솔깃하다.
동일 파라미터 수를 가진 모델들 대비 성능이 매우 뛰어난 것을 볼 수 있다.
.
1. 배경
이 모델이 나오기 이전 VGG net에서 모델이 깊게 쌓을 때 모델의 성능이 올라가는 것을 밝혀내고 , ResNet에서 residual connection을 이용해서 엄청나게 깊게 쌓을 수 있도록 발전시켰었다.
이렇게 모델 깊이나 너비가 크고 입력 이미지의 스케일이 커질수록 성능이 잘 나오는 것은 이미 알려진 사실이었지만 그렇게 될수록 파라미터의 수가 급증하기 때문에 필요한 리소스나 시간이 더 많아지게 되었다.
이에 효율적인 파라미터 스케일링을 통해 모델의 성능을 올리고자하는 연구가 시작되었다.
우선 아래와 같이 기본 모델, 모델의 너비를 늘린 거, 깊이를 늘린 거, 이미지 스케일을 올린 거, 마지막으로 논문에서 제공하고자 하는 compound scaling을 적용한 모델구조가 있다.
Efficient net은 이 파라미터들을 효율적으로 스케일링하여 최적의 모델을 만드는 것을 목적으로 삼았다.
2. 목적
논문에서 특정 모델을 거쳐 나오는 출력값에 대한 수식을 다음과 같이 정의하였다.
이제 위에서 말한 파라미터들을 적용한 입력값에 대한 출력값의 수식이다.
입력값에 H, W, C 즉 모델 이미지와 너비 그리고 채널수 =모델 너비를 의미한다.
마지막으로 모델의 깊이를 의미하는 layer의 개수에 관한 파라미터까지 추가하여, 본 논문의 목적을 다음과 같이 설정하였다.
잘 나와있지만 해석해 보면, $ d, w, r $이라는 파라미터를 변경하여 기본 모델보다 메모리와 시간을 적게 쓰며 높은 정확도를 보이고 자하는 것이 목표이다.
다시 한번 파라미터들을 설명하면 $d$는 모델의 깊이, $w$는 모델의 너비. $r$은 이미지의 resolution 해상도를 의미한다.
우선 이 3개의 파라미터들을 heuristic 하게 실험을 통해 동시에 늘리는 것이 아니라 각각 실험을 했을 때의 결과를 보여줬다.
$ d,w,r$ 3개의 파라미터 모두 늘릴수록 증가하지만 어느 시점부터 증가하는 폭이 감소하는 것을 볼 수 있었다.
이를 제일 우측 그래프에서 특정 조합으로 비교해 봤을 때 무엇하나 만 조절하는 것이 아니라 특정하게 파라미터들을 조합하여 늘렸을 때 성능이 좋아지는 것을 볼 수 있었다.
이렇게 하나가 아닌 여러 파라미터를 효율적으로 늘리자는 것이 아래에서 소개할 Compound scaling이다.
3. Compound scaling
논문에서 제공한 Compound scaling을 하는 방식은 다음과 같다. 우선 $ \alpha, \beta, \gamma $는 grid search를 통해 찾아지는 상수이며, $\phi$는 주어진 연산량에 따라 사용자가 결정하는 상수이다. 이 $\phi$에 따라 Efficient net의 버전 b0, b1~가 달라진다.
위 실험에서도 등장했던 FLOPS란 컴퓨터의 성능을 수치적으로 나타낼 때 주로 사용되는 단위이다. FLOPS는 모델의 너비와 해상도에 따라 제곱배가 상승한다. 따라서 $ (a \cdot \beta^2 \cdot \gamma ^2)^2$로 증가하게 된다. 본 논문에서는 이 $a \cdot \beta^2 \cdot \gamma^2$값을 2로 제한하여 제한된 범위 내에서 $\alpha, \beta, \gamma$를 찾고자 했다. 이때 최종 FLOPS는 약 $2^{\phi}$ 정도하고 한다.
이 계산 방식을 이용하여 Efficient net b0는 $\phi$를 1로 고정하고 grid search를 이용하여 파라미터값을 탐색했다.
이렇게 compound scaling 하는 방식과 각 파라미터 하나씩 늘리는 것을 비교하였더니 다음과 같은 유의미한 결과를 도출하였다.
이를 ImageNet 데이터셋에도 동일하게 적용하여 동일 파라미터 수를 가진 기존 모델 대비 훨씬 적은 FlOPS와 더 높은 accuracy를 달성하여 Compound scaling의 유의미함을 입증하였다.
요약하면 Efficientnet은 파라미터 수는 적게, 시간은 빠른 모델 파라미터를 구하기 위해 depth/width/resolution을 동시에 조절하는 Compound scaling 방식을 통해 효율적인 모델.
efficientnet의 각 버전에 따른 최적의 input size는 다음과 같다고 한다. 물론 다르게 넣어도 되지만 실험에서의 가장 최적값이라고 한다.
참고
'ML & DL > Computer vision' 카테고리의 다른 글
FCN: Fully Convolutional Network (0) | 2024.02.02 |
---|---|
Semantic segmentation 방식 (0) | 2024.02.02 |
VGGNet (0) | 2024.01.30 |
AlexNet (0) | 2024.01.30 |
Backbone과 Decoder 개념 (0) | 2024.01.29 |