CNN 모델을 Scale up 하려는 시도는 많이 이루어졌음. 그러면 성능이 더 좋아져서.
일반적으로 3가지 차원을 건드려 모델을 키움
depth : 이건 layer 수를 늘리는 것. receptive field가 커버하는 범위가 넓어지기 때문에, high-level feature를 더 잘 잡아냄. 가장 흔히 쓰이는 방식
width : 이건 channel 수를 늘리는 것. 즉, 같은 범위(receptive field)의 Representation을 더 많은 방식으로 넘겨주는(?) 느낌. -> fine-grained features를 더 잘 잡아냄. (대신 depth 가 충분히 크지 않은 경우에는 high-level feature를 잡아내는 것에 한계가 있음)
resolution : 이건 input size 자체를 크게 하는 경우
단, 일반적으로는 위의 3가지 중 한가지를 키우는 방식으로 모델을 키움.
이 논문에서는 셋을 함께 키우는 방법을 제안.
제안
Compound Scaling : 3가지 요소를 함께 키움
EfficientNet : 새로운 Backbone baseline
Compound Model Scaling
일반적인 ConvNet design : 최적의 layer 구조를 찾아내는 게 목적
model scaling : 각 레이어의 최적의 L, C, (H, W) 를 찾는 것. baseline network에서 정해진 layer 자체는 그대로 두고.
따라서 design space가 훨씬 줄어들긴 하지만, 더 제한을 두기 위해 이 논문에선 모든 layer가 constant ratio로 scale되어야 하는 것으로 제한.
이게 최적의 $d, w, r$ 를 찾기 위한 공식. 어떤 resource constraint가 주어졌을 때 가장 최대의 accuracy를 내는 d, w, r를 찾아내고 싶은 것.
기존에 한 가지만 키울 때는
뭘 키우든 accuracy가 올라가긴 하지만, 모델이 커지면 그 accuracy gain이 작아짐.
빠르게 accuracy가 수렴해버림(saturate). 세가지의 균형을 잘 맞춰 scale up하는 게 필요함.
Compound Scaling Method
여기서 제안하는 핵심! : compound coefficient $\phi\$ 를 통해 network의 width, depth, resolution을 uniform한 방식으로 키움.
$\alpha$, $\beta$, $\gamma$ : small grid search를 통해 결정.
$\phi$: 몇 개의 Resource 가 더 available한지. how many more resources are available
의미 : 일반적인 convnet 구조의 FLOPS는 $d$, $w^2$, $r^2$에 비례함.
즉, depth가 2배가 되면 FLOPS가 2배,
width나 resolution이 2배가 되면 FLOPS가 4배가 됨.
위 그림의 식은 FLOPS를 $(\alpha \cdot \beta^2 \cdot \gamma^2)^\phi$배 할 것이라는 말.
여기선 $\alpha \cdot \beta^2 \cdot \gamma^2$를 2 정도로 제한함.
Efficient Architecture (EfficientNet baseline)
multi-objective NAS (Neural Architecture Search) 활용 : accuracy / FLOPS를 모두 최적화하는 방향으로.
optimization goal
결과적으로 찾은 architecture (EfficientNet-B0)
MNasNet에서 사용한 search space와 같았기 때문에 구조도 비슷
main building block : mobile inverted bottleneck MBConv
Compound Model Scaling
일반적인 ConvNet design : 최적의 layer 구조를 찾아내는 게 목적
model scaling : 각 레이어의 최적의 L, C, (H, W) 를 찾는 것. baseline network에서 정해진 layer 자체는 그대로 두고.
따라서 design space가 훨씬 줄어들긴 하지만, 더 제한을 두기 위해 이 논문에선 모든 layer가 constant ratio로 scale되어야 하는 것으로 제한.
이게 최적의 $d, w, r$ 를 찾기 위한 공식. 어떤 resource constraint가 주어졌을 때 가장 최대의 accuracy를 내는 d, w, r를 찾아내고 싶은 것.
기존에 한 가지만 키울 때는
Compound Scaling Method
여기서 제안하는 핵심! : compound coefficient $\phi\$ 를 통해 network의 width, depth, resolution을 uniform한 방식으로 키움.
$\alpha$, $\beta$, $\gamma$ : small grid search를 통해 결정.
$\phi$: 몇 개의 Resource 가 더 available한지. how many more resources are available
의미 : 일반적인 convnet 구조의 FLOPS는 $d$, $w^2$, $r^2$에 비례함.
위 그림의 식은 FLOPS를 $(\alpha \cdot \beta^2 \cdot \gamma^2)^\phi$배 할 것이라는 말.
여기선 $\alpha \cdot \beta^2 \cdot \gamma^2$를 2 정도로 제한함.
Efficient Architecture (EfficientNet baseline)
MNasNet에서 사용한 search space와 같았기 때문에 구조도 비슷
Experiments & Results
ImageNet에 대한 성능 (main figure) (왼쪽 위쪽 구석일수록 이상적!)
MobileNet과 RestNet 대상으로, Compound Scaling이 다른 scaling 방식보다 얼마나 효과적인지 실험. (다른 scaling 방식이라는 건, d, w, r 중 하나만 키우는 방식.)
Compound Scaling 방식 (효과) 분석 compound scaling으로 했을 때와, 한가지만 키웠을 때 activation map 뽑아보면, compound scaling으로 모델을 키운 경우가 더 적절하게 이미지를 인식하고 있는 걸 확인할 수 있음.
Transfer learning에의 성능 훨씬 적은 parameter 수로 더 높은 정확도 내는 경우 많음.