1.1 Model Scaling
단순하게 깊게 쌓는다고 무조건적인 성능향상을 가져오지 않음 -> 어떻게 모델을 효과적으로 쌓을 수 있을까? == Model Scaling(scale up)
depth scaling = 깊게 (resnet처럼)
width scaling = 넓게 (wide resnet 처럼)
resolution scaling = 이미지 크기를 크게
compound scaling = 위의 3가지를 다함
1.2 등장배경
더 높은 정확도와 효율성을 가지면서 ConvNet의 크기를 키우는 방법(scale up)은 없을까?
“ EfficientNet팀의 연구는 네트워크의 폭(width), 깊이(depth), 해상도(resolution) 모든 차원에서의 균형을 맞추는 것이 중요하다는 것을 보여주었다. 그리고 이러한 균형은 각각의 크기를 일정한 비율로 확장하는 것으로 달성할 수 있었다. “
1.3 어떻게? – Model Scaling
1.4 무엇을? – Accuracy & Efficiency
flops는 매우 작은데 map는 아주 좋음
2.1 등장배경
2.2 Scale up
width scaling
Depth Scaling
Resolution Scaling
2.3 Accuracy & Efficiency
object function 정의
N : 모델 -> 모델의 acc을 최대로 하는 d(depth),w(channel),r(resolution)을 찾아라. 이때 조건은 모델의 memroy 와 flops는 target 보다 작아야 함
: input tensor
: Operator
: output tensor
object function의 scale factor(d,w,r)을 바꿔가며 실험한 결과 알아낸 것
observation 1. -> 하나의 factor를 바꿀때 다른 두개는 고정
네트워크의 폭, 깊이, 혹은 해상도를 키우면 정확도가 향상된다.
하지만 더 큰 모델에 대해서는 정확도 향상 정도가 감소한다.
observation 2. -> 두개~세개의 factor를 동시에 바꿈
더 나은 정확도와 효율성을 위해서는, ConvNet 스케일링 과정에서
네트워크의 폭, 깊이, 해상도의 균형을 잘 맞춰주는 것이 중요하다.
Compound Scaling Method
실험결과에 따라 다음 조건을 만족하는 compound scaling 방법을 제안함
depth:
width:
resolution:
: d,w,r을 얼마나 바꿀건지 조절하는 param / 이들은 s.t.와 같은 제약조건을 가짐. r은 가로세로 동시에 늘어나므로 제약조건에 square 텀이 붙음
: 만약 제약조건을 만족하는 가 fix가 되면 를 늘려나가면서 d,w,r방향으로 scale up하는 param
2.4 EfficientNet
EfficientNet-B0
MnasNet에 영감을 받음
step1.
step2.
-> 1 stage detector
3.1 등장배경
자원의 제약이 있는 상태에서 더 높은 정확도와 효율성을 가진 detection 구조를 만드는 것이 가능할까?에서 시작된 연구
Backbone, FPN, and box/class prediction networks 를 동시에 scale up하면 됨
3.2 Challenge
1) Efficient multi-scale feature fusion
EfficientDet 이전에는 multi-scale feature fusion을 위해 FPN,
PANet, NAS-FPN 등 Neck 사용. 하지만 대부분의 기존 연구는 resolution 구분 없이 feature map을 단순 합함 . 서로 다른 정보를 갖고 있는 feature map을 단순합 하는게 맞을까?
-> 가중합을 하는 BiFPN, cross-scale connections 방법을 이용
BiFPN : 모든 가중치의 합으로 가중치를 나눠줌, 이때 가중치는 RELU를 통과하므로 모두 0이상, 분모가 0이 되지 않게 아주 작은 값 epsilon더해줌
2) Model Scaling
더 좋은 성능을 위해서는 더 큰 backbone 모델을 사용해 detector의 크기를 키우는 것이 일반적임
EfficientDet은 accuracy와 efficiency를 모두 잡기 위해, 여러 constraint를 만족시키는 모델을
찾고자 함
따라서 EfficientNet과 같은 compound scaling 방식을 제안
backbone : EfficientNet b0-b6 사용
BiFPN Network
네트워크의 width(= # channels)와 depth(= #layers)를 compound 계수에 따라 증가시킴
1.35 : grid serach 로 찾은 값
D : 기본적으로 3번 반복 , 만큼 더 반복
Box/class prediction network
Width는 고정, depth를 다음과 같은 식에 따라 증가
Input image resolution
Resolution을 다음과 같이 선형적으로 증가
기본 image scale은 512, 에 128을 곱해주어 선형적으로 증가시킴
3.3 Results
같은 연산 대비 성능 좋음
Further Reading
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
EfficientDet: Scalable and Efficient Object Detection
wandb sweep 적용하는 코드 짜기
mmdetection 사용법 제대로 익히기
코어 타임 이후 시간 관리 + 공부
코어 타임 이후 공부하기
tmux적용해서 밤에 학습 돌려놓고 자기