(해당 글은 개인적인 기록을 목적으로 잘못된 내용이 있을 수 있음을 알립니다.)
이번에 리뷰할 논문은 YOLOv4: Optimal Speed and Accuracy of Object Detection입니다.
(https://arxiv.org/abs/2004.10934)
빠른 inference 속도와 비교적 높은 AP(Average Precision)을 자랑하는 YOLO계열 의 네번 째 페이퍼입니다.
YOLOv5부터는 페이퍼가 따로 나오지 않은 것으로 알고 있습니다.
사실 개인적으로 해당 페이퍼는 논문이라기보다는 Technical Report에 조금 더 가깝지 않나라는 생각이 들었습니다.
0. Abstract
딥러닝 모델(CNN계열)에는 다양한 feature(트레이닝 방법, 네트워크 구조)를 가지고 있습니다. 그런데 모든 feature(트레이닝 방법 혹은 구조들)가 항상 좋은 성과를 보이지 않고 데이터셋의 크기, 종류나 네트워트 간의 조합 등에 크고 작은 영향을 받는다고 합니다.
해당 페이퍼의 저자들은 어떤 상황에서는 학습이 잘 되고 일관된 성능이 나올 수 있는 universal feature를 고르고 골라 당시 기준으로 SOTA성능을 보인 YOLOv4를 제안합니다.
성능은 Tesla V100 기준 real-time으로 MS COCO데이터셋에서 43.5%(AP)의 정확도와 ~65 FPS의 속도를 보였다고 합니다.
사용된 feature는
Weighted-Resudial-Connections(WRC), Cross-Stage-Pratical-connections(CSP), Cross mini-Batch Normalization(CmBN), Self-adversarial-training(SAT), Mish activation
Mosaic data augmentation, DropBlock regularization, CIoU loss
이 있었습니다.
공식 코드는 https://github.com/AlexeyAB/darknet에서 찾아볼 수 있습니다.
1. Introduction
저자는 최근에 높은 성능을 내고 있는 classification/detection 모델들을 보면 real-time에 사용할 수 있을 정도로 빠르고, 저렴한 GPU로 돌아가는 모델이 없다고 합니다. 아마 요즘 모델들이 벤치마크 성능은 좋아도 실용성이 없다는 것을 이야기 하고 싶은 것 같습니다.
그래서 해당 페이퍼는 실제 상황에서 빠른 연산 속도를 제공하고, 병렬 연산(parallel computations)에 최적화가 된 모델을 제안하는 것이 목적이라고 제시합니다.
연산량을 "이론적으로" 측정하는 BLOP대신에 실제 속도가 빠른걸 목적으로 한다고 언급을 하는 부분이 있는데, 이 부분에서도 본인들의 실용성을 강조하고 싶어보인 다는 생각이 드는 대목이었습니다.
병렬 연산이라고 하면 저만 그랬는지 모르겠지만, multi-GPU를 사용한 학습이 먼저 떠올랐는데, 여기서 병렬 연산은 사이즈가 작은 GPU를 가지고도 좋은 mini-batch Normalization기법으로 성능 저하가 없이 학습이 된다는 맥락으로 이해하는게 적합한 것 같습니다.
저자들이 주장하는 Contribution은 3가지가 있습니다 .
- 효율적이고 강력한 Object Detection 모델을 제안하였다. 1080Ti나 2080Ti 같은 GPU로도 빠르고 정확한 모델을 학습할 수 있게 하였다.
- Detection 학습을 할 때, 최신 Objection Detection 계열 모델에서 사용되는 bag-of-Freebies, bag-of-Specials 방법들의 효과를 실험을 통해 비교분석 하였다.
- 단일 GPU에서도 학습이 동일하게 잘 되도록 CBN, PAN, SAM등의 feature를 수정하였다.
2. Related Work
2.1. Object detection models
Detection Model은 크게 2가지로 분류할 수 있습니다. (One-Stage Detector/Two-Stage Detector)
아래 그림을 보시면 알 수 있듯이 One-stage detector는 Head로 Dense Prediction을 사용하고, Two-stage detector는 head로 Sparse Prediction을 사용한다는 차이가 있습니다.
2.2. Bag of freebies
Bag of freebies는 한국말로 대충 무료 사은품 뭉치(?) 정도로 해석해볼 수 있습니다. Inference Cost에는 전혀 영향을 주지 않고 학습 데이터처럼 Training 때만 영향을 받는 요소들을 자유롭게 고쳐서 이런 이름이 붙은 것 같습니다.
데이터 부분에서는
Random Scaling, Cropping, Flipping, Rotation (픽셀 단위 조작을 하는 데이터 증강 기법)
Random Sample, Random Erase, CutOut, Random Region Padding (고의적으로 occlusion을 일으키는 데이터 증강 기법)
그 외에도 CutMix, MixUp, Style transfer GAN을 통한 데이터 증강 등등이 있습니다.
또한 학습 시에 사용이 되는 soft-labeling, focal loss, objective functions 등등이 Bag of freebies에 해당 됩니다.
2.3. Bag of specials
Bag of specials는 inference에 영향을 주는 요소들을 의미한다. 성능을 높이기 위해서 모델 앞, 뒤, 중간에 사용된 모듈들이라고 생각하면 됩니다.
SPP, SPM, ASPP, RFB 등이 여기에 해당됩니다.
하나 하나 이야기 하면 글이 너무 길어지니 생략하겠습니다.
3. Methodology
3.1. Selection of architecture
Image classification과 Object detection에서 최적의 성능을 내는 적합한 모델의 구조가 각각 다르다고 합니다.
Obejct detection에서 좋은 성능을 내기 위해서는 아래와 같은 조건이 필요하다고 합니다.
- 높은 해상도: 크기가 작은 객체 검출을 위해서
- 깊은 층: 높은 해상도의 이미지를 처리할 수 있는 넓은 Receptive field
- 많은 수의 파라미터: 하나의 이미지에서 다양한 객체를 검출할 수 있는 capacity를 가진 모델
- 일반적으로 파라미터 갯수가 많아지면 더 많은 정보를 담도록 학습할 수 있다는 의미로 capacity가 크다는 표현을 사용하곤 합니다.
위의 조건에 부합하는 후보들을 실험적으로 검증한 결과 object detection을 위한 모델로는 CSPDarknet53이 가장 적합한 backbone이라고 합니다. Receptive field가 크면 클 수록 object 주변의 픽셀 값들까지 참조할 수 있고, 여러 layer을 지난 후에도 객체 간에 유의미한 연산이 가능하기 때문에 좋다고 주장합니다.
Backbone인 CSPDarknet53에 SPP block을 추가하여 receptive field의 크기를 키우는 동시에 연산 속도의 저하는 거의 없게 하였다고 합니다. Neck으로는 PANet을 사용하였다고 합니다. 마지막으로 head는 YOLOv3의 head와 동일한 구조를 사용했다고 합니다.
3.2. Selection of BoF and BoS
모델의 Bag of freebies & Bag of specials 중에 아래와 같은 후보군이 있었습니다.
이 중에서 실험적으로 성능이 좋지 않은 것, 모델 개발 취지에 어긋하는(예: Sync Batchnorm) feature들은 배제 하였다고 합니다.
뒤에서 추려진 feature들로 ablation을 진행하는 부분이 있는데, 해당 부분에서 어떤 feature가 최종적으로 사용되었는지 확인하면 됩니다.
3.3. Additional Improvements
추가적으로 Detector를 위해 추가된 부분들입니다.
첫 번째가 data augmentation(데이터 증강)기법인 Mosaic와 Self-Adversarial Training(SAT)입니다.
Mosaic는이미지 네 개를 섞어서 하나의 이미지를 만드는 기법입니다. CutMix는 2개의 이미지를 가지고 섞는 것을 감안하면 더 많은 이미지가 하나의 샘플 안에 들어가게 됩니다. 이렇게 함으로서 하나의 샘플에 다양한 context의 이미지가 들어가게 되면서 일종의 context-agnostic한 detector를 만드는 것이 목표였던 것으로 보입니다. 동시에 미니 배치 내부에 훨씬 더 많은 이미지 조각들이 들어가게 되서 학습 상에서 실전 압축 미니 배치처럼 동작하게 된다고 합니다.
Self-Adversarial-Training은 adversarial attack 기법을 학습에 적용한 것 입니다. 이미지가 detector에 들어가기 전에 원본 이미지를 object detect하기 어려운 픽셀들로 옮기는 adversarial attack을 먼저 진행해주면서 모델이 구성되었다고 합니다.
두 번째는 Cross mini-batch Normalization(CmBN) 방법입니다.
아래 그림은 Batch Normalization과 Cross Batch Normalization과 Cross mini-batch normalization의 차이를 나타낸 그림입니다. CBN은 사이즈가 4인 queue에 batch를 4개 씩 밀어가면서 batch normalization을 하는 느낌이라면, CmBM은 mini-batch 네 개씩 끊어서 묶어 BN을 진행한다는 차이가 있습니다.
4. Experiment
다양한 feature들을 가지고 ablation을 진행하였습니다.
Bag of freebies에 대한 실험입니다.
추가적인 실험은 원문을 참고해주시면 될 것 같습니다.
'Computer Vision' 카테고리의 다른 글
[논문 리뷰] Segment Anything (4) | 2023.04.12 |
---|---|
[논문 리뷰] End-to-End Object Detection with Transformers (DETR) (0) | 2023.02.10 |
[논문 리뷰] MoCo: Momentum Contrast for Unsupervised Visual Representation Learning (0) | 2022.11.21 |