EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
- 논문 원본 https://arxiv.org/abs/1905.11946
- 발표 영상 https://www.youtube.com/watch?v=BfqNoIeNzyg&t=601s
- 발표 자료 (오타 ICLR 2019 -> ICML 2019)
1. Abstract & Introduction
- ConvNet의 scale up은 정확도를 높이기 위해 널리 사용
- 예를 들어, ResNet은 더 많은 레이어를 사용하여 ResNet-18에서 ResNet-200으로 확장한 모델 존재
- 최근에 GPipe는 baseline model을 4배 확장하여 ImageNet에서 84.3%의 top-1 accuracy 달성
- 하지만 ConvNets을 확장하는 가장 효과적인 방법에 대한 명확한 가이드 라인이 부족했음
- 기존에는 주어진 자원 안에서 3가지 차원(Depth, Width, Resolution) 중 하나를 선택하여, 그 값을 높이는 쪽으로 모델의 정확도를 향상 시킴
- (1) Depth : 모델 layer 수를 늘림
- (2) Width: filter (혹은 channel의 수) 수를 늘림
- (3) Resolution: input image의 해상도(크기)를 높임
- ConvNets의 더 높은 정확도와 효율성을 달성할 수 있는 Scaling 방법의 원칙이 있을까?
- 경험적 연구를 통해 본 논문에서는 depth,width,resolution가 균형있게 조정됨으로써 더 좋은 성능을 이끌어 낼 수 있음을 발견하고 놀랍게도 이러한 균형은 각 차원을 일정 비율로 단순하게 확장함으로써 달성될 수 있음을 보여줌
- 이 관찰에 기반하여, 본 논문은 간단하지만 효과적인 compound scaling method 제안
- 기존의 임의적인 scaling과 달리, depth,width,resolution의 모든 차원을 고정된 scaling coefficient을 사용해 균일하게 scaling
- ex) computational resource를 2^N배 만큼 더 사용하고 싶다면, 기존의 depth α, width β, image size γ를 α^N, β^N, γ^N으로 늘려주면 됨 ( α, β, γ는 constant coefficients이며, original small model에서 grid search를 통해 결정됨)
- MobileNets와 ResNet에서 해당 scaling 방법이 잘 작동한다는 것을 확인
- model scaling 효과는 baseline network(ex.MobileNets,ResNet)에 크게 의존
- 즉, baseline network가 특정 task에 대해 최적화되어 있지 않다면, 단순히 모델의 크기를 늘리는 것만으로는 상당한 성능 향상을 보장하지 못함
- 본 논문에서는 NAS(Neural Architecture Search)를 통해 새로운 baseline network 설계
Neural Architectue Search(NAS)
- 기존 딥러닝 아키텍처 설계에 있어서 대부분 수동적인 하이퍼파리미터 조정과 네트워크 설계의 번거로움 존재
- 이를 위해 특정 task에 대한 최적의 신경망 구조를 자동으로 찾는 기술인 NAS 개발됨
- Search Space, Search Strategy, Performance Estimation Strategy 등 3가지 요소로 구성
- Search Space(탐색 공간) : Layer 수, 뉴런의 수, 연결 패턴 등 신경망을 구성하는 요소들에 대한 모든 가능한 조합들이 포함
- Search Strategy(탐색 전략) : 탐색 공간 내에서 최적의 네트워크 구조를 찾기 위해 사용되는 방법(랜덤 탐색, 베이지안 최적화, 강화학습 등)
- Performance Estimation Strategy(성능 추정 전략) : 추출한 후보 아키텍처의 성능 예측, Search Strategy는 후보 아키텍처의 예상 성능을 반영하여 새로운 아키텍처를 만드는 과정을 반복
- EfficientNet-B7(scale coefficient를 가장 크게 조절한 버전)은 ImageNet 데이터에서 top-1 accuracy 84.3% 달성
- 이때 당시 최고 성능이 GPipe보다 8.4배 작은 파라미터를 가지며 6.1배 더 빠름
- 정확성 + 효율성
2. Related Work
ConvNet Accuracy
- AlexNet이 2012년 ImageNet competition에서 우승한 뒤 ConvNet의 성능은 점점 높아졌음
- 이러한 모델들은 주로 ImageNet용으로 설계되었지만, 전이학습과 객체 탐지와 같은 다양한 비전 작업에서도 우수한 성능을 보여줌
- 그러나 하드웨어의 메모리 한계로 인해 앞으로의 정확도 향상은 더 나은 효율성을 통해 달성해야 함
ConvNet Efficiency
- ConvNets은 과도하게 많은 파라미터를 가지고 있음
- Model compression은 효율성을 위해 정확도를 희생하면서 모델 크기를 줄이는 일반적인 방법
- 모바일 폰이 일반화 됨에 따라, 모바일 크기의 ConvNets을 직접 설계하는 것도 일반적
- 최근에는 Neural Architecture Search(NAS)를 통해 모바일 크기의 ConvNet을 자동으로 설계하면서 수작업으로 설계된 모바일 ConvNets보다 더 나은 효율성 달성
- 그러나 이러한 기술을 크기가 크고 비용이 많이 드는 튜닝을 필요로 하는 큰 모델에 어떻게 적용할지는 여전히 불분명
- 본 논문에서는 초대형 ConvNets의 효율성을 향상시키기 위해 Model Scaling 기법에 의존
Model Scaling
- ConvNet을 확장할 수 있는 방법에는 여러가지
- ResNet은 네트워크 깊이를 조정하여 축소(ResNet-18) 또는 확장(ResNet-200)할 수 있음
- WideResNet과 MobileNets는 채널 수를 조정하여 scaling할 수 있음
- 입력 이미지를 키우는 방법(더 많은 FLOPS 필요)
*FLOPS(Floating Point Operations Per Second): 컴퓨터가 초당 수행할 수 있는 부동 소수점의 연산의 수(=컴퓨터 성능을 나타내는 단위)
- 이전 연구들에서 네트워크의 depth와 width 모두 ConvNets의 표현력에 중요하다는 것을 보여주었지만, 효율성과 정확성을 높이기 위해 ConvNet을 효과적으로 scaling하는 방법은 여전히 열린 질문임
- 따라서 본 논문에서는 network의 3가지 차원(depth,width,resolution) 모두에 대한 scaling을 체계적이고 경험적으로 연구
3. Compound Model Scaling
3.1 Problem Formulation
- i번째 Conv Layer는 다음과 같이 표기 가능 Yi = Fi(Xi)
- Fi : 연산자
- Yi : output tensor
- Xi : input tensor(shape = <Height,Width,Channel>)
- ConvNet은 여러 개의 stage로 분할되고, 각 stage의 모든 레이어는 동일한 architecture를 공유
- 따라서 전체 ConvNet은 아래와 같이 정의 (Fi^Li : Fi가 i단계에서 Li번 반복하는 것)
- 일반적인 ConvNet은 최적의 layer architecture Fi를 찾는데 중점
- model scaling은 기본 network에서 미리 정의된 Fi를 변경하지 않고, network의 Length(Li),width(Ci),resolution(Hi,Wi)를 확장
- 이때 모든 layer가 일정한 비율로 균일하게 scaling되어야 하며, 목표는 주어진 자원 제약 조건 하에서 모델의 정확도를 최대화하는 것
3.2 Scaling Dimensions
- 하지만 세가지 주요 변수인 깊이(d), 폭(w), 해상도(r)의 최적 값이 서로 의존적인 관계이머 다른 제약 조건아래서 값이 바뀐다는 문제점이 존재하여 최적화 과정을 복잡하게 만듦
- 이러한 어려움으로 인해, 기존 방법들은 주로 3가지 중 한 가지 차원만을 scaling하여 ConvNet 확장
기존 방법 (1)- 깊이(d)
- 네트워크 깊이를 확장하는 것은 많은 ConvNets에서 가장 일반적으로 사용되는 방법
- 더 깊은 ConvNet은 더 풍부하고 복잡한 특징 포착하며 새로운 작업에 잘 일반화
- 그러나, 더 깊은 네트워크는 Gradient Vanishing 문제로 인해 학습하기 어려움
- skip connection과 batch normalization 같은 기술들이 학습 문제를 완화시키지만, 매우 깊은 네트워크에서는 큰 효과 없음
기존 방법 (2) - 폭(w)
- 주로 소형 모델에서 사용되는 방법
- Wider Network는 세밀한 Feature를 잡을 수 있으며 deep한 network에 비해 학습이 용이(더 넓은 네트워크는 더 많은 파라미터를 가지기 때문)
- 하지만 극단적으로 넓고 얕은 네트워크는 고차원 특징을 포착하는 데 어려움 있음(layer 간의 비선형 변환을 통해 학습할 수 있는 추상적인 특징의 수가 제한되기 때문)
- 이래 실험 결과를 보면 w를 증가했을 때 꾸준한 성능 향상을 보이지만, 이 역시도 w=3.8부터 성능 향상 폭이 작아짐
기존 방법 (3) - 해상도(r)
- 더 높은 해상도의 입력 이미지로 ConvNets은 더 세밀한 패턴 포착
- 초기 ConvNets에서 224x224를 시작으로, 현대의 ConvNets은 299x299 또는 331x331을 사용하여 성능 향상
- 최근 GPipe는 480x480 해상도로 SOTA ImageNet accuracy 달성
- 더 높은 해상도가 정확도를 향상시키긴 하지만, 매우 높은 해상도에서는 정확도 향상이 감소
Observation 1
- 네트워크의 폭, 깊이, 또는 해상도를 확장하면 정확도가 향상되지만, 더 큰 모델에서는 정확도 향상 감소
- 이는 ConvNets를 scaling할 대 단일 차원에만 초점을 맞추는 것의 한계를 보여주며, 균형잡힌 방식으로 여러 차원을 동시에 고려하는 것이 중요함을 시사
3.3 Compound Scaling
- network scaling의 다양한 차원이 서로 독립적이지 않다는 것을 관찰
- 직관적으로, 더 높은 해상도의 이미지에 대해서는 네트워크의 depth를 증가시켜야 함
- 더 큰 receptive fields가 더 큰 이미지 속에서 더 많은 픽셀을 포함하는 비슷한 특징을 포착하는 데 도움이 될 수 있기 때문
- 또한 고해상도 이미지에서 더 많은 픽셀의 패턴을 캡쳐할 수 있도록 네트워크의 width도 늘려야 함
- 이러한 직관은 기존의 단일 차원 scaling 대신 모든 차원(w,d,r)을 균형하게 조정해야함을 시사
- 네트워크 깊이와 해상도가 다른 상태에서 width scaling을 비교한 결과
- depth = 1 , resolution = 1을 변경하지 않고, width만 scaling할 경우 accuracy가 빠르게 saturate됨
- depth= 2, resolution = 1.3 상태에서의 width scaling은 동일한 FLOPS에서 더 좋은 accuracy
Observation 2
- 더 나은 정확도와 효율성을 추구하기 위해서는 ConvNet scaling 중 네트워크 폭, 깊이, 해상도 모든 차원을 균형 있게 조정하는 것이 중요
Compund Scaling Method
- 본 논문에서는 compound coefficient ϕ
4. EfficientNet Architecture
- Model Scaling은 baseline network의 Fi를 바꾸지 않기 때문에, 좋은 baseline network를 가지는 것은 매우 중요
- 이미 존재하는 ConvNet을 사용하여 model scaling 기법을 평가할거지만, 효과를 더 극명하게 보여주기 위해 새로운 mobile-size baseline인 EfficientNet 설계
- EfficientNet은 정확도 및 FLOPS를 동시에 최적화하는 NAS를 활용하여 설계
- 그 결과 가장 base한 네트워크를 EfficientNet-B0라고 명명
- baseline network인 EfficientNet-B0에서 시작하여, 두 단계에 걸쳐 compound scaling method 적용
- 1단계 : 먼저 을 고정하고 2배 더 많은 resource를 사용할 수 있다고 가정, equation2와 3을 이용해 소규모 grid search 방식으로 α, β, γ를 찾음. 2 제약 조건 하에 α=1.2, β=1.1, γ=1.15를 찾아냄
- 2단계: 그 후 α, β, γ를 상수로 고정하고 equation3을 이용하여 다양한 ϕ를 적용해 기본 네트워크 확장하여 EfficientNet-B1부터 B7까지 얻음
5. Experiments
- EfficientNet B0~B7의 ImageNet data 성능
- 비슷한 성능을 가지는 모델 대비 parameter 수가 적고 FLOPs가 적음
- EfficientNet-B7은 기존 SOTA인 GPipe와 동일한 성능인데, parameter 수가 8.4배 가량 적음
- MobileNet과 ResNet에 적용시켜 보았을 때 단일 dimension scaling보다 compound scaling의 효과가 더 좋았음
- EfficientNet은 다양한 전이 학습에서도 우수한 성능을 보여줌
- 더 적은 parameter로 5개의 dataset에서 accuracy SOTA 기록
* 전이 학습: ImageNet과 같은 대량의 데이터에서 pre-train하고, 새로운 데이터(CIFAR10,Birdsnap 등등)에서 fine-tuning하는 학습 방법
6. Discussion
- compound scaling을 적용한 것이 성능이 제일 좋음
- CAM 결과에서도 compound scaling을 적용한 것이 효과가 더 좋음을 볼 수 있음
- 빨간색: 해당 class가 강하게 반응
- 파란색: 해당 class가 약하게 반응
7. Conclusion
- 기존의 ConvNet scaling 방법은 depth,width,resolution 중 하나 혹은 2개만을 고려했지만, 이는 정확도와 효율성을 모두 챙기지 못함
- 이러한 이슈를 해결하기 위해, 본 연구에서는 효과적인 scaling 방법인 componund scaling 제안
- compound scaling을 MobileNet, RestNet 그리고 새로 개발한 EfficientNet에 적용함으로써, SOTA를 기록하면서도 파라미터 수와 FLOPs가 더 작아짐(ImageNet, 전이학습 모두)
- 즉, compound scaling을 통해 network를 보다 효율적으로 scaling 할 수 있게 됨.
8. Reference
https://rahites.tistory.com/97
https://ropiens.tistory.com/110
https://velog.io/@9e0na/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-CV-EfficientNet-2020-Summary
'논문 리뷰 > CV' 카테고리의 다른 글
[X:AI] Mask R-CNN 논문 리뷰 (0) | 2024.05.06 |
---|---|
[X:AI] SegNet 논문 리뷰 (0) | 2024.04.09 |
[X:AI] U-Net 논문 리뷰 (0) | 2024.03.27 |
[X:AI] InceptionV2/3 논문 리뷰 (0) | 2024.03.14 |
[X:AI] SPPNet 논문 리뷰 (0) | 2024.03.10 |