1.Efficient in Object Detection
1.1 Model scaling
- model이 deep 해질수록 좋은 성능을 가져오게 됐음
- but, 어느정도 깊어지면 더이상 성능개선이 어려움
- 얼마나 깊게 잘 쌓는지가 중요해짐
- (e) compound scailing 에서 깊고, 넓게 또, high resolution으로 model을 개선시켜왔음
- heuristic방법의 한계를 겪음
1.2 등장배경
- 따라서 더 높은 정확도와 효율성을 가지면서 convnet의 크기를 키우는 방법을 연구
- 너비, 깊이, 해상도 모든 차원에서의 균형을 맞추는 것이 중요하다는 것을 알게 됨.
- 이러한 균형은 각각의 크기를 일정한 비율로 확장하는 것으로 달성할 수 있었다고 함
1.3 Accuracy & Efficiency
- 낮은 FLOPs 대비 높은 mAP를 보임
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 Scale up
- Width Scaling
- 네트워크의 width를 스케일링하는 방법은 작은 모델에서 주로 사용됨 (ex. MobileNet, MnasNet )
- 더 wide한 네트워크는 미세한 특징을 잘 잡아내는 경향이 있고, 학습도 쉬움
- 하지만, 극단적으로 넓지만 얕은 모델은 high-level 특징들을 잘 잡지 못하는 경향이 있음
- Depth Scaling
- 네트워크의 깊이를 스케일링하는 방법은 많은 ConvNet 에서 쓰이는 방법
- DenseNet, Inception-v4
- 깊은 ConvNet은 더 풍부하고 복잡한 특징들을 잡아낼 수 있고, 새로운 태스크에도 잘 일반화됨
- 하지만 깊은 네트워크는 gradient vanishing 문제가 있어 학습이 어려움
- Resolution Scaling
- 고화질의 input 이미지를 이용하면 ConvNet은 미세한 패턴을 잘 잡아낼 수 있음
- 최근 Gpipe는 480x480 이미지를 이용하여, ImageNet 에서 SOTA를 달성함
2.3 Accuracy & Efficiency
*Better Accuracy & Efficiency
- Model의 정확도를 최대화하는 d, w, r을 찾자
- 단, 메모리는 타겟 메모리보다 같거나 작아야 하고, FLOPs도 타겟 FLOPs보다 같거나 작아야 함
- Observation 1
- 네트워크의 폭, 깊이, 혹은 해상도를 키우면 정확도가 향상된다.
- 하지만 더 큰 모델에 대해서는 정확도 향상 정도가 감소한다.
- Observation 2
- 더 나은 정확도와 효율성을 위해서는, ConvNet 스케일링 과정에서 네트워크의 폭, 깊이, 해상도의 균형을 잘 맞춰주는 것이 중요하다
- 더 나은 정확도와 효율성을 위해서는, ConvNet 스케일링 과정에서 네트워크의 폭, 깊이, 해상도의 균형을 잘 맞춰주는 것이 중요하다
- Compound Scaling Method
2.4 EfficientNet
*EfficientNet-B0
- MnasNet에 영감을 받음
- 𝐴𝐶𝐶 𝑚 × [𝐹𝐿𝑂𝑃𝑆 (𝑚) / 𝑇] ^ 𝑤 를 최적화 목표
- Accuracy와 FLOPs를 모두 고려한 뉴럴넷을 개발함
- Nas 결과, EfficientNet-B0
- 위와 같이 network 구조를 Nas를 통해 알아냄. 따라서 알파, 베타, 감마를 찾아야함
- Step 1
- 𝜙 = 1 로 고정
- 𝛼, 𝛽, 𝛾를 small grid search를 통해 찾음
- 𝛼 = 1.2, β = 1.1, 𝛾 = 1.15 under constraint of α ∙ 𝛽^2 ∙ 𝛾^2 ≈ 2
- Step 2
- 𝛼, 𝛽, 𝛾를 상수로 고정
- 다른 𝜙를 사용해 scale up
- EfficientNet-B1 ~ B7
- Results
3. EfficientDet
3.1 등장배경
*Detection
- Object Detection은 특히나 속도가 중요하다!
- 모델이 실생활에 사용되기 위해서는 모델의 사이즈와 대기 시간에 제약이 있기 때문에, 모델의 사이즈와 연산량을 고려해 활용 여부가 결정됨
- 이러한 제약으로 인해 Object Detection에서 Efficiency가 중요해지게 됨
- 그동안 있었던 많은 시도들...
- 1 stage model
- YOLO, SSD, RetinaNet ...
- Anchor free model
- CornerNet ...
- 하지만 Accuracy가 너무 낮음
- 1 stage model
- Motivation
- 자원의 제약이 있는 상태에서 더 높은 정확도와 효율성을 가진 detection 구조를 만드는 것이 가능할까?
- EffDet에서의 scale up 대상 - Backbone, FPN, Box/class prediction head
3.2 Challenge
- Efficient multi-scale feature fusion
- In Neck, Simple Summation
- 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 노드 간선 추가
- 양방향 path 각각을 하나의 feature Layer로 취급하여, repeated blocks 활용
- EfficientDet은 여러 resolution의 feature map을 가중 합
- FPN의 경우 feature map의 resolution 차이를 Resize를 통해 조정한 후 합
- BiFPN의 경우 모든 가중치의 합으로 가중치를 나눠줌.
- 이 때 가중치들은 ReLU를 통과한 값으로 항상 0 이상
- 분모가 0이 되지 않도록 아주 작은 값 𝜖을 더해줌
- Model Scaling
- Previous work focus on large backbone & Image size
- 더 좋은 성능을 위해서는 더 큰 backbone 모델을 사용해 detector의 크기를 키우는 것이 일반적임
- EfficientDet은 accuracy와 efficiency를 모두 잡기 위해, 여러 constraint를 만족시키는 모델을 찾고자 함
- 따라서 EfficientNet과 같은 compound scaling 방식을 제안 (width, depth, resolution)
- EfficientNet B0 ~ B6을 backbone으로 사용
- BiFPN network
- 네트워크의 width(= # channels)와 depth(= #layers)를 compound 계수에 따라 증가시킴
- 1.35계수는 grid search로 찾은 값
- Box/class prediction network
- Width는 고정, depth를 다음과 같은 식에 따라 증가
- Width는 고정, depth를 다음과 같은 식에 따라 증가
- Input image resolution
- Resolution을 다음과 같이 선형적으로 증가
- Resolution을 다음과 같이 선형적으로 증가
- Results
- 전체적으로 낮은 FLOPs 대비 높은 성능을 보여줌
'부스트캠프 AI Tech > [Week9] Object Detection (1)' 카테고리의 다른 글
[Week9] Object Detection - 1 stage detector [Day3] (0) | 2021.09.29 |
---|---|
[Special Mission3] Detectron2 튜토리얼 (0) | 2021.09.29 |
[Week9] Object Detection - Neck [Day2] (0) | 2021.09.28 |
[Week9] Object Detection - library [Day2] (0) | 2021.09.28 |