ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 논문 리뷰 EfficientNet : 스케일링으로 모델의 성능 높이기
    Study/ML 2021. 7. 2. 21:43

    논문 : https://arxiv.org/pdf/1905.11946.pdf

     

     

     

     

    EfficientNet은 19년도 Mingxing Tan과 Quoc V. Le이 발표한 모델로 Image Classification 분야에 있어 좋은 성능을 보인다. 2년전에 나온 모델이라 지금 현재는 SOTA에서 물러났지만 scaling을 통해 손쉽게 기존 model의 성능을 높일 수 있어 소개하고자 한다.

     

     

     

     Convolution 모델의 성능을 높이기 위해서 파라미터를 조정하는 시도는 다들 많이 해보셨을 것이다. 일반적으로 scaling은 3가지 경우로 나뉘는데 (b)채널의 개수를 늘리는 width scaling,  (c)모델의 layer를 바꾸는 depth scaling, 마지막으로 (c)Input 이미지의 해상도를 바꾸는 resolution scaling이 있다.

     

      위 이미지에서 보면 알 수 있듯이, 각 3가지 scaling을 통해 모델의 성능이 향상되는것을 확인할 수 있다. 그러나 선형적으로 성능이 계속 오르는것을 아니고 depth scaling같은 경우 금방 한계에 닿는것을 알 수 있고, 나머지 scaling도 결국 마찬가지다. Efficient-Net은 위 3가지 scaling을 동시에 고려하는 scaling, 즉 compound scaling을 제안하여 최적의 scaling을 찾는것을 목표로 한다.

     

     

     

     위 알파, 베타, 감마의 값으로 치환했을때 알파x베타2x감마2 값이 2가 되도록 상관관계를 유지하며 scaling을 할 것을 제안한다. 아래 표를 보면 확인할 수 있듯이 모델 자체를 수정하지 않았지만 scaling을 통해 모델의 정확도가 향상된 것을 확인할 수 있고 compound scaling인 경우에 성능향상이 가장 큰 것을 확인할 수 있다. 

     

      Efficient-net은 scaling을 통해 성능을 향상시킨다고 했는데, 그럼 기존 모델의 성능이 미리 어느정도 보장되어야 한다는 가정이 필요하다. 그래서 이 논문에서는 모바일기기에서 많이 쓰이는 MobileNet2 모델을 바탕으로 scaling을 하였다. 

     

     

    Result

     위 표는 accuracy 비슷한 모델과 efficient-net 모델과 묶어서 비교한것이다. 표를 보면 accuracy는 비슷하지만 파라미터와 FLOPS는 훨씬 작은것을 확인할 수 있다. 적게는 3배에서 많게는 12배까지 차이가 난다.

     결과적으로 scaling은 할때 compound로 다각면적으로 scaling을 하는것이 좋고 모델 자체의 수정이 없어도 성능이 크게 향상되는것을 알 수 있다. Efficient-Net은 Mobilenet2를 바탕으로 구현되었지만 당장 지금 구현하는 모델의 성능을 증가시킬 수 있다는 점에서 알아둘 필요가 있는 논문이다.

     

     

     

     

    파이토치로 아주 고마운분이 논문에 나온코드를 구현하여 git에 업로드 해주었다. 아래 링크가 있으니 model 코드만 그대로 가져오면 바로 사용가능하고 미리 확습된 파라미터도 제공한다.

    pytorch git 주소 : https://github.com/lukemelas/EfficientNet-PyTorch

     

     

     
     
     

    댓글

Designed by Tistory.