논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

YOLOv4: Optimal Speed and Accuracy of Object Detection

Problem

  • 최근 제안된 대부분의 신경망 들은 실시간으로 동작하지 않을 뿐 아니라, 학습에도 많은 수의 GPU들을 요구한다.
  • 논문에서는 빠른 동작 속도를 위한 신경망 디자인과 이론적인 계산량보다는 병렬 처리 최적화를 하고자 한다.
  • 평범한 GPU를 가진 어떤 사람이라도 학습시키고 테스트해볼 수 있게 하고자 한다.

Essense

  • 1080 Ti, 2080 Ti에서 학습 할 수 있는 빠르고 정확한 새로운 모델을 제안하였다.
  • 기존 state-of-the-art 객체 검출 논문들의 Bag-of-Freebies, Bag-of-Special 방법들을 검증하였다.
  • State-of-the-art 방법들을 수정하고 하나의 GPU에서 더 효율적이도록 CBN, PAN, SAM 등을 이용하여 수정하였다.

Detail

Bag of freebies

  • 전통적인 객체 검출은 오프라인으로 학습시킨다. 때문에 연구자들은 더 나은 학습 방법을 개발하려 노력하고 이는 inference 비용은 증가시키지 않는다. 이런 방법을 "bag of freebies"라고 부르기로 하였다.
  • 아래의 방법들이 언급되었다.
    • Data augmentation : Pixel-wise adjustment, Random rectagle image/feature filling, Mix multiple image, GAN
    • Data imbalance : head negative example mining, online hard example mining, Focal loss, Label smoothing
    • Bounding Box regression function : MSE, IoU, GIoU, DIoU, CIoU loss

Bag of specials

  • 반면 inference 비용을 조금은 증가시키더라도 객체 검출 정확도를 확연히 올리는 방법을 "bag of specials"라고 부르기로 하였다.
  • 아래의 방법들이 언급되었다.
    • Enlarging receptive field : SPP, ASPP, RFB
    • Attension mechanism : SE, SAM,
    • Feature itegration : SFAM, ASFF, BiFPN
    • Activation function : LReLU, PReLU, ReLU6, hard-Swish, SELU, Swish, Mish
    • post processing : Soft NMS, DIoU NMS

Architecture

  • 여기서의 복표는 신경망 입력의 해상도, 컨볼루션 레이어 수, 파라미터 수, 출력 필터의 수의 균형을 맞추는 것이다.
  • Classification에서 최적으로 사용된 모델들은 검출 문제에서도 항상 최적은 아니다.
  • 검출기는 더 큰 해상도의 입력과, 많은 레이어수, 많은 파라미터 수를 요한다.
  • CSPResNeXt50, CSPDarknet53, Efficient B3을 비교하였을 때, CSPDarknet53이 최적의 모델로 선정할 수 있었다.
  • 또한 receptive field를 넓히기 위한 추가될 블록을 정하고자 하였다.
  • Receptive field의 크기에 따른 영향을 정리하면 아래와 같다.
    • 객체 크기만큼 클 경우 : 전체 객체를 볼 수 있음
    • 신경망 크기만큼 클 경우 : 객체 주변의 context 까지 볼 수 있음
    • 신경망 크기를 넘어설 경우 : 이미지 위치와 최종 레이어의 activation 간의 연결 수 증가
  • 여기서는 SPP 블록을 CSPDarknet53 전체에 추가하였다.
    • 이는 receptive field를 넓게하면서도 동작 속도를 줄이지 않으면서 context feature와 cause를 분리해 낸다.
  • YOLOv3의 FPN 대신, PANet을 사용하여 parameter aggregation에 사용하였다.
  • 정리하면 CSPDarknet53 백본에 SPP 블록을 추가하고, PANet의 path-aggregation neck을 사용하였고, YOLOv3의 앵커 기반 헤드를 가지는 구조를 설계하여 YOLOv4에 사용하였다.

BoF, BoS

  • 앞에서 언급한 방법들 중 PReLU와 SELU는 학습하기 어렵고, ReLU6는 quantization network에 특화된 것이라 고려하지 않았다.
  • DropBlock은 그 논문에서 다른 regularization 방법들과의 비교를 자세히 해놓았으며, 성능 또한 대부분 좋았기에 이를 선택하였다.
  • Normalization 방법으로는 GPU를 하나만 사용하였기에 syncBN은 사용할 이유가 없었다.

Additional improvements

  • CutMix의 방법을 활용하여 4개의 학습 이미지를 합한 Mosaic 방법을 사용하여 일반적인 context 이외의 이미지를 학습하게 만들었으며, BatchNorm이 4개의 다른 이미지로부터 statistics를 얻을 수 있도록 하였다.
  • 두개 forward-backward 스테이지를 갖는 Self-Adversarial Training (SAT) 방법을 적용하였다.
  • 첫번째 스테이지에서는 신경망의 가중치를 업데이트하지 않고 이미지에 객체가 없는 것처럼 adversarial attack를 적용한 뒤, 두번째 스테이지에서 이 이미지를 이용하여 실제로 학습을 시킨다.
  • CBN을 수정한 Cross mini-Batch Normalization (CmBN)을 적용하여 하나의 미니배치에서 statistics를 얻도록 하였다.
  • Spatial-wise attention을 가지는 SAM을 point-wise attention으로 수정하고 PAN의 shortcut을 concatenation으로 수정하였다.

YOLOv4

  • 정리하면 아래와 같아진다.
  • 백본은 CSPDarknet53, Neck은 SPP, PAN, Head는 YOLOv3를 사용하였다.
  • BoF for backbone : CutMix 와 Mosaic data augmenatation, DropBlock regularization, Class label smoothing
  • BoS for backbone : Mish activation, Cross-stage partial conections (CSP), Multi-input weighted residual connection (MiWRC)
  • BoF for detector : CIoU-loss, CmBN, DropBlock regularization, Mosiac data augmentation, Self-Adversarial Training, Eliminate grid sensitivity, Multiple anchors for a single ground truth, Cosine annelaing schedular, Optimal hyper parameters, Random training shapes
  • BoS for detector : Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS

Add a Comment Trackback