[Classification] Rethinking Model Scaling for Convolutional Neural Networks : EfficientNet 논문 리뷰

tobigs1415 이미지 세미나·2021년 5월 19일
5

Tobigs1415 Image Semina

목록 보기
6/16
post-thumbnail

투빅스 15기 오주영

Abstract

  • 모델 확장을 체계적으로 연구
  • Depth, Width, Resolution의 scaling 에 다른 성능 관찰
  • Compound coefficient 를 사용하여 depth, width, resolution을 함께 scaling하는 효과적인 scaling method 제안

Introduction

  • CNN 은 더 나은 정확도를 달성하기 위해 scaling up 을 널리 사용

    • 2016년 발표된 ResNet은 더 많은 layer를 사용하여 scaling up (ResNet-18 -> ResNet-200)
    • 2018년 발표된 Gpipe는 baseline model을 4배로 확장시켜 ImageNet top-1 accuracy 84.3% 달성
  • 하지만 CNN을 확장하는 프로세스는 아직 제대로 연구되지 않았음

  • 일반적으로 depth, width, resolution 세가지 중 하나만 확장

  • 임의로 2~3가지를 동시에 확장할 수 있지만 빡센 tuning과정이 필요하고 더불어 그것이 optimal한 solution이 아닐 수도 있음

  • Accuracy와 efficiency 를 높이기 위해서 CNN을 scaling up하는 원칙적인 방법이 있을까???

  • 본 연구는 Depth, width, resolution 세가지의 균형을 맞추는 것이 매우 중요하다는 것을 보여줌.

  • 임의로 depth, width, resolution 을 scaling 하는 일반적인 관행과 달리 고정된 scaling coefficient 를 사용하여 효과적으로 scaling 가능.

    • 예를 들어 2^N배 더 많은 computational resource를 사용하고자 한다면, depth는 αNα^N, width는 βNβ ^N, 이미지의 size는 γNγ ^N 만큼 키움으로써 간단히 증가시킬 수 있음 (𝛼,𝛽,𝛾는 baseline model의 grid search를 통해 찾은 상수)

Related Work

ConvNet Accuracy

  • ImageNet 대회에서 AlexNet 이후 CNN은 점점 더 많은 매개변수를 가진 모델을 사용하여 점점 더 정확해졌다.
    • 2014년 GoogLeNet(6.84M parameters), 74.8%
    • 2017년 SENet(145M), 82.7%
    • 2018년 Gpipe(557M), 84.3%
  • 높은 정확도가 많은 application에서 중요하지만 이미 메모리 부분에서 한계에 도달했기 때문에 더 높은 정확도를 얻으려면 더 나은 효율성이 필요

ConvNet Efficiency

  • Model compression은 model size를 줄이며 accuracy와 efficiency를 바꾸는 대표적인 방법이다.

  • 휴대전화가 보편화되면서 SqueezeNet, MobileNet, ShuffleNet 같은 효율적인 모델을 수작업으로 만드는 게 일반적이다.

  • 최근 NAS(Nearal Architecture Search)는 Mobile크기의 효율적인 CNN 설계에 점점 더 인기를 얻고 있으며, depth, width, resolution 등을 광범위하게 조정하며 수작업보다 더 뛰어난 효율성을 달성한다.

  • 하지만, 튜닝 비용이 비싼 대형 모델에 이러한 기술을 적용하는 방법은 불분명하다.

  • 본 연구는 대형 CNN 모델의 효율성을 연구하는 것을 목표로 한다.

Model Scaling

  • 다양한 resource의 제약에 CNN을 확장할 수 있는 방법은 layer, channel, resolution 조정 등이 있다.

  • 모델의 확장은 더 나은 accuracy를 얻을 수 있지만 더 많은 FLOPS가 필요하다.

  • 본 연구는 네트워크의 depth, width, resolution 3차원 모두에 대해 체계적이고 경험적으로 CNN scaling을 연구한다.

Compound Model Scaling

