EfficientNet은 어떻게 만들어졌을까?

1. width scaling

 

network의 설계 방식으로 기본 baseline 설계

 

 

여기에 성능을 높이는 방법으로 width scaling 방법이 있음

 

채널 축을 증가시키는 수평확장 방법을 말함

 

inception module을 사용한 GoogleNet이나 concat으로 이전 정보들을 받아온 DenseNet 등이 비슷함

 

 

2. depth scaling

 

layer를 깊게 쌓아올려 성능을 높이는 방식

 

ResNet이 이에 해당

 

 

3. resolution scaling

 

애초에 input의 resolution(size)을 크게하여 성능을 높이는 방법이 있음

 

 

4. compound scaling

 

위에서 제시한 width scaling, depth scaling, resolution scaling 모두 성능이 증가하다가 어느정도 정체가 이루어짐

 

resolution의 성능 향상 impact가 제일 크다는데 그건 모르겠다

 

그래서 이제 3가지 방법을 적절한 비율로 섞어서 동시에 설계를 하면 성능 향상에 더 효과적이지 않을까?

 

이렇게 설계한 것이 EfficientNet이다

 

 

5. EfficientNet의 파워

 

적은 비용으로도 압도적인 성능차이를 보여준다

 

 

FLOPS는 계산 복잡도라고 보면 된다

 

세 종류의 그래프가 있는데 맨 아래 ResNet-50~~~~SENet 같이 파란색 선은 사람이 디자인한 network 계열

 

중간에 있는 그래프는 NAS(Neural Architecture Search)계열 알고리즘

 

NAS란 컴퓨터가 자동적으로 좋은 네트워크 구조를 찾아내는 알고리즘으로 설계한 네트워크라는데?

 

근데 이제 맨 위에 EfficientNet이 width,depth,resolution을 어떠한 비율로 섞든(B1,B3,B4,B5,B6,....)

 

모든 경우에 적은 계산비용으로도 압도적인 성능차이를 보였다

TAGS.

Comments