Abstract
CNN은 고정된 resource 예산으로 발전시켰고, 많은 resource를 사용할 수 있다면 더 나은 정확도에 대해 확장한다.
이 paper에서, 우리는 model scaling을 연구하고 network depth, width을 균형을 이루고 있는지 확인한다.
그리고 resolution은 더 나은 performance으로 이끈다.
관찰에 기반해서, 간단하면서도 매우 효과적인 compound 계수를 사용하여 depth, width, resolution의 모든 차원을 균일하게 확장하는 새로운 확장 방법을 제안합니다
MoblieNet과 ResNet을 확장하는 방법의 효과성을 입증한다.
더 나아가서, 우리는 새로운 baseline network를 design하기 위해 neural architecture search(NAS)를 사용하고, 이전 convnet보다 훨씬 더 정확하고 효과적으로 달성하는 Efficientnet으로 불리는 model을 얻기 위해 확장한다.
특히, Efficientnet B7은 최고로 존재하던 convnet보다 추론에서 8.4배 더 작았고 6.1배 더 빠르면서도 imagenet에서 84.3% top1 accuracy로 sota를 달성한다.
Efficientnet은 잘 변형하고 훨씬 더 적은 parameter를 가진 CIFAR 100, Flowers와 3가지 다른 transfer learning dataset에서 sota 정확도를 달성한다.
Introduction
확장하는 Convnet은 더 나은 정확도를 달성하는데 사용됐다
ex) resnet(layer 18~200), Gpipe(baseline model 4배 증가, 84.3%)
그러나, 확장하는 convnet의 절차는 잘 이해되지 않았고 현재 많은 방법이 있다.
가장 일반적인 방법은 depth나 width로 convnet을 확장하는 것이다.
덜 일반적이지만 점점 더 인기가 있는 방법은 image resolution으로 model을 확장하는 것이다.
이전의 work에서, 3차원인 depth, width, image size 중 유일한 하나를 scale하는 것이 일반적이다.
임의적으로 2차원이나 3차원을 scale하는 것이 가능할지라도, 임의로 scaling하는 것은 싫증나는 수동으로 tuning하는 것을 필요로 하고, 차선의 정확도와 효율성을 낸다.
논문에서, 확장하는 Convnet의 과정을 연구하고 다시 생각해보기를 원한다.
특히, 더 나은 정확도와 효율성을 달성하는 Convnet을 확장하기 위해 원칙이 있는 방법이 있는지를 연구한다
경험에 의거한 연구는 network width, depth, resolution의 모든 차원을 균형맞추는 것은 중요하다고 나타나고, 놀랍게도 이러한 균형은 일정한 비율로 각각을 scaling하는 것만으로도 달성할 수 있습니다.
관찰에 기반해서, 우리는 간단하면서도 효과적인 compound scaling 방법을 제안한다.
요인을 임의적으로 scale하는 평범한 관례와 달리, 우리의 방법은 network width, depth, 고정된 scaling 계수의 set을 가진 resolution을 균일하게 확장한다.
직관적으로, compound scaling 방법은 합리적이다.
input image가 크면, network가 큰 image에서 더 많이 fine grain된 patten을 capture하는 많은 channel과 receptive field를 증가시키는 많은 layer를 필요한다.
사실, 이전의 이론적이고 경험에 의거적인 result 둘 다 network width와 depth 사이에 어떤 relationship이 존재하는 것을 나타낸다.
하지만 최고의 지식으로, 먼저 3차원인 network width, depth, resolution 사이에 relationship을 경험적으로 수량화한다.
우리는 scaling 방법이 존재하는 mobilenet과 resnet에서 잘 작동하는지 증명한다.
특히, model scaling의 효과가 baseline network에 심하게 의존한다.
더 나아가, 우리는 새로운 baseline network를 발전시키기 위해 neural architecture search를 사용하고, Efficientnet이라고 부르는 model을 얻기위해 확장한다.
특히, Efficientnet B7은 최고로 존재하는 GPipe 정확도를 능가하면서도 추론에서 8.4배 더 적은 parameter와 6.1배 더 빨리 돌아간다.
사용된 Restnet50과 비교할 때, Efficientnet B4는 비슷한 FLOP로 76.3%에서 83.0%까지 top1 정확도가 향상된다.
imagenet 외에 Efficientnet은 잘 변형되고 존재하는 convnet보다 21배까지 parameter를 줄이는 반면에 8개 중 5개 사용된 dataset에서 sota를 달성한다.
Compound Model Scaling
* Problem Formulation
Convnet layer i는 $Y_i = F_i(X_i)$를 정의했다.
$F_i$: operator
$Y_i$: output tensor
$X_i$: input tensor(<$H_i,W_i,C_i$>)
$H_i$와 $W_i$: 공간 차원
$C_i$: channel 차원
Convnet layer는 많은 stage으로 나눴고 각 stage의 모든 layer는 같은 architecture을 공유한다.
$F_i^{L_i}$: layer $F_i$가 stage i에서 $L_i$ 횟수로 반복
<$h_i,w_i,c_i$>: layer i의 input tensor X의 shape
w, d, r: scaling network width, depth, resolution에 대한 계수
* Scaling Dimensions
- Depth(d)
Scaling network depth가 많은 Convnet으로 사용된 가장 일반적인 방법이다.
직감은 더 깊은 Convnet이 더 풍부하고 더 복잡한 feature를 capture하고 새로운 task에서 잘 일반화된다
그러나 더 깊은 network는 gradient 소실때문에 학습이 더 어렵다.
skip connection과 bath normalization같은 여러 기술이 training problem을 완화해도 불구하고 매우 깊은 network의 정확도 향상은 줄어든다.
- Width(w)
Scaling network width는 작은 size인 model에 대해 일반적으로 사용됐다
더 넓은 network는 더 fine grain된 feature를 capture하는 경향이 있고 학습하기 더 쉽다.
그러나 극심하게 넓지만 얕은 network는 capture하는 더 높은 성능 feature에서 어려움을 겪는 경향이 있다.
network가 더 wide해질 때, 정확도가 빠르게 증가한다
- Resolution(r)
더 높은 해상도 input image를 가지는 Convnet은 더 fine grained pattern을 잠재적으로 capture한다.
예전 Convnet에서 224x224로 시작하다가 현재 convnet은 더 나은 정확도을 위해 299x299나 331x331을 사용하는 경향이 있다.
최근에 Gpipe가 480x480으로 sota imagenet 정확도를 달성한다.
600x600과 같은 더 높은 해상도는 object detection convnet에서 널리 사용됐다.
resolution이 더 높을수록 성능이 좋아지기는 하지만 더무 높은 해상도일 떄는 정확도가 감소한다.
Observation 1
network의 차원인 width, depth, resolution이 증가하면 정확도가 향상되지만 더 큰 model은 정확도가 감소한다.
* Compound Scaling
상대적으로, resolution이 더 높아질 때, 우리는 고해상도 image에서 더 많은 pixel로 더 많은 fine grain된 pattern을 capture하기 위해 network를 증가해야한다.
더 깊고 더 높은 resolution, width scaling은 같은 FLOPS cost로 훨씬 더 나은 정확도를 달성한다.
Observation 2
더 나은 정확도와 효율성을 추구하기 위해, Convnet scaling하는 동안 network의 모든 차원인 width, depth, resolution을 균형있게 하는 것은 중요하다.
우리는 원칙적인 방법에서 network width, depth, resolution을 균일하게 scale하기 위해 compound 계수를 사용하는 새로운 compound scaling 방법을 제안한다.
$\alpha, \beta, \gamma$ : 작은 grid search에 의해 결정되어 지는 상수이다.
$\phi$ : 얼마나 많은 resource가 model scaling에 대해 이용할 수 있는 지를 control하는 사용자 지정 계수
일반적인 convolution 연산은 $d,w^2,r^2$에 비례한다.
convolution 연산은 Convnet에서 연산 cost이 높기 떄문에, convnet을 scaling하는 것은 total FLOPS를 대략적인 $2^\phi$로 증가시킬 것이다.
EfficientNet Architecture
우리는 정확도와 FLOPS 둘 다 최적화하는 multi objective neural architecture를 활용함으로써 baseline network를 발전한다.
우리는 같은 search space를 사용하고 optimization으로 $ACC(m)X[FLOPS(m)/T]^w$를 사용한다
ACC(m), FLOPS(m): model m의 정확도와 FLOPS
T: target FLOPS
w(-0.07): accuracy와 FLOPS 간 trade off를 다루는 hyperparameter
우리는 특정한 hardware device에 대상으로 하지 않기 때문에 latency보다는 FLOPS을 최적화한다.
- STEP 1
$\phi$를 1로 고정하고 $\alpha, \beta, \gamma$로 작은 grid search를 한다.
특히, Efficient B0에 대한 최적값이 $\alpha$ = 1.2, $\beta$ = 1.1, $\gamma$ = 1.15라는 것을 찾았다.
- STEP 2
상수인 $\alpha, \beta, \gamma$를 고정시키고 EfficientNet B1~B7를 얻기 위해 다른 $\phi$를 가진 baseline network를 확장시킨다
큰 model에서 $\alpha, \beta, \gamma$를 직접 찾음으로써 나은 성능을 달성할 수 있지만 search cost가 더 큰 model에서 엄두도 못 낼만큼 많이 비싸다.
우리의 방법은 작은 baseline network에서 한 번 찾아서 문제를 풀고 모든 다른 model에 대해 같은 scaling 계수를 사용한다.
Experiments
Discussion
Conclusion
논문에서, 우리는 Convnet scaling을 연구하고 network width, depth를 균형있게 맞추는 것을 확인하고 resolution은 중요하지만 누락된 부분으로 더 나은 정확도와 효율성을 방해한다.
이 부분을 다루기 위해서, 우리는 간단하고 매우 효과적인 compound scaling 방법을 제안한다.
imagenet과 일반적으로 사용되는 5개의 transfer learning dataset 모두에서 모바일 크기인 Efficient model을 매우 효과적으로 확장할 수 있으며, 훨씬 적은 수의 parameter와 FLOPS로 sota 정확도를 능가한다는 것을 보여줍니다.
'computer vision > image classification' 카테고리의 다른 글
Densely Connected Convolutional Networks (1) | 2024.02.05 |
---|---|
Deep Residual Learning for Image Recognition (2) | 2023.12.04 |
Very Deep Convolutional Networks For Large-Scale Image Recognition (1) | 2023.10.17 |
Going deeper with convolutions (0) | 2023.08.22 |
visualizing and understanding convolutional networks (0) | 2023.06.19 |