Problem Formulation

  • 대부분의 CNN 설계는 FiF_i를 찾는 데 중점을 두지만, model scaling은 정의된 FiF_i를 변경하지 않고 네트워크의 길이 LiL_i, 너비 CiC_i, 해상도 (HiH_i, WiW_i) 를 확장하려고 한다.

  • F_i를 고정함으로써 model scaling은 design problem을 단순화하지만, 각 layer마다 각각 다른 Li,Ci,Hi,WiL_i, C_i, H_i, W_i 에 대해 large design space를 탐색해야 한다.

  • Design space를 더 줄이기 위해서 모든 layer에서 constant ratio로 균등하게 scaling하는 제약을 건다.

  • 목표는 주어진 resource 제약에서 accuracy를 최대화하는 것이고 최적화문제로 formulate 한다.

Scaling Dimensions - Depth

  • 직관적으로 더 deep한 CNN이 보다 풍부하고 복잡한 feature를 추출할 수 있고 새로운 작업에 대해 일반화 할 수 있다.

  • 그러나, 더 깊은 네트워크 또한 vanishing gradient 문제로 학습이 어렵다.

  • Skip connection과 batch normalization와 같은 테크닉이 훈련 문제를 완화시키지만 깊은 네트워크일수록 네트워크의 accuracy 측면 이득은 감소한다.

    • ResNet-1000은 ResNet-101과 정확도 측면에서 큰 차이가 없음

Scaling Dimensions - Width

  • 네트워크의 width(channel)는 넓을수록 더 세밀한 특징을 포착할 수 있는 경향이 있으며 훈련하기가 더 쉽다.

  • 그러나 width가 매우 크지만 shallow한 네트워크는 상위 레벨 feature를 추출하는 데 어려움을 겪는다.

Scaling Dimensions - Resolution

  • 고해상도 이미지를 사용하여 CNN은 더 세밀한 패턴을 추출할 수 있다.

  • 초기 CNN 224x224부터 시작하여 현대의 CNN은 accuracy 를 높이기 위해 299x299 또는 331x331, 480x480의 고해상도 이미지를 사용한다.

Observation 1
  • 네트워크 width, depth, resolution 각각을 확장하면 모두 정확도가 향상하긴 하지만 사이즈가 큰 모델의 경우 accuracy측면의 이득이 줄어든다.

Compound Scaling

  • 우리는 경험적으로 width, depth, resolution 의 scaling 이 독립적이지 않음을 알 수 있음

  • Resolution 이 큰 이미지의 경우, 더 큰 receptive field를 취할 수 있도록 네트워크의 depth를 늘려야함.

  • 또한 고해상도 영상의 더 많은 픽셀이 있는 더 fine-grained 한 패턴을 추출하기 위해서 네트워크의 width또한 늘려야함

  • 이러한 직관은 우리가 기존의 단일 차원 scaling 보다는 서로 다른 scaling 차수를 조정하고 균형을 맞출 필요가 있음을 암시

Observation2
  • 더 나은 accuracy 와 efficiency 를 추구하기 위해서는 CNN확장 중에 네트워크의 width, depth, resolution 모든 차원의 균형을 유지하는 것이 중요하다.

Compound Scaling

  • Convolution의 FLOPS는 d,w2,r2d, w^2, r^2에 비례

    • d를 2배로 증가시키면 FLOPS는 2배로 증가
    • w, r 을 2배로 증가시키면 FLOPS는 4배로 증가
  • CNN에서 convolution 연산이 computational cost를 지배하므로 FLOOPS는 (αβ2γ2)φ(α ∗ β^2 ∗ γ^2) ^φ배 증가

  • 본 연구에서는 αβ2γ22α ∗ β^2 ∗ γ^2 ≈ 2라는 제약식이 있기 때문에 새로운 φ에 대해 네트워크의 FLOPS는 2φ2^φ배 증가

EfficientNet Architecture

