tpu/models/official/efficientnet at master · tensorflow/tpu
https://github.com/lukemelas/EfficientNet-PyTorch
EfficientNet.pdf
Abstract
- 기존의 연구에서는 depth, width, resolution 중 각 하나의 요소를 스케일링 하는 방식으로 모델의 성능을 향상시키려는 시도를 해왔다.
- 해당 논문에서는 간단하지만 효과적인 compound 계수를 사용하여 depth/width(channel)/resolution 이 세 가지 차원을 모두 uniformly하게 스케일링하는 method를 제안한다.
- 이러한 방식의 스케일링 method를 MobileNet과 ResNet에 적용하였다.
1. Introduction
- 이전 연구에서는 depth, width, image size(resolution) 세 가지 차원 중 오직 하나만 스케일 하는 것이 일반적이었다.
- 두 세개의 차원을 arbitrarily(절삭)하게 스케일 하는 것은 가능하지만, 이러한 스케일링 method는 오래 걸리는 메뉴얼 튜닝을 요구하고, 흔하게 sub-optimal(차선의) accuracy와 efficiency를 야기한다.
<aside>
💡 더 나은 accuracy와 efficiency를 얻을 수 있는 ConvNets을 스케일링 하는 원론적인 method가 있을까?
이에 저자는 간단하지만 효과적인 compound scaling method를 제안
</aside>
기존의 스케일링 방식 (a), (b), (c), (d), 저자가 제안한 compound scaling (e)
- 이러한 요소들을 절삭하여 스케일하는 기존의 관례적인 방법과 다르게 저자의 method는 고정된 스케일링 coefficients의 세트와 함께 네트워크의 width, depth, resolution을 uniformly하게 스케일한다.
- 예를 들어 $2^N$배 만큼 더 연산 자원을 사용하고 싶다면
- 네트워크의 깊이는 $\alpha^N$, width는 $\beta^N$, 이미지의 사이즈(resolution)는 $\gamma^N$로 간단하게 늘리면 된다.
- $\alpha, \beta, \gamma$는 원본의 작은 모델에서 small grid search로 결정된 상수 계수이다.
2. Related Works
ConvNet Accuracy
- 모델들의 사이즈가 커짐에 따라accuracy가 더욱 높아졌다.
- GPipe (Huang et al., 2018)는 ImageNet top-1 validation accuracy가 84.3%인데 557M개의 파라미터를 사용
- 많은 애플리케이션에서 더 높은 accuracy가 중요
- 그러나 이미 하드웨어의 메모리 한계를 도달했기 때문에 더 높은 accuracy를 얻기 위해서는 더 나은 효율성이 필요
ConvNet Efficiency
- 깊은 ConvNet은 자주 over-parameterized 된다.