[논문리뷰] YOLOv4: Optimal Speed and Accuracy of Object Detection

chaenyang·2024년 11월 14일

self-driving

목록 보기
1/9
post-thumbnail

논문 링크: https://arxiv.org/abs/2004.10934

YOLOv3에 모듈 형식의 추가적인 방법, Loss function 개선, 더 효율적인 학습 방식 적용하여 만든 빠르고 정확한 모델이 YOLOv4이다.

Abstract

대부분의 CNN 기반 object detector들은 추천 시스템에서 사용된다.

예를 들면, 주차장에 빈자리를 찾을 때는 느리지만 성능이 좋은 모델을 사용하고, 자동차 충돌 알림 시스템에서는 빠르지만 예측 성능이 떨어지는 모델을 사용한다.

예측 성능이 뛰어난 현대의 object detector들은 실시간(real-time)으로 돌아가지 않으며, 학습하는동안 많은 GPU가 필요하고, mini batch의 크기가 크다는 단점이 있었다.

YOLOv4 논문에서는 real-time object detector들이 평범한 GPU에서 돌아갈 수 있도록 많은 feature를 적용하였다. 또한 하나의 GPU만 필요한 CNN 기반 모델을 제안하였다.

real-time object detector을 만들기 위해 병렬 처리 환경에서 최적화를 빠르게 수행할 수 있는 모델을 개발하도록하였다.

YOLOv4 개발 위해 한 세가지 일
1. 1080 Ti, 2080 Ti 같은 평범한 GPU만으로도 학습이 가능
2. Object detector를 학습시킬 때 BoF, BoS 방식이 학습에 미치는 영향에 대한 검증
3. 기존의 SOTA BoF, BoS이 single GPU에서 학습이 더 잘되도록 기법을 변형

1. Introduction

object detector은 one-stage detector, two-stage detector로 나뉜다.

One-stage detector은 Backbone → Dense Prediction을 거쳐서 class와 BBox를 예측한다.
Two-stage detector은 Sparse Prediction, 한 단계를 더 거친다.

Backbone은 classification task로 pretrained 된 모델을 주로 사용한다. Neck은 Backbone과 Head를 연결하는 부분이다.
Dense Predictin과 Sparse Prediction은 Head로, 예측하는 부분이다.

연구 목표는 object detector의 작동 속도가 빨라지고, 병렬 연산이 최적화되는 것이다.

2. Related work

2.1. Object detection models

최신 detector들은 일반적으로 backbone, head 두 부분으로 구성된다.

1. Backbone
: 이미지에서 특징 표현 추출하기 위해 pre-trained된 네트워크
ImageNet으로 pre-trained

  • GPU 기반: VGG, ResNet, ResNeXt, DenseNet
  • CPU 기반: SqueezeNet, MobileNet, ShuffleNet

→ 이미지의 공간 해상도를 줄이고, 특징 해상도를 높이는 데 도움된다.


2. Head
: 최종 단계 작업 수행

  • one-stage:

    • anchor based: YOLO, SSD, RetinaNet
    • anchor free: CenterNet, CornerNet, FCOS
  • two-stage: R-CNN 시리즈 (Fast R-CNN, Faster R-CNN, R-FCN, Libra R-CNN)

→ class, bounding box 예측


v4 이전의 모델들은 backbonehead로만 구성되었는데, v4부터 neck가 추가되었다.

3. Neck
: backbone과 head 사이에 layer 삽입해서 연결하는 구조로, feature map을 모은다. 특징 피라미드 추출에 사용된다.

  • FPN, PAN, BiFPN, NAS-FPN
    → 모델이 다양한 크기와 스케일의 객체 일반화되도록 돕는다.

4. Others
: object detection 위한 새로운 backbone이나 model

  • 새로운 backbone: DetNet, DetNAS
  • 새로운 model: SpineNet, HitDetector

2.2. Bag of freebies

효율적인 학습을 위해 training 전략만 변경하거나 학습 비용만 증가시키는 딥러닝 기법이다. Inference 비용 증가 없이 성능 향상을 할 수 있다.

Data Augmentation, Regularization, Normalization, Object Function이 있다.

1. Data Augmentation

데이터의 가변성을 증가시켜, 모델이 robust해지는 것이 목적
입력 이미지와 feature map에 적용할 수 있다.

1) Photometric, Geometric distortion

  • Photometric: 이미지 밝기, 대비, 색조, 채도, 노이즈 조정
  • Geometric: random scaling, cropping, flipping, rotating