EfficientNet - B0

  • MnasNet에서 영감을 받아 accuracy와 FLOPS를 모두 최적화하는 multi-objective NAS를 통해 baseline network를 개발

  • target FLOPS 400M로 설정하여 얻은 모델 : EfficientNet-B0

  • Main building block : mobile inverted bottleneck MBConv

EfficientNet

  • EfficientNet-B0 를 baseline model로 하여 compound scaling metho를 적용하여 scaling up
  • STEP 1 : φ=1로 고정하여 두배의 resource를 사용할 수 있다고 가정하고 αβ2γ22α ∗ β^2 ∗ γ^2 ≈2 라는 제약과 grid search를 통해 α, β, γ를 탐색 -> EfficientNetB0 기준 α = 1.2, β = 1.1, γ = 1.15에서 최상의 결과를 얻음

  • STEP 2 : α, β, γ 를 상수로 고정한 후 3번 식을 통해 EfficientNet-B1 ~ B7까지 얻을 수 있음

Experiments

Scaling Up MobileNets and ResNets

ImageNet Results for EfficientNet

Inference Latency Comparison

Transfer Learning Results

Discussion

  • Compound scaling의 기여를 분리하기 위해 depth, width, resolution 한 가지만 scaling up한 뒤 ImageNet 성능을 비교

Reference

profile
2021 투빅스 14, 15기 이미지 세미나입니다😀

5개의 댓글

투빅스 14기 김민경

  • 기존의 CNN은 네트워크의 width, depth, resolution을 조절해서 성능을 높이는 방법 중 한가지만 선택해왔음
  • but, EfficientNet은 네트워크의 세가지 방법의 balance를 통해 성능을 높이는 방법을 제안
    -> width, depth, resolution의 scaling을 통해 balance를 맞추기 위한 새로운 compound scaling method를 제안(compound coefficient ϕ\phi를 사용)
  • MnasNet에서 영감을 받아 accuracy 및 FLOPS를 모두 최적화할 수 있도록하는 baseline network를 개발
    -> target FLOPS를 400M로 설정하여 얻은 모델 = EfficientNet-B0
  • MobileNet, ResNet 등과 비교 결과 accuracy는 높이면서도 FLOPS, parameter 수는 줄일 수 있었음. -> SOTA 달성

기존의 아이디어를 탈피해서 세가지 방법을 모두 사용해보자는 아이디어를 보여주는 논문을 읽으면서 배워갈 점이 많았습니다. 감사합니다:)

답글 달기
comment-user-thumbnail
2021년 5월 19일

투빅스 14기 김상현
이번 강의는 EfiicientNet 논문 리뷰 강의로 오주영님께서 진행해주셨습니다.

  • CNN은 좋은 성능을 위해 scaling up을 진행하는데 일반적으로 depth, width, resolution 중 하나만 확장하는 연구만 진행되었다. 해당 논문의 저자들은 scaling coefficient를 사용하여 depth, width, resolution의 균형을 맞추는 scaling을 연구했다.
  • Scaling coefficient를 이용해 모델의 memory와 flops를 제약으로 accuracy를 최대화하는 것을 수식으로 정의했다.
  • Depth, width, resolution을 각각 확장했을 때 정확도의 향상하긴 하지만 모델의 사이즈가 큰 경우 accuracy 측면의 이득이 줄어든다는 것을 실험으로 확인했다.
  • 실험을 통해 depth, width, resolution을 모두 고려한 compounding scaling을 수행해야 accuracy와 efficiency를 추구할 수 있다는 것을 확인했다.
  • Base Model을 Neural Architecture Search(NAS)를 통해 EfficientNet-B0로 설정했다. 이때, basic module로 mobile inverted bottleneck MBConv를 이용했다.
  • Base Model에서 미리 정한 최적화 식에서 구한 coefficient를 이용한 scaling을 통해 B1~B7까지 모델을 확장시켰고, 실험결과 기존의 모델들보다 효율적이면서 높은 정확도를 갖는 모델임을 확인할 수 있었다.

EfficientNet의 구조와 논문에서 진행된 실험들에 대해 자세히 설명해주셨습니다.
유익한 강의 감사합니다.

