최신 detector는 주로 백본(Backbone)과 헤드(Head)라는 두 부분으로 구성된다. 백본은 입력 이미지를 feature map으로 변형시켜주는 부분이다. ImageNet 데이터셋으로 pre-trained 시킨 VGG16, ResNet-50 등이 대표적인 Backbone이다. 헤드는 Backbone에서 추출한 feature map의 location 작업을 수행하는 부분이다. 헤드에서 predict classes와 bounding boxes 작업이 수행된다.
헤드는 크게 Dense Prediction, Sparse Prediction으로 나뉘는데, 이는 Object Detection의 종류인 1-stage인지 2-stage인지와 직결된다. Sparse Prediction 헤드를 사용하는 Two-Stage Detector는 대표적으로 Faster R-CNN, R-FCN 등이 있다. Predict Classes와 Bounding Box Regression 부분이 분리되어 있는 것이 특징이다.
Dense Prediction 헤드를 사용하는 One-Stage Detector는 대표적으로 YOLO, SSD 등이 있다. Two-Stage Detector과 다르게, One-Stage Detector는 Predict Classes와 Bounding Box Regression이 통합되어 있는 것이 특징이다.
넥(Neck)은 Backbone과 Head를 연결하는 부분으로, feature map을 refinement(정제), reconfiguration(재구성)한다. 대표적으로 FPN(Feature Pyramid Network), PAN(Path Aggregation Network), BiFPN, NAS-FPN 등이 있다.
BOF는 inference cost의 변화 없이 성능을 향상(better accuracy)시킬 수 있는 딥러닝 기법들이다. 대표적으로 데이터 증강(CutMix, Mosaic 등)과 BBox(Bounding Box) Regression의 loss 함수(IOU loss, CIOU loss 등)이 있다.
BOS는 BOF의 반대로, inference cost가 조금 상승하지만, 성능 향상이 되는 딥러닝 기법들이다. 대표적으로 enhance receptive filed(SPP, ASPP, RFB), feature integration(skip-connection, hyper-column, Bi-FPN) 그리고 최적의 activation function(P-ReLU, ReLU6, Mish)이 있다.
본 논문의 주된 목적은 빠르게 작동하는 Neural Network, 병렬 처리에 대한 최적화가 목표이다.
목표는 입력 network resolution, convolution layer number, parameter number(filter_size^2 * filter * channel/group) 및 layer output number(filter) 사이의 최적의 균형을 찾는 것이다.
예를 들어, CSPResNext50이 ILSVRC2012(ImageNet) 데이터 세트의 객체 분류 측면에서 CSPDarknet53에 비해 상당히 우수하다는 것을 보여준다. 그러나, 반대로, CSPDarknet53은 MS COCO 데이터 세트의 객체 탐지 측면에서 CSPResNext50에 비해 더 우수하다.
다른 목표는 다양한 Detection Level(FPN, PAN, ASFF, BiFPN)에 대한 Backbone Level에서 최선의 parameter 연산 방식을, receptive field를 증가시키기 위해 추가 블록을 선택하는 것이다.
Classification에 최적인 model이 항상 Detection에 최적인 것은 아니다. Classification과 달리 Detection에는 다음이 필요하다.
위 3가지 요건을 고려하면, 더 큰 receptive field 크기(더 많은 수의 convolution layers 3 × 3)와 더 많은 수의 parameters를 가진 모델을 Backbone으로 선택해야 한다. CSPResNext50은 16개의 convolution layers 3 × 3, 425 receptive field 및 20.6M parameters만 포함하고 있는 반면, CSPDarknet53은 29개의 convolution layer 3 × 3, 725 × 725 receptive field 및 27.6M parameters를 포함한다. 이러한 이론적 정당성은 수많은 실험과 함께 CSPDarknet53 Network가 Detection의 BackBone으로서 둘 중 최적의 모델임을 보여준다. receptive field 크기에 따른 영향력은 아래와 같다.
Yolo v4에서는 SPP 블록을 CSPDarknet53에 추가했는데, 이는 receptive field를 크게 늘리고 가장 중요한 context features를 분리하며 Network 작동 속도를 거의 감소시키지 않기 때문이다. YOLOv3에 사용되는 FPN 대신 다양한 Detection Level에 대한 다양한 Backbone Level에서 parameter aggregation 방법으로 PANet을 사용한다. YOLOv4의 Architecture로 CSPDarknet53 Backbone, SPP add modules, PANet path-aggregation neck 및 YOLOv3(Anchor Based) head를 선택한다. 향후 우리는 이론적으로 일부 문제를 해결하고 정확도를 높일 수 있는 Detector를 위해, Bag of Freebies의 content를 크게 확장하고 각 기능의 영향을 순차적으로 확인할 계획이다. Cross-GPU Batch Normalization(CGBN 또는 SyncBN)나 값비싼 전문 기기를 사용하지 않는다. 이를 통해 누구나 GTX 1080Ti 또는 RTX 2080Ti와 같은 기존 그래픽 프로세서에서 최첨단 결과를 재현할 수 있다.
CNN에서 사용하는 주된 기법은 아래와 같다.
Activation Function에 대해서는 PRLU와 SELU가 학습하기 더 어렵고, ReLU6는 Quantize Network를 위해 특별히 설계되었으므로 후보 목록에서 제외한다. Regularization 방법으로는 DropBlock을 선택한다. normalization 방법의 선택에 대해서는 GPU 하나만 사용하는 학습 전략에 중점을 두기 때문에 SyncBN은 고려되지 않는다.
하나의 GPU에서 적합한 학습을 위해 아래와 같은 내용을 추가했다.
Mosaic은 4개의 학습 이미지를 혼합하는 새로운 Data augmentation 방법이다. 따라서 CutMix는 2개의 입력 영상만 혼합하는 반면, Mosaic은 4개의 다른 컨텍스트가 혼합된다. 이는 정상적인 context를 벗어난 물체의 detection을 낮춘다. 또한 batch normalization은 각 레이어에 있는 4개의 서로 다른 이미지에서 activation statistics를 계산한다. 따라서 큰 mini batch size가 필요하지 않다.
Self-Adversarial Training(SAT)은 또한 2개의 순전파, 역전파 단계에서 작동하는 새로운 Data augmentation 기술을 나타낸다. 1단계에서 Network는 network weights 대신 원본 이미지를 변경한다. 이러한 방식으로 network는 이미지에 원하는 물체가 없다는 속임수를 만들기 위해 원래 이미지를 변경함으로써 자신에 대한 적대적 공격을 실행한다. 두 번째 단계에서 network는 이 수정된 이미지의 물체를 정상적인 방법으로 감지하도록 학습된다.
본 논문에서는 SAM을 기존의 spatial-wise attention 방식에서 point-wise attention 방식으로 변경한다. PAN에서는 shortcut connection 구조를 concatenation 구조로 변경한다.
Yolo v4는 아래와 같이 구성된다.
BackBone Network 성능 향상을 위한 BoF, BoS는 아래와 같다.
Detect Network 성능 향상을 위한 BoF, BoS는 아래와 같다
ImageNet image classification 학습에 관련된 hyper parameter는 아래와 같다.
MS COCO object detection 학습에 사용된 hyper parameters는 아래와 같다.
YOLOv3-SPP를 사용한 Genetic 알고리즘 실험에서는 위와는 다른 hyper parameters를 설정했다. hyper parameters는 아래와 같다.
Class label smoothing 영향, 서로 다른 Data augmentation의 영향, MixUp, CutMix 및 Mosaic, Leaky-ReLU, Swish, Miss와 같은 다양한 Activation의 영향을 연구한다.
본 실험에서, CutMix 및 Mosaic Data augmentation, Class label smoothing, Mish Activation 같은 기능을 도입함으로써 Classifier의 정확도가 향상된다. 따라서 Classifier 학습을 위한 BOF Backbone(Bag of Freebies)는 CutMix 및 Mosaic Data augmentation 및 Class label smoothing. 또한 보완적인 옵션으로 Mish Activation을 사용한다.
본 연구는 Detector Training accuracy에 대한 다양한 BoF Detector(Bag-of-Freebies)의 영향에 관한 것이다. FPS에 영향을 주지 않고 Detector accuracy를 높이는 다양한 특징을 연구하여 BoF 목록을 크게 확장한다.
추가 연구는 PAN, RFB, SAM, Gaussian YOLO(G) 및 ASFF를 포함한 Detector 학습 accuracy에 대한 BoS Detector의 영향에 관한 것이다. 본 실험에서 검출기는 SPP, PAN 및 SAM을 사용할 때 최고의 성능을 발휘한다.
Detector accuracy에 대한 다양한 Backbone network의 영향을 연구한다. 최고의 classification accuracy로 특징지어지는 모델이 detector accuracy 측면에서 항상 최상은 아니라는 것을 알 수 있다.
서로 다른 features로 학습된 CSPResNeXt50 모델의 classification accuracy는 CSPDarknet53 모델에 비해 높지만, CSPDarknet53 모델은 object detection 측면에서 더 높은 accuracy를 보인다.
CSPResNeXt50 classifier 교육에 BoF와 Mish를 사용하면 classification accuracy가 높아지지만, detector 학습에 pretrained된 weight를 추가로 적용하면 detector accuracy가 감소한다. 그러나 CSPDarknet53 detector 학습에 BoF와 Mish를 사용하면 classifier와 pretrained weight를 사용하는 detector의 accuracy가 모두 증가한다. 결과적으로 Backbone CSPDarknet53이 CSPResNeXt50보다 detector에 더 적합합니다.
CSPDarknet53 모델이 다양한 개선으로 인해 detector accuracy를 높일 수 있는 더 큰 능력을 보여준다는 것을 알 수 있다.
다양한 mini batch size로 학습된 모델을 사용하여 얻은 결과를 분석한다. 표에 표시된 결과에서, BoF 및 BoS을 추가한 후 mini batch size가 detector의 성능에 거의 영향을 미치지 않는다는 것을 발견했다. 이러한 결과는 BoF와 BoS 도입 이후 더 이상 학습에 값비싼 GPU를 사용할 필요가 없음을 보여준다. 즉, 누구나 뛰어난 detector를 학습시키기 위해 기존의 GPU만을 사용할 수 있다.