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,....)
모든 경우에 적은 계산비용으로도 압도적인 성능차이를 보였다
'딥러닝 > Computer Vision' 카테고리의 다른 글
fully convolutional network는 어떻게 임의의 input size에서 동작하게 만들었을까? (0) | 2022.04.20 |
---|---|
semantic segmentation을 할 수 있는 fully convolutional network의 특징 (0) | 2022.04.19 |
GAN(Generative Adversarial Network)의 핵심 아이디어 미리보기 (0) | 2022.03.13 |
DenseNet과 SENet의 핵심아이디어 살펴보기 (0) | 2022.03.13 |
변형된 모델 학습방법 - semi-supervised training과 self-training (0) | 2022.03.08 |