답글 달기
comment-user-thumbnail
2021년 5월 19일

투빅스 14기 장혜림

  • 일반적으로 모델의 성능을 높이기 위해서 scaling up을 사용하였음. 그러나 임의로 depth, width, resolution을 확장하는 과정이었는데 해당 논문은 고정된 scaling coefficient를 사용하여 세 가지를 효과적으로 scaling up 하고자 하였음.
  • 이 때 accuracy만 고려하는 것이 아니라 efficiency도 함께 고려함. 따라서 주어진 resource 하에서 accuracy를 최대화하는 것이 목적
  • depth가 깊어지면 깊어질수록, width(channel)이 넓어지면 넓어질수록, resolution이 크면 클수록 accuracy는 높아지지만 flops가 커짐에 따라 얻는 accuracy의 이득은 줄어든다.
  • scaling coefficient는 grid search에 의해 결정
  • NAS(Neural Architecture Search)를 통해 accuracy와 efficiency 모두 최적화하는 EfficientNet baseline network 개발. 이후 compound scaling을 적용하여 모델 파생

모델의 효율성 측면을 다룬 논문을 처음 접해보아서 새롭게 알아가는 점이 많은 강의였습니다. 유익한 강의 감사합니다!

답글 달기
comment-user-thumbnail
2021년 5월 19일

투빅스 14기 민거홍

3주차 강의는 Xception관련해서 오주영님이 리뷰해주셨습니다.
주요 의의로는

  • 네트워크의 width, depth, resolution 관련하여 균형을 유지하는 게 중요하다.
  • Convolution의 FLOPS는 d,w,r과 polynomialy 비례.
  • target FLOPs 기준, accuracy와 활용할 수 있는 FLOPs를 최적화하여 multi-objective NAS를 통해 baseline network를 개발할 수 있다는 것도 새로웠습니다.

기존에 임의로 scaling하는것보다 고정된 coefficent들로 scaling하는것이 더 효과적일수도 있다는 것에 대해 새롭게 배우게 되었고, 추후 모델을 구안하고 돌릴 때 갖고 있는 자원과 depth, width, resolution 과의 상관관계등을 모두 고려해서 진행해야겠다는 점을 상기할 수 있었습니다.

좋은 강의 감사합니다.

답글 달기

투빅스 14기 서아라
3주차 강의는 Efficient Net 리뷰로, 오주영님께서 진행해주셨습니다.

Efficient Net

  • CNN을 확장하는 프로세스에 대한 정리
  • 일반적으로 depth, width, resolution 세 가지중 하나만 확장하는데, 해당 연구는 depth, width, resolution 세 가지의 균형을 맞추는 것이 중요하다는 것을 보여줌.

(1) Depth
CNN이 deep할수록 보다 풍부하고 복잡한 feature를 추출할 수 있으며, 새로운 작업에 대한 일반화가 가능하지만 gradient vanishing 문제로 학습이 어려움

(2) Width
Wdith가 넓을수록 더 세밀한 특징을 포함할 수 있으나, width에 비해 shallow한 네트워크의 경우 상위 레벨 feature을 추출하는 데에 어려움을 겪음

(3) Resolution
고해상도 이미지를 사용하여 CNN은 더 세밀한 패턴을 추출할 수 있음

  • width, depth, resolution의 scaling이 독립적이지 않기 때문에, 기존의 단일 차원 scaling보다는 서로 다은 scaling 차수를 조정하고 균형을 맞출 필요가 있음

  • 실험 결과 단일 차원에 대한 scaling 보다 compound scaling을 하였을 때 보다 효율적이면서 높은 정확도를 달성할 수 있다는 것을 알 수 있었음

그동안은 width, depth, resolution에 대한 복합적인 scaling에 대한 필요성을 잘 느끼지 못했는데, EfficientNet 리뷰를 통해서 compound scaling의 중요성에 대하여 알게될 수 있었던 것 같습니다! 감사합니다:)

답글 달기