2) Object occlusion 문제 시뮬레이션

  • 사각형 영역 무작위로 선택하고 무작위로 지우거나(Random Erase) 0으로 채움(CutOut)
  • 여러 개의 사각형을 무작위하거나 고르게 선택하여 모두 0으로 채움(Hide-and-seek, Grid mask)

3) 여러 이미지 함께 사용

  • MixUp: 여러 이미지 결합하는 방식: 두개의 이미지를 사용하여 서로 다른 coefficient ratios를 곱한 후 중첩시킨 다음, 이렇게 중첩된 ratios로 label을 조정
  • Cutmix: 잘라낸 이미지를 다른 이미지의 사각형 영역으로 덥고 mix area의 크기에 따라서 label을 조정

4) GAN 이용

  • style transfer GAN 적용하여 CNN이 학습한 texture bias 줄임

2. Regularization

  • 이미지 픽셀 대신 추출된 특징 정보를 조정하여 feature map에 적용
    - DropOut, DropConnect, DropBlock

3. Normalization

데이터 불균형 때문에 발생한 semantic distribution의 bias를 해결해야하는데,
Hard negative example mining, online hard example mining, focal loss로 해결하고자 하였다.

하지만 example mining은 YOLO 같은 one-stage object detector에서 사용할 수 없다. (two-stage에서 사용 가능) one-stage object detector은 dense prediction architecture에 속하기 때문이다. (dense predicton: 하나의 픽셀로부터 label을 예측하는 작업)

따라서, focal loss for dense object 방식으로 데이터 불균형을 해결하였다.

4. Object Function

BBox(bounding box) regression의 목적 함수를 사용한다.

여태까지 object detector들은 MSE를 사용하여 bbox의 x, y, width, height에 대한 regression을 수행하였다. YOLO 같은 anchor 기반 방식들의 목적함수는 x_offset, y_offset, width_offset, height_offset에 대한 regression을 수행한다. 하지만, 각 offset에 대해 직접적으로 regression을 수행하면, 각 값을 독립적인 변수로 봐서 객체의 integrity를 고려하지 않게 된다.

이를 해결하기 위한 방법이 IoU loss이다. IoU loss는 bbox가 ground-truth bbox와 겹치는 정도를 고려한 loss이다.
IoU loss는 scale invariant해서 기존의 l1l_1 또는 l2l_2 loss를 사용할 때 이미지가 커지면서 loss가 같이 커지는 문제를 해결하였다. IoU 다음으로 GIoU, DIoU, CIoU가 개발되었다.

GIoU 객체의 형태와 방향도 고려하였고, DIoU는 중심점 사이의 거리도 고려하였다. CIoU loss는 겹치는 영역, 중심점 거리, 가로세로 비율을 동시에 고려하였다.

*scale invariant: 이미지의 크기가 바뀌어도 IoU는 달라지지 않음

2.3. Bag of specials

BoF와 반대로 Inference cost가 조금 상승하는 성능 향상을 위한 딥러닝 방법이다. Plugin module과 post-processing 방식(예측 결과 생성 후 처리) 방법을 사용한다.

모델의 특성을 강화하는 방식으로, Enlarging Receptive Field, Attention Mechanism, Feature Integration, Activation Function이 있다.

1. Enlarging Receptive Field

1) SPP

feature map을 d x d 크기로 나누면 d 개수만큼 layer가 생기는데, 그 후에 각 layer의 각 영역에서 max pooling을 진행한다. 각 layerㄴ느 1차원 feature vector를 출력하고, 모든 layer에서 나온 결과를 하나의 긴 1차원 feature vector로 연결한다.

YOLOv3에서는 SPP 모듈의 구조를 변형하여 computation을 0.5% 추가한 것만으로도 MS COCO에서 AP50_{50} 점수를 2.7% 향상시켰다.

2) ASPP

3) RFB

2. Attention Mechanism

Object detection에서 사용되는 attention module은 channel-wise attention과 point-wise attention으로 나뉜다.

Channel wise attention의 대표 모델은 Squeeze-and-Excitation(SE)이고, point-wise attention의 대표 모델은 Spatial Attention Module(SAM)이다.

SAM은 ImageNet image classification task에서 computation이 0.1% 추가되었지만, 성능은 0.5% 상승했다. 또한 GPU 상에서 inference 속도에 영향을 주지 않았다.


3. Feature Integration

초기에 feature integration은 skip connection 또는 hyper-column을 사용하여 low-level physical feature를 high-level semantic feature(=의미있는 feature)로 통합하였다.

FPN같은 Multi-scale prediction 방식이 유명해지며, 여러개의 feature pyramid를 통합하는 SFAM, ASFF, BiFPN 등의 가벼운 모듈이 제안되었다.

4. Activation Function

좋은 활성화 함수는 추가적으로 computational 비용을 크게 만들지 않고, gradient가 더 효율적으로 propagated되게 한다.

ReLU는 gradient vanishing problem을 해결했고, LReLU, PReLU, ReLU6, Scaled Expolential Linear Unit, Swish, hard-Swish, Mish도 제안되었다.

3. Methodology

3.1. Selection of architecture

YOLOv4 개발 목표

  1. input network resolution(=입력 이미지의 화질), convolution layer 개수, 파라미터 수, layer 출력 개수(filter)가 최적의 밸런스를 찾는 것

  2. receptive field를 늘리기 위해

YOLO 모델 구조 조건

  • 작은 물체 탐지하기 위해 더 큰 해상도(resolution) 이미지 사용 → 높은 입력 네트워크 크기 필요

  • 늘어난 입력 네트워크 다루기 위해 더 많은 layer로 큰 receptive field

  • 다양한 크기의 물체 탐지하기 위해 더 큰 capacity 모델 사용 → 더 많은 파라미터 필요

따라서, backbone으로 더 큰 receptive field와 (더 많은 convolutional layer) 더 많은 수의 파라미터를 갖는 모델이 선택되어야 한다.

최적의 Backbone 모델은 CSPDarknet53이다. 이때, 큰 해상도의 이미지를 사용했다는 것을 알 수 있다. (→ Receptive field size가 725x725) 파라미터 수가 27.6M로, 수가 커서 capacity가 크다.
EfficientNet-B3의 Receptive field size가 더 크지만 CSPDarknet53의 파라미터 수가 더 커서 capacity가 더 크다고 할 수 있다.
FPS(한장 당 처리하는 frame 수)가 66으로 가장 크다.

Receptive field 크기의 영향
1. Receptive field가 물체의 크기이면 물체의 전체 그림을 볼 수 있다.
2. Receptive field가 네트워크 크기이면 물체 주변의 배경까지 볼 수 있다.
3. Receptive field가 네트워크의 크기보다 크면 이미지 간 연결성이 증가한다.
→ 큰 receptive field를 갖는 것이 중요하다.

*CSP (Cross Stage Partial): New backbone that can enhance learning capability of CNN

3.2. Selection of BoF and BoS

SPP 블록이 receptive field를 증가시키고 네트워크의 속도를 거의 감소시키지 않아서 CSPDarknet53 뒤에 SPP를 추가했다. 또한 PANet으로 parameter aggregation을 수행했다. 그리고 anchor based인 YOLOv3를 head로 사용하였다.

1. Activations
: ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish


2. Bounding box regression loss
: MSE, IoU, GIoU, CIoU, DIoU

object 마다 scale 크기가 다른데, MSE는 scale에 취약해서 영향을 받는 단점이 있다. 이를 개선한게 교집합을 사용한 IoU이고, GIoU, CIoU로 점점 개선되어서 DIoU가 사용되었다.


3. Data augmentation
: CutOut, MixUp, CutMix


4. Regularization method
: DropOut, DropPath, Spatial DropOut, DropBlock

DropBlock에서 좋은 결과가 나와서 나머지 메소드는 ablation study에 포함되지 않았다.


5. Normalization of the network activation by their mean and variance
: Batch Normalization(BN), Cross-GPU Batch Normalization (CGBN or SyncBN), Filter Response Normalization(FRN), Cross-Iteration Batch Normalization(CBN)


6. Skip-connections
: Residual connections, Weighted residual connections, Multi-input weighted residual connections, Cross stage patial connections(CSP)

3.3. Additional improvements

YOLOv4가 하나의 GPU에서 학습을 수행할 수 있도록 추가적인 방법을 사용하였다.

1. Data Augmentation
Mosaic, Self-Adverarial Training(SAT)을 사용하였다.

Mosaic는 4장의 이미지를 합쳐서 한장으로 사용하여, batch size를 4로 했을 때와 비슷한 효과가 나타난다. 적은 batch로 효율적으로 많은 이미지 학습이 가능하다. 4개의 이미지를 합쳤기 때문에 4개의 다른 환경에 대한 정보를 갖게 된다.

SAT는 새로운 data augmentation 방식으로, 2개의 forward backward 단계를 따른다. 첫번째 단계에서 nn가 네트워크의 weight 대신 원본 이미지를 변경하여 이미지 속에 객체가 없는 것처럼 자신을 속인다. 두번째 단계에서 nn은 수정된 이미지를 기존의 학습 방식으로 학습한다.


2. Hyperparameter Search
Genetic Algorithm을 적용하여 최적의 하이퍼파라미터를 선택하였다.


3. Modified Existing Methods
Modified SAM, Modified PAN, Cross mini-Batch Normalization(CmBAN)을 수정하여 모델이 효율적으로 학습할 수 있게 하였다.

CmBN은 CBN이 수정된 방식으로, single batch 안의 mini batch 사이에 있는 statistics만 수집한다.

원래 mini-batch는 전체 이미지를 한번에 학습하기 어려워서 32, 16 batch size로 mini batch 단위를 센다. 본 논문에서는 우리가 알고 있는 batch size를 또 나눈다.

Max-Pooling을 거치고, Convolution을 거쳐서 하나의 차원이 되고, Sigmoid를 거쳐서 각 픽셀마다 0~1 사이의 값을 갖게 된다. 그 후에 원래 이미지 차원과 곱해져서 self attention이 적용된다.

SAM은 원래 spatial-wise attention인데 modified SAM에서는 point-wise attention으로 수정했다.

PAN의 shortcut connection을 concatenation으로 대체했다.

3.4. YOLOv4

YOLOv4 모델 구조

  • Backbone: CSPDarknet53

  • Neck: SPP, PAN

  • Head: YOLOv3


YOLOv4 uses..

  • Bag of Freebies (BoF) for backbone
    : CutMix, Mosaic data augmentation, DropBlock regularization, Class label smoothing

  • Bag of Specials (BoS) for backbone
    : Mish activation, Cross-stage partial connections (CSP), Multi-input weighted residual connections (MiWRC)

  • Bag of Freebies (BoF) for detector
    : CIoU loss, CmBN, DropBlock regularization, Mosaic data augmentation, Self Adversarial Training(SAT), Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler, Optimal hyper parameters, Random training shapes

  • Bag of Specials (BoS) for backbone
    : Mish activation, SPP, SAM, PAN, DIoU-NMS

4. Experiments

4.1. Experimental setup

YOLOv4는 실험에서 ImageNet, MS COCO dataset을 사용했다.

CSPResnext50 backbone에 적용한 BoF에 대한 classification ablation experiment이다.

아무것도 사용하지 않았을 때 77.9%이고, CutMix, Mosaic, Label Smoothing, Mish를 사용했을 때 가장 높은 79.8%를 기록했다.

CSPDarknet backbone에 적용한 BoF에 대한 classification ablation experiment이다.

ResNext의 detector head에 적용한 BoF에 대한 detector training accuracy ablation experiment이다.

S, M, IT, GA, OA를 사용할 때 AP 점수가 42.4%로 가장 높은 것을 알 수 있다.

detector head에 적용한 bag of specials에 대한 detector ablation experiment이다.

CSPRestNext, PANet, SPP, SAM을 종합했을 때 성능이 가장 높다.

다양한 backbone 모델의 detector trainging accuracy를 확인한 결과이다. CSPDarknet의 detection accuracy가 가장 높다.

classification accuracy가 가장 높다고 해서 detection accuracy가 가장 높은 것은 아니었다.

mini-batch 크기를 다르게 한 실험이다.

minibatch가 4일 때와 8일 때 AP 점수의 차이가 크지 않다. BoF와 BoS를 도입한 후에는 비싼 GPU로 모델을 학습시키는 것이 의미가 없음을 뜻한다. 따라서, 평범한 GPU만으로도 YOLOv4를 학습시킬 수 있게 되었다.

YOLOv4와 다른 object detection 모델들의 성능을 비교한 결과인데, YOLOv4의 속도가 압도적으로 빠른 것을 볼 수 있다. 성능이 더 좋은 모델과 성능은 AP가 5 정도 차이가 난다.

평범한 GPU에서 학습하기 위해 많은 feature을 검증했고,
classifier와 detector의 성능을 높이기 위해 BoF, BoS를 선택하여 적용하였다.

Reference

https://medium.com/@parkie0517/yolov4-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-optimal-speed-and-accuracy-of-object-detection-735c9b5e9671

https://neverabandon.tistory.com/22

profile
잉공지능

0개의 댓글