1. Efficient in Object Detection
1.1 Model Scaling
일반적으로 모델의 크기를 키울수록 성능이 증가하는 경향이 있다.
a) 기본 베이스라인
b) 채널을 크게 주는 방법
- 네트워크의 깊이를 스케일링하는 방법은 많은 ConvNet 에서 쓰이는 방법
- DenseNet, Inception-v4
- 깊은 ConvNet은 더 풍부하고 복잡한 특징들을 잡아낼 수 있고, 새로운 태스크에도 잘 일반화됨
- 하지만 깊은 네트워크는 gradient vanishing 문제가 있어 학습이 어려움
c) 깊게 쌓는방법
d) 인풋 이미지를 크게 사용한 방법
- 고화질의 input 이미지를 이용하면 ConvNet은 미세한 패턴을 잘 잡아낼 수 있음
- 최근 Gpipe는 480x480 이미지를 이용하여, ImageNet 에서 SOTA를 달성함
e) b+c+d를 전부 적용
1.2 등장배경
더 높은 정확도와 효율성을 가지면서 ConvNet의 크기를 키우는 방법(scale up)은 없을까?
“ EfficientNet팀의 연구는 네트워크의 폭(width), 깊이(depth), 해상도(resolution) 모든
차원에서의 균형을 맞추는 것이 중요하다는 것을 보여주었다. 그리고 이러한 균형은
각각의 크기를 일정한 비율로 확장하는 것으로 달성할 수 있었다. “
2. EfficientNet
2.1 등장배경
• 파라미터 수가 점점 많아지고 있는 모델들
• ConvNet은 점점 더 커짐에 따라 점점 더 정확해지고 있음
▪ 2014 ImageNet winner – GoogleNet ; achieves 74.8% top-1 accuracy with about 6.8M parameters
▪ 2017 ImageNet winner – SENet ; achieves 82.7% top-1 accuracy with about 145M parameters
• 점점 빠르고 작은 모델에 대한 요구 증가
• 효율성과 정확도의 trade-off를 통해 모델 사이즈를 줄이는 것이 일반적
• SqueezeNets(2016,2018), MobileNets(2017)
• 하지만, 큰 모델에 대해서는 어떻게 모델을 압축시킬지가 불분명함
• 따라서 이 논문은 아주 큰 SOTA ConvNet의 efficiency를 확보하는 것을 목표로 함
• 그리고 모델 스케일링을 통해 이 목표를 달성함
2.2 Accuracy & Efficiency
d= depth를 조절하는 vector (깊이)
w = channel을 조절하는 vector (폭)
r = width,height를 조절하는 vector (해상도)
X_i = Input tensor
F_i = Operator
Y_i = Output tensor
- dwr을 최대화할때 accuracy를 최대화해라
- 하지만 memory와 flops는 작아야한다
-> 네트워크의 폭, 깊이, 혹은 해상도를 키우면 정확도가 향상된다.
하지만 더 큰 모델에 대해서는 정확도 향상 정도가 감소한다.
Observation 1
- d w r에대하여 한가지 factor만 바꾸고 나머지 factor들은 고정하여 실험함
Observation2
d,w,r에대해 한가지만 올리는게아니라 균형을 맞추며 같이 조절하는게 중요하다는 사실을 깨달음
Compound Scaling Method
아래와 같은 제약조건을 갖고 있음
2.3 EfficientNet
EfficientNet - B0
- MnasNet에 영감을 받음
- 𝐴𝐶𝐶 𝑚 × 𝐹𝐿𝑂𝑃𝑆 𝑚 𝑇 𝑤 를 최적화 목표
- Accuracy와 FLOPs를 모두 고려한 뉴럴넷을 개발함
- Nas 결과, EfficientNet-B0
1) Step 1
- 𝜙 = 1 로 고정
- 𝛼, 𝛽, 𝛾를 small grid search를 통해 찾음
- 𝛼 = 1.2, β = 1.1, 𝛾 = 1.15 under constraint of α ∙ 𝛽 2 ∙ 𝛾 2 ≈ 2
2) Step 2
- 𝛼, 𝛽, 𝛾를 상수로 고정
- 다른 𝜙를 사용해 scale up
- EfficientNet-B1 ~ B7
=> 𝜙를 1로 고정한결과가 B1, 2로 고정한 결과가 B2이다
3. EfficientDet
3.1 등장배경
EfficientNet은 이미지분류 모델이지만 이 알고리즘을 Detector로 사용함
EfficientDet은 1Stage Detector다
Motivate
자원의 제약이 있는 상태에서 더 높은 정확도와 효율성을가진 detection 구조를 만드는 것이 가능할까?
backbone, featuremap, FPN, box_classification_head, class_classicication_head를 동시에 scaleup한다
3.2 Challenge
1) Efficient multi-scale feature fusion
• In Neck, Simple Summation
2) Model Scaling
• Previous work focus on large backbone & Image size
1) Efficient multi-scale feature fusion
- EfficientDet 이전에는 multi-scale feature fusion을 위해 FPN, PANet, NAS-FPN 등 Neck 사용
- 하지만 대부분의 기존 연구는 resolution 구분 없이 feature map을 단순 합
- 서로 다른 정보를 갖고 있는 feature map을 단순합 하는게 맞을까?
=> EfficientDet 팀은 각각의 input을 위한 학습 가능한 웨이트를 두는 Weighted Feature Fusion 방법으로 BiFPN(bi-directional feature pyramid network)를 제안
- 모델의 Efficiency를 향상시키기 위해 다음과 같은 cross-scale connections 방법을 이용
- 하나의 간선을 가진 노드는 제거
- Output 노드에 input 노드 간선 추가 (residual)
- 양방향 path 각각을 하나의 feature Layer로 취급하여, repeated blocks 활용
FPN은 단순합을 사용했지만 여기서는 BiFPN을 사용하여 가중합을 사용함
BiFPN
- FPN처럼 그냥 합을 한게 아니라 가중치를 곱한 후 합하였음
- BiFPN의 경우 모든 가중치의 합으로 가중치를 나눠줌.
- 이 때 가중치들은 ReLU를 통과한 값으로 항상 0 이상
- 분모가 0이 되지 않도록 아주 작은 값 𝜖을 더해줌
2)Model Scaling
- 더 좋은 성능을 위해서는 더 큰 backbone 모델을 사용해 detector의 크기를 키우는 것이 일반적임
- EfficientDet은 accuracy와 efficiency를 모두 잡기 위해, 여러 constraint를 만족시키는 모델을 찾고자 함
- 따라서 EfficientNet과 같은 compound scaling 방식을 제안
- EfficientNet B0 ~ B6을 backbone으로 사용
- BiFPN network
- 네트워크의 width(= # channels)와 depth(= #layers)를 compound 계수에 따라 증가시킴
- D는 기본3회고 파이에 따라 횟수가 증가함
- 1.35는 grid search로 찾은값이다
- Box/class prediction network
- Width는 고정, depth를 다음과 같은 식에 따라 증가
- Input image resolution
- Resolution을 다음과 같이 선형적으로 증가
3.3 Results
'부스트캠프 AI Tech 2기 > 2기 CV P-Stage-Objectdetection' 카테고리의 다른 글
Advanced Object Detection 2 (0) | 2021.10.06 |
---|---|
Advanced Object Detection 1 (0) | 2021.10.05 |
1 stage Detectors (0) | 2021.10.01 |
Neck (0) | 2021.09.30 |
MMDetection & Detectron2 (0) | 2021.09.29 |