CV - 9. EfficientNet

최창우·2023년 1월 9일
0

Computer Vision - 방법론

목록 보기
10/14
post-thumbnail

📌목차

1. EfficientNet 개요

✔️ 기억할용어

  • Compound Scaling

📕 EfficientNet 개요

논문명 : 2019 ICML - EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

모델의 성능을 최적으로 끌어올리는 깊이/너비/해상도 조합을 찾은 논문이다.

📖 EfficientNet 이해

모델 구조와 관련된 성능을 높이는 방법은 크게 세가지가 있다.

  • network를 depth를 깊게 구성
  • network의 width를 넓게 구성
  • Input Image의 해상도를 높임

세가지 방법모두 모델의 성능을 향상 시킬수는 있지만, 어느정도 이상을 넘어가면 변화에 따른 정확도향상은 미미하다.

  • 여기서 FLOPS 는 초당 부동소수점 연산이란 의미로, 초당 처리해야할 연산량을 의미한다.
  • Depth 가 너무 깊어지면 Vanishing Gradient 문제로 학습어려움
  • Width 가 깊어지면 계산량이 제곱에 비례하여 증가
  • Input Image 해상도를 키우면 게산량이 제곱에 비례하여 증가

공통적으로 세가지 방법모두 모델의 성능을 높일 수 있지만, 한계점이 명확하며 계산량이 너무 많아진다.

따라서 저자는, 세가지 변수 (깊이,너비,해상도)의 최적의 조합을 찾고자 하였다.

📕 Compound Scaling

3가지 변수 : depth, width, resolution 에 대해 식을 정의

  • 구하고자 하는 변수 : alpha, beta, gamma
  • 사용자 정의 변수: pi
  • alpha x beta^2 x gamma^2 = 2 가 되게끔 사전정의
    - 깊이는 늘어날수록 연산량이 배수
    - 너비와 해상도는 늘어날수록 연산량이 제곱에 배수
  • 곱이 2가 되게끔 정의하면 alpha, beta, gamma는 임시로 정해짐
    - alpha = 1.2
    - beta = 1.1
    - gamma = 1.15
  • alpha, beta, gamma는 고정한채로 pi를 변화시켜 전체적인 모델 크기를 키운다.

물론 변화시키면서 alpha, beta, gamma를 찾아야 하겠지만, 그러면 큰 모델일 수록 소모되는 비용이 너무 크기 때문에, alpha, beta, gamma를 사전에 임의로 정의해주었다. (연산량이 2배씩 늘어나게끔)

📕 결과

기존 모델들을 compound scaling 한 결과

  • 학습파라미터 매우 줄어듦
  • 초당 연산량 매우 줄어듦
  • 성능 향상되었음!

📚 Reference

https://greeksharifa.github.io/computer%20vision/2022/03/01/EfficientNet/

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글