DeepLearning

YOLOv4: Optimal Speed and Accuracy of Object Detection

견오수 2023. 3. 24. 13:03
728x90

 

 

Paper : https://arxiv.org/abs/2004.10934

 

YOLOv4 : Optimal Speed and Accuracy of Object Detection 논문 리뷰입니다.

 

1. Introduction


대부분의 CNN 기반 Object detection기술은 컴퓨팅 파워가 높은 시스템에서만 사용할 수 있다. 예를 들어 빈 주차 공간은 찾는 모델은 느리고 정확도가 높지만 자동차 충돌을 경고하는 모델은 빠르고 부정확하다. 실제로 좋은 성능을 가진 모델은 실시간으로 돌아갈 수 없거나 멀티 GPU를 사용해야한다.저자는 컴퓨팅 파워가 높지 않은 환경에서도 1-GPU를 가지고 활용할 수 있도록 하는게 목표이다.

 

YOLOv4를 사용하면 누구나 기존의 GPU를 가지고 figure1 결과를 얻을 수 있다.

 

  • 논문에서 제시한 3가지 요약은 다음과 같다.
  1. 효율적이고 강력한 object detection model을 개발했다. 이 모델은 단 한 개의 1080 Ti나 2080 Ti로도 매우 빠르고 정확한 object detector 학습이 가능하게 한다.
  2. 모델이 훈련하는 동안에 object detection의 BoF와 BoS 방법의 영향을 증명한다.
  3. 최신기술을 수정하여 single GPU에서 CBN, PAN, SAM을 포함하여 학습하기에 더 효율적이고 적합하게 만든다.

 

2. Related work


 

2.1 Object detection models


최신 detector는 일반적으로 ImageNet에서 pre-trained된 backbone 과 object의 class와 bounding boxes를 예측하는 head 두 부분으로 구성된다. 그리고 detector가 GPU 혹은 CPU에서 동작하는지에 따라 사용하는 backbone을 구분할 수 있다.

 


2.1.1 GPU 플랫폼에서 실행되는 backbone

  • VGG16 : 3x3 conv filter만을 사용하여 네트워크의 깊이를 크게 늘린 모델
  • ResNet-50 : Residual Block을 통해 네트워크의 층 수를 획기적으로 늘린 모델
  • SpineNet : object detection에 보다 적합한 backbone network를 설계하기 위해 NAS를 활용하여 localization 및 multi-scale feature에 유리하도록 설계된 scale-permuted 모델
  • EfficientNet-B0/B7 : width, depth, resolution라는 3가지 scaling factor를 모두 고려하는 compound scaling을 AutoML을 통해 적은 연산량과 높은 정확도를 가지도록 설계된 모델
  • CSPResNeXt50 : ResNext-50 기반의 layer의 feature map을 분할 후 Cross-Stage Hierarchy 방법을 통해 결합하여 연산량을 획기적으로 낮춘 모델
  • CSPDarknet53: DenseNet 기반의 layer의 feature map을 분할 후 Cross-Stage Hierarchy 방법을 통해 결합하여 연산량을 획기적으로 낮춘 모델

2.1.2 CPU 플랫폼에서 실행되는 backbone

  • SqueezeNet : Fire module의 squeeze layer, expand layer를 통해 1x1 conv filter를 적절하게 사용하여 정확도는 유지하면서 네트워크의 크기를 효과적으로 줄인 모델
  • MobileNet : Depthwise seperable convolution과 width, resolution multiplier를 통해 네트워크의 용량 감소와 추론 속도 향상을 이뤄낸 모델
  • ShuffleNet : Pointwise convolution을 통해 연산량을 줄이고, Channel shuffle 방식을 통해 input과 output channel이 fully related하도록 하여 네트워크의 표현력을 향상시킨 모델

 

head 부분은 1-stage object detector와 2-stage object detector로 구성되며, stage 에서는 anchor-based detector와 anchor-free detector로 나눠진다.

 

2.1.3 Head - Two-stage detector(anchor-based detector)

 

  • Fast R-CNN : 단일 이미지를 CNN에 입력하여 RoI(Region of Interest)를 얻은 후 RoI pooling을 통해 고정된 크기의 feature vector를 fc layer에 전달하여 R-CNN에 비해 학습 및 추론 속도이 향상된 모델
  • Faster R-CNN : RPN(Region Proposal Network)을 추가하여 모델의 동작 과정에서 발생하는 병목 현상을 최소화하여 Fast R-CNN에 비해 학습 및 추론 속도, 정확도가 향상된 모델
  • R-FCN : RoI끼리 연산을 공유하며 객체의 위치 정보를 포함하는 Position sensitive score map & RoI pooling을 도입하여 Translation invariance dilemma 문제를 해결한 모델
  • Mask R-CNN : RoI pooling을 통해 얻은 feature와 RoI가 어긋나는 misalignment를 해결하기 위해 RoI Align 방법을 도입한 Instance Segmentation 모델
  • Libra R-CNN : IoU-based sampling, Balanced Feature Pyramid, Balanced L1 loss를 도입하여 객체 탐지 모델 학습 시 발생하는 imbalance 문제를 완화한 모델

 

2.1.4 Head - Two-stage detector(anchor-free detector)

 

  • RepPoints: deformable convolution을 활용하여 객체의 둘레에 점을 찍어 얻은 reppoints를 기반으로 anchor 없이 객체 탐지를 수행하는 모델

 

2.1.5 Head - One-stage detector(anchor-based detector)

 

  • YOLO : 하나의 통합된 네트워크를 기반으로 classification과 localization을 동시에 수행하여 빠른 추론 속도를 보인 모델
  • SSD(Single Shot multibox Detector) : multi-scale feature map을 활용하였으며, 다양한 scale과 aspect ratio를 가진 default box를 통해 높은 정확도와 빠른 추론 속도를 보인 모델
  • RetinaNet : Focal Loss를 도입하여 object detection task에서 발생하는 class imbalance 문제를 완화한 모델
  • YOLO v3  : Darkent-53을 backbone network로 사용하며 multi-scale feature map을 사용하여 빠른 추론 속도를 보인 모델

2.1.6 Head - One-stage detector(anchor-free detector)

 

  • CornerNet : hourglass의 출력 결과를 두 개의 모듈을 입력하여 얻은 두 쌍의 keypoint를 사용하여 bbox를 예측하는 모델
  • CenterNet : Center pooling과 Cascade corner pooling을 통해 세 쌍의 keypoint를 사용하여 CornerNet의 단점을 개선한 모델
  • MatrixNet : 객체와 더불어 객체의 size와 aspect ratio에 대한 정보를 네트워크에 포함하여 keypoint를 예측하는 모델
  • FCOS : anchor를 사용하지 않고 중심점으로부터 bbox 경계까지의 거리를 예측하며, center-ness를 통해 중심점 거리를 normalize하여 low quality box를 제거하는 모델

 

최근에 개발된 Object Detector는 backbone과 head사이에 몇개의 layer를 삽입하는 경우가 있는데 이 layer는 여러 단계의 feature map을 수집을 하며 neck이라고 부른다. 다양한 크기의 feature map을 수집하기 위해 block을 추가하거나, bottom-up path와 top-down path를 집계하는 방법을 사용한다.

 

 

2.1.7 Neck - Additional blocks

 

  • SPP(Spatial Pyramid Pooling) : conv layer의 마지막 feature map을 고정된 크기의 grid로 분할한 후 평균을 구해 고정된 크기의 representation을 얻음
  • ASPP(Astrous Spatial Pyramid Pooling) : Spatial Pyramid Pooling 구조에 multi-scale 특징을 보다 잘 포착하기 위해 확장 계수를 추가한 Astrous convolution가 더해진 구조
  • RFB(Receptive Field Block) : 경량화된 CNN 모델에서 학습된 feature를 강조하여, 빠른 추론 속도와 더불어 향상된 정확도에 기여한 구조
  • SAM(Self-Attention Module) : conv feature을 refine시켜 상대적으로 중요한 값을 강조하여 매우 적은 연산량 증가로 유의미한 정확도 성능 향상을 이뤄낸 attention module로, BAM, CBAM 등이 있음

 

2.1.8 Neck - Path-aggregation blocks

 

  • FPN(Feature Pyramid Network) : low-level feature map과 high-level feature map의 특징을 top-down, bottom-up, lateral connection을 통해 유의미하게 활용하여 객체 탐지 성능 향상에 기여한 네트워크
  • PAN(Path Augmented Network)[ : Bottom-up Path Augmentation을 통해 low-level feature의 정보를 high-level feature에 효과적으로 전달함으로써 객체 탐지 시 localization 성능을 향상시킨 네트워크
  • NAS-FPN(Neural Architecture Search-FPN)  : NAS를 통해 효율적인 Feature Pyramid Network 탐색하여 얻은 최적의 FPN 구조
  • Fully-connected FPN : 서로 다른 level의 feature map 간의 정보를 완전 연결(fully connect)하여 통합하는 방식의 Feature Pyramid
  • BiFPN : 같은 scale의 feature map에 edge를 추가하여 더 많은 feature들이 융합할 수 있도록 구성한 FPN 구조
  • ASFF(Adaptively Spatial Feature Fusion) : Feature Pyramid에서 다른 level의 feature과 정보 통합 시 adaptive하게 fuse해줌으로써 feature map 간 발생하는 충돌을 방지하는 Feature Pyramid
  • SFAM(Scale-wise Feature Aggregation Module) : multi-scale, multi-level feature map을 scale-level feature concatenation과 channel-wise attention을 통해 집계하여 multi-level feature pyramid를 구성하는 네트워크

 

위의 모델 외에도 새로운 backbone(DetNet, DetNAS) 또는 새로운 전체 모델(SpineNet, HitDetector)을 직접 구축하는데 중점을 두는 연구도 있다

 

 

2.1.9 Directly building new backbone

 

  • DetNet : dilated convolution이 추가된 bottleneck 을 적용함으로써 receptive field의 크기를 늘리고, spatial resolution을 보존함으로써 Localizatino에 유리한 feature를 보존한 backbone 모델
  • DetNAS : 객체 탐지 task를 위해 NAS와 유전 알고리즘을 통해 설계된 최적의 backbone 모델

 

2.1.10 New whole model for object detection

 

 

2.2 Bag of freebis

 

오프라인 환경에서 훈련되는 모델들을 훈련하는 방법과 훈련 비용만 증가시켜 정확도를 높이는 방법을 Bag of freebis라 부르며 데이터 증강 기법(Data Augmentation)이다. 데이터 증강 기법의 목적은 input image의 가변성을 증가시키고 설계된 모델이 다양한 이미지에 대해 높은 견고성을 갖게하는 것이다. 기법은 다음과 같다.

 

 

2.2.1 Pixel-wise adjustment

 

픽셀 단위로 정보를 변경시키는 방법이며, data augmentation 후에 변경된 영역의 원본 픽셀 정보가 보존된다는 특징이 있으며, photometric distortiongeometric distortion 방법이 있다.

 

2.2.1.1 photometric distortions

 

  • brightness : 이미지의 밝기 조절
  • contrast : 이미지의 대비 조절
  • hue : 이미지의 색조 조절
  • saturation : 이미지의 채도 조절
  • noise of an image : 이미지에 노이즈 추가

 

2.2.1.2 geometric distortions

 

  • random scaling : 이미지 랜덤하게 크기 변경
  • cropping : 이미지 일부분 자르기
  • flipping : 이미지 뒤집기
  • rotating : 이미지 회전시키기

 

2.2.2 Simulating object occlusion

 

Simulating object occlusion object가 서로 겹치는 상황을 가정하고, 이러한 상황에 모델이 보다 잘 대처하게끔 하기 위해 사용하는 방법이다. 이를 위해 이미지의 특정 영역을 0으로 채우거나, feature map 단계에서 이러한 방법을 수행하는 방법이 있다. 이 방법은 image classification 과 object detection에 좋은 결과를 얻었다고 했다.

 

2.2.2.1. Image level

 

  • Random erase : 하나의 물체가 다른 물체에 의해 부분적으로 가려져 보이지 않는 occlusion 문제를 해결하기 위해 이미지의 일부분을 랜덤한 값으로 채워 regularzation 효과와 모델의 강건함을 향샹시킨 기법
  • CutOut : occlusion 문제를 해결하기 위해 이미지의 일부분을 0으로 채우는 기법
  • Hide-and-seek : 이미지의 패치를 랜덤하게 숨김으로써 네트워크가 가려지지 않은 객체의 일부분에 대해 학습하여 모델의 분류 성능을 향상 시키는 방법
  • Grid mask : 고정된 크기의 grid로 이미지를 가려 이미지의 일부분을 제거하는 방법으로 인해 객체의 특징이 제대로 학습되지 못하는 다점을 보완한 기법

 

2.2.2.2 Feature map level

 

  • DropOut : 네트워크에서 무작위로 일부 뉴런을 학습에서 배제하여 reqularization 효과를 주는 방법
  • DropConnect : 네트워크에서 뉴런 사이의 connection을 학습에서 배제하여 모델의 표현력을 살리면서 regularization 효과를 주는 방법
  • DropBlock : feature map 내에서 연속하는 영역의 activation을 0으로 만들어 네트워크에 regularization 효과를 주는 방법

 

2.2.2.3 Using multiple images

 

  • MixUp  : 두 데이터의 이미지와 label을 일정 비율로 섞어 새로운 데이터를 생성하여 네트워크의 일반화 능력을 향상시키는 기법
  • CutMix : 이미지 내 특정 패치 영역에 label이 다른 학습 이미지를 잘라 붙여넣어 학습 픽셀을 효율적으로 사용하며 regularization 효과를 휴지하는 기법

 

2.2.2.4 Style transfer GAN

 

  • Stylized-ImageNet(SIN) : 이미지 분류 모델이 가지는 texture bias를 해결하기 위해 style transfer를 통해 이미지의 shape은 유지하면서 texture만 변형시킨 이미지

 

2.2.3 semantic distribution bias

 

학습 데이터셋 자체에 내재하는 semantic distribution bias를 해결하는 연구가 있다.

 

Class Imbalance : object Detection 시에는 발생하는 positive/negative sample 사이의 심각한 class imbalance 문제가 발생합니다. 이를 해결하기 위해 two-stage와 one-stage detector는 서로 다른 해결책을 고안한다.

 

1. two-stage 해결책

 

  • Hard negative example mining : 모델이 잘못 판단한 false positive sample을 학습 과정에 추가하여 재학습함으로써 모델을 강건하게 만들며, false positive라고 판단하는 오류를 감소시키는 방법
  • OHEM(Online Hard Example Mining): 모든 RoI를 forward pass한 후 loss를 계산하여 높은 loss를 가지는 RoI에 대해서만 backward pass를 수행하여 모델의 학습 속도 개선과 성능 향상을 이뤄낸 bootstrapping 방법

2. one-stage detector 해결책

 

Focal loss : class imbalance 문제를 해결하기 위해 easy negative를 down-weight하여 hard negative sample에 집중하여 학습시키는 loss function 방법

 

One-hot hard representation

 

또 다른 문제는 서로 다른 category 간의 어느 정도 관계를 가지는지를 one-hot hard representation 방식을 통해 표현하기 어렵다는 문제가 있다. 이는 주로 labeling 시 발생하게 된다.

 

  • Label smoothing : label을 0 또는 1 이 아니라 smooth하게 부여함으로써 모델의 regularization 및 일반화 능력을 향상시키며 recalibration에 도움을 주는 방법
  • Label refinement network :  서로 다른 해상도에 대하여 coarse한 label을 예측한 후 순차적으로 더 세밀한 label을 예측하도록 구성된 모델

 

2.2.4 objective function of Bounding Box (BBox) regression

 

Anchor-based method :기존의 object dectection 기법은 Mean Square Error (MSE)를 사용하여 bounding box의 좌표값을 예측했다. offset을 사용함. 

 

IoU-based method : MSE를 통해 bounding box의 좌표값을 직접 예측하는 방법은 각각의 좌표를 독립된 변수로 고려하는 셈입니다. 하지만 이로 인해 객체의 온전한 상태를 간과하게 된다. 이러한 문제를 해결하기 위해 IoU 기반의 loss function이 등장한다. predicted BBox area and ground truth BBox area 범위를 고여한다. IoU는 scale invariant하기 때문에 기존의 L1, L2 loss와 같이 loss가 scale에 비례하는 문제가 발생하지 않는다.

 

  • GIoU(Generalized IoU) : 겹치는 객체 사이의 IoU를 기반으로 scale invariant한 속성을 유지하면서 두 객체 사이의 거리까지 고려한 loss function
  • DIoU(Distance IoU) : GIoU loss에 두 객체 사이의 중심점 거리에 해당하는 penalty term을 추가하여 수렴 속도를 향상시킨 loss function
  • CIoU(Complete IoU) : DIoU loss에 두 객체 사이의 aspect ratio를 고려하는 penalty term을 추가하여 객체가 겹치지 않은 경우 더 빠른 수렴을 가능하도록 한 loss function

2.3 Bag of specials


저자는 추론시 cost 비용을 약간 증가시킴으로써 정확도를 크게 향상 시킬 수 있는 plugin modules 과 post-processing method를 Bag of specials이라고 부른다.

 

plugin modules기법은 모델에서 특정 속성을 강조하기 위해 receptive field를 늘리거나, attention 매커니즘을 도입하거나 혹은 feature를 통합하는 능력을 향상시키는 방법이다. post-processing method는 모델 예측 결과를 선별하는 방법이다.

 

2.3.1 Enhance receptive field

 

Enhance receptive field : backbone 네트워크 feature map에 대한 receptive field를 키우는 방법이다.

 

1. SPP

 

  • Spatial Pyramid Matching (SPM)에서 유래함.
  • SPM의 원래 방법은 feature map을 여러개의 d x d 크기(d={1, 2, 3, ... })의 동등한 block으로 분할한 후, spatial pyramid를 형성하여 bag-of-word 연산으로 features를 추출함.
  • SPM을 CNN에 통합하고 bag-of-word 연산 대신 max-pooling 연산을 이용함.
  • 1차원의 feature vector를 출력하므로, Fully Convolutional Network (FCN)에 적용 불가함.
  • 위와 같은 단점 해결하기 위해 YOLOv3 [63]에서는 k x k(k={1, 5, 9, 13}) kernel size와 stride=1를 가진 max-pooling 출력을 concatenation하여 SPP module을 개선함.
  • • 위와 같은 설계 하에, 비교적 큰 k x k max-pooling으로 backbone feature의 receptive field를 효과적으로 증가시킬 수 있음.
  • SPP module의 개선된 버전을 추가함으로써, YOLOv3-608은 MS COCO object detection task에서 0.5%의 추가적인 계산 비용으로 AP_50을 2.7% 향상시킴.

2. ASPP

 

  • ASPP moudule과 개선된 SPP module 사이의 연산 시 차이점은 주로 원래 k x k 크기의 kernel size에서 비롯됨.
  • 여러개의 3 x 3 kernel size에 대한 max-pooling의 stride는 1과 같고, dilated ratio는 k와 같으며, dilated convolution 연산 시 stride는 1과 같음.

3. RFB

 

  • k x k kernel의 여러개 dilated convolutions을 사용하며, dilated ratio는 k와 같으며, stride는 1과 같으므로 ASPP보다 포괄적인 spatial coverage를 얻을 수 있음.
  • MS COCO에 대해 SSD의 AP_50을 5.7% 증가시키는데, 단지 7%의 추가적인 inference 시간만 소요됨.

 

2.3.2 Attention module

 

Attention module : object detection model에 적용하는 방법은 channel-wise, point-wise로 나눠지고 이는 각각 Squeeze-and-Excitation(SE) 및 Spatial Attention Module(SAM)이다.

 

1. Squeeze-and-Excitation (SE)

 

  • 대표적인 channel-wise attention model
  • 입력된 feature map에 대하여 Global Average Pooling 수행 후 fc layer에 입력하여 channel별 중요도를 파악한 후, 이를 원본 feature map에 곱해줘 channel별 중요도를 재보정하는 모듈
  • ImageNet을 이용한 image classification task에서, 계산 비용을 2%만 늘리는 노력으로도 ResNet50의 top-1 accuracy 성능을 1% 향상시킬 수 있지만, 일반적으로 GPU 상에서 inference 시간이 약 10% 증가함.
  • 따라서, 모바일 장치에서 사용하는 것이 더 적합함.

 

2. Spatial Attention Module(SAM)

 

  • 대표적인 point-wise attention model
  • conv feature을 refine시켜 상대적으로 중요한 값을 강조하여 매우 적은 연산량 증가로 유의미한 정확도 성능 향상을 이뤄낸 attention module로, BAM, CBAM 등이 있음
  • 0.1%의 추가적인 계산만으로도, ImageNet을 이용한 image classification task에서 ResNet50-SE의 top-1 accuracy 성능을 0.5% 향상시킬 수 있음.
  • 무엇보다도 GPU 상에서 inference 속도에 영향을 주지 않음.

2.3.3 Feature integration

 

Feature integration : low-level의 물리적인 feature를 high-level의 semantic feature로 통합하기 위해 skip connection [51] 또는 hyper-column을 사용했다. multi-scale prediction method와 같은 FPN이 대중화 되면서 feature pyramid를 통합하는 많은 경량화 모듈이 다음과 같이 제안되었다.

 

  • SFAM : multi-scale의 concatenated feature maps 상에서 channel-wise level의 re-weighting을 수행하기 위해 SE module을 사용함.
  • ASFF : point-wise level의 re-weighting을 위해 softmax를 사용한 후 서로 다른 scale들의 feature map들을 추가함.
  • BiFPN : scale-wise level의 re-weighting을 수행한 후 서로 다른 scale들의 feature map들을 추가하기 위해 multi-input의 weighted residual connections이 제안됨.

 

 

2.3.4 activation function

 

좋은 activation function은 activation function은 gradient를 효율적으로 전파하는 동시에, 너무 많은 계산 비용을 야기하면 안됨.

 

  • ReLU : 전통적인 tanh 및 sigmoid activation function에서 흔히 발생하는 gradient vanish 문제를 상당부분 해결함.
  • ReLU 이후 gradient vanish 문제를 해결 하기 위해 다음과 같은 기법 제안됨.
  • LReLU 및 PReLU: ReLU의 출력이 0보다 작을 경우 gradient가 0이 되는 문제를 해결하고자 함.
  • LReLU(Leaky ReLU) : dying ReLU 문제를 해결하기 위해 기존 ReLU 함수에서 음수값에 대하여 gradient가 0이 되지 않도록 작은 값(default=0.01)을 곱해준 activation function
  • PReLU(Parametric ReLU) : 기존 ReLU 함수에서 음수값의 계수를 학습 가능한 파라미터로 지정한 activation function
  • ReLU6, hard-Swish: 특히, quantization networks를 고려하여 고안
  • ReLU6  : 기존 ReLU 함수의 최대값을 6으로 지정하여 효율적인 최적화가 가능한 activation function
  • hard-Swish : 임베디드 기기에서는 Swish 함수에서 sigmoid에 대한 연산량이 높기 때문에 이러한 문제를 해결하기 위해 적용한 activation function
  • SELU: neural network를 self-normalizing하기 위한 목적으로 제안했으며, gradient exploding, vanishing 문제를 방지함.
  • Swish와 Mish는 모두 연속적으로 미분 가능한 activation function
  • Swish : Sigmoid 함수에 입력값을 곱해준 형태로, 깊은 layer를 학습시킬 때 좋은 성능을 보이는 activation function
  • Mish : upper bound가 없어 캡핑으로 인한 포화가 발생하지 않으며, 약간의 음수를 허용하여 gradient가 잘 흐르도록 설계된 activation function

 

2.3.5 Post-processing method

 

Post-processing method는 deep learning 기반 object detection 시 일반적으로 사용되는 post-processing 기법은 NMS(Non-Maximum Suppression)이다. 동일한 object를 잘못 예측한 BBoxes를 filtering하고 response가 높은 후보 BBoxes만 유지하는데 사용하며, NMS가 개선을 시도하는 방식은 objective function을 최적화하는 방법과 일치함.

 

1. R-CNN에서 사용한 NMS 방법

 

  • 원래 제안된 NMS의 경우 context information를 고려하지 않음
  • R-CNN에서는 classification confidence score를 reference로 추가하고 confidence score의 순서에 따라 높은 score에서 낮은 score 순으로 greedy NMS를 수행

2. R-CNN 이후 방법

 

  • Greedy NMS : 높은 confidence score를 가지는 bounding box를 기준으로, 임계치 이상의 IoU 값을 가지는 bounding box를 제거하는 가장 일반적인 NMS 방법
  • Soft NMS : confidence score가 높은 bounding box와 임계치 이상의 IoU 값을 가지는 bounding box에 대해 confidence score를 decay시켜 탐지 성능 하락을 방지하는 NMS 방법
  • DIoU NMS : 기존의 NMS 임계치에 DIoU penalty term을 추가하여 겹친 객체에 대한 탐지 성능을 향상시킨 NMS 방법

 

위의 post-processing 방법들은 모두 capture된 image feature를 직접적으로 참고하고 있지 않기 때문에, 이후의 anchor-free 기법의 개발에서는 post-processing이 더 이상 필요하지 않음.

 


 

3. Methodology


BFLOP 보다는 병렬 계산을 위해 생산 시스템 및 최적화 관점에서 빠르게 동작하는 neural network를 개발하는 것이 목표이며, 실시간 neural network을 위한 2개의 options을 제시했다.

 

  • GPU의 경우 convolutional layers 내 group의 수가 작은(1-8) CSPResNeXt50 / CSPDarknet53 등을 이용함.
  • VPU의 경우 grouped-convolution은 사용하지만, Squeeze-and-excitement (SE) blocks은 사용하지 않음. 특히 EfficientNet-lite, MixNet, GhostNet, MobileNetV3 등의 모델들을 포함함.

 

3.1 Selection of architecture


network의 입력 해상도, convolutional layer의 개수, parameter 개수(filter size^2 * filters * channel / groups), layer의 출력 개수(filters) 가운데서 최적의 balance를 발견하는 것이 목적이다.

 

저자는 본 논문의 연구 결과에 따르면 ILSVRC2012 (ImageNet) 데이터셋을 이용한 object classification에서는 CSPResNext50이 CSPDarknet53보다 우수한 성능을 보였지만, MS COCO 데이터셋을 이용한 object detection에서는 CSPDarknet53이 CSPResNext50보다 우수한 성능을 보였다.

 

receptive field를 늘릴 수 있는 additional blocks과 서로 다른 detector levels을 위한 서로 다른 backbone levels로부터 parameter aggregation을 위한 최상의 기법을 선택하는 것이다. 예를 들어 FPN, PAN, ASFF, BiFPN

 

classification을 위한 reference model이 detector에도 항상 최적은 아니며, classification과 달리 detector에는 아래와 같은 내용들이 필요하다.

 

  • 더 큰 input network size(해상도) - 작은 크기를 갖는 다수 objects들의 검출을 위해 필요
  • 더 많은 layers 수: 증가된 입력 network의 크기를 cover할 수 있는 더 높은 receptive field가 필요
  • 더 많은 paparameters량: 한장의 이미지에서 서로 다른 크기를 갖는 다수의 objects들을 검출하기 위해, 모델은 더 많은 용량이 필요

receptive field 크기가 더 크며(with a larger number of convolutional layers 3 × 3) parameters 개수가 더 많은 model을 backbone으로 선택해야 한다고 가정할 수 있다.

 

  • CSPResNext50 : 단지 16개의 3 x 3 convolutional layers와 425 x 425 크기의 receptive field와 20.6 M의 parameters를 가짐
  • CSPDarknet53 : 29개의 3 x 3 convolutional layers와 725 x 725 크기의 receptive field와 27.6 M의 parameters를 가짐
  • 위와 같은 이론적 근거는 수많은 실험을 통해 CSPDarknet53 neural network가 detector를 위한 2개의 backbone 중에 최적의 model임을 보여줌

크기가 다른 receptive field의 영향은 다음과 같다.

  • object의 크기가 커지면 - 전체 object를 보다 많이 볼 수 있음
  • network의 크기가 커지면 - object 주변의 context를 보다 많이 볼 수 있음
  • network의 크기가 초과되면 - image point와 최종 activation 사이의 연결 개수가 증가함

 

저자는 CSPDarknet53에 SPP block을 추가했는데, receptive field를 상당히 늘릴 수 있고 context features를 분리할 수 있으며 network의 동작 속도를 거의 줄이지 않는다. 서로 다른 detector levels을 위한 서로 다른 backbone levels로부터 parameter를 aggregation하는 기법으로 PANet을 이용했다.(YOLOv3에서는 FPN을 이용)

 

최종적으로 아래와 같은 architecture 를 사용한다.

  • backbone : CSPDarknet53
  • neck : SPP(addtional blocks), PANet(path-aggregation blocks)
  • head : YOLOv3(anchor-based)

저자는 Cross-GPU Batch Normalization(CGBN 또는 SyncBN) 같은 고가의 특수 장치를 사용하지 않고 누구나 사용가능한 GTX 1080Ti 또는 RTX 2080Ti와 같은 그래픽 카드에서도 결과를 재현할 수 있다고 한다.

 


3.2 Selection of BoF and BoS

 


object detection 훈련을 개선하기 위래 CNN은 보통 아래와 같은 기법을 사용한다.

 

  • Activations : ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish
  • Bounding box regression loss : MSE, IoU, GIoU, CIoU, DIoU
  • Data augmentation : CutOut, MixUp, CutMix
  • Regularization method : DropOut, DropPath, Spatial DropOut, DropBlock
  • Normalization of the network activations by their mean and variance : Batch Normalization (BN), Cross-GPU Batch Normalization (CGBN or SyncBN), Filter Response Normalization (FRN), Cross-Iteration Batch Normalization (CBN)
  • Skip-connections : Residual connections, Weighted residual connections, Multi-input weighted residual connections, Cross stage partial connections (CSP)

activation function 훈련의 경우 PReLU와 SELU가 훈련하기 더 어렵고 ReLU6는 quantization network용으로 설계되었기 때문에 activation functions 후보에서 제외가 됨.

 

  • Activations : ReLU, leaky-ReLU,Swish, Mish parametric-ReLU, ReLU6, SELU

 

DropBlock의 저자들이 YOLOv4를 이용하여 다른 방법들과 비교했을 때 우수한 성능을 보인다는 것을 입증했으므로, DropBlock을 주저없이 적용했다.

 

  • Regularization method : DropBlock, DropOut, DropPath, Spatial DropOut

normalization 방법은 하나의 GPU만을 사용하는 훈련 전략에 집중하기 때문에 syncBN은 고려하지 않는다.

 

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

 

 


3.3 Additional improvements

 


제안한 detector를 하나의 GPU를 이용한 training 시 보다 적합하게 만들기 위해, 아래와 같이 추가적인 설계 및 개선을 수행했다.

 

  • 새로운 data augmentation 방법인 Mosaic, Self-Adversarial Training (SAT)를 소개함
  • genetic algorithms(유전자 알고리즘)을 적용하여 hyper-parameters 선택
  • 효율적인 training과 detection에 적합하도록 기존의 기법들을 detector에 맞게 수정함 → modified SAM, modified PAN, Cross mini-Batch Normalization (CmBN)

 

1. Mosaic

 

  • CutMix는 단지 2개의 입력 이미지들만 mix하는데 반해, Mosaic은 4개의 training 이미지들을 1개로 mix.
  • 이를 통해 normal한 context 외부의 object들도 detection 할 수 있음
  • 추가로, batch normalization은 각 layer 상에서 서로 다른 4개의 이미지들에 대한 activation 통계(statistic)를 계산 가능
  • 따라서, 큰 크기의 mini-batch에 대한 필요성을 상당히 줄일 수 있음

 

 

2. SAT(Self-Adversarial Training)

 

  • 2단계의 forward 및 backward 단계로 동작함.
  • 1단계 : neural network는 network의 weight 대신에 원본 이미지를 변경 , 이런 식으로 neural network는 자체적으로 adversarial attack을 수행하여, 이미지에 원하는 object가 없다는 속임수를 만들도록 원본 이미지를 변경함.
  • 2단계 : neural network은 변경된 이미지에서 정상적인 방식으로 object를 detection하도록 훈련됨.

 

3. Cross mini-Batch Normalization (CmBN)

 

  • CBN의 변경된 version으로서, 단일 batch 내에서 mini-batches 사이에 대한 통계를 수집함.

 

4. modify SAM, modified PAN

 

  • modify SAM : SAM을 spatial-wise attention에서 point-wise attention으로 변경

 

  • modified PAN : PAN의 shortcut connection을 concatenation으로 교체

 

 


3.4 YOLOv4


이 섹션에서는 YOLOv4의 세부 사항을 자세히 설명한다.

 

YOLOv4 consists of:

  • Backbone : CSPDarknet53
  • Neck : SPP , PAN
  • Head : YOLOv3

YOLO v4 uses:

 

1. Bag of Freebies (BoF) for backbone

  • data augmentation : CutMix, Mosaic
  • regularization : DropBlock
  • imbalance sampling : Class label smoothing

 

2. Bag of Freebies (BoF) for detector

  • regularization : DropBlock
  • data augmentation : Mosaic, Self-Adversarial Training
  • object function : CIoU-loss
  • hyper-parameters optumization : genetic algorithms
  • learning rate scheduler : Cosine annealing scheduler
  • others : Random training shapes, Eliminate grid sensitivity, Using multiple anchors for a single ground truth

 

3. Bag of Specials (BoS) for backbone

 

  • activation : Mish
  • network : CSP, MiWRC

 

4. Bag of Specials (BoS) for detector

 

  • activation : Mish
  • receptive field enhancement : SPP
  • attention : modified SAM
  • feature integration : modified PAM
  • post- processing : DIoU NMS

4. Experiments


다음과 같이 2가지 경우로 실험을 진행한다.

 

  • image classification: ImageNet(ILSVRC 2012 val) 데이터셋을 이용하여, 서로 다른 training 개선 기법들이 classifier의 정확도에 주는 영향에 대해 테스트
  • object detection: MS COCO (test-dev 2017) 데이터셋을 이용하여, 서로 다른 training 개선 기법들이 detector의 정확도에 주는 영향에 대해 테스트

 


4.1. Experimental setup


1. ImageNet을 이용한 image classification 실험

 

default hyper-parameters는 다음과 같다.

  • training steps : 8,000,000
  • batch size : 128
  • mini-batch size : 32
  • polynomial decay learning rate scheduling strategy 적용, initial learning rate : 0.1
  • warm-up steps : 1000
  • momentum : 0.9
  • weight decay : 0.005

Bos 관련 실험은 다음과 같다.

  • 모두 동일한 hyper-parameter를 기본 설정으로 이용
  • LReLU, Swish, Mish 등의 activation function들이 주는 영향에 대해 비교

BoF 관련 실험은 다음과 같다.

  • 부가적으로 50 %의 training steps을 추가
  • MixUp, CutMix, Mosaic, Bluring data augmentation, label smoothing regularization 기법들을 검증

모든 실험은 1080 Ti or 2080 Ti GPU를 사용했다.

 

2. MS COCO를 이용한 object detection 실험

default hyper-parameters는 다음과 같다.

  • training steps : 500,500
  • initial learning rate : 0.01 / step decay learning rate scheduling 전략 적용 / 400,000 steps과 450,000 steps에서 각각 0.1을 곱함
  • momentum : 0.9
  • weight decay : 0.0005
  • batch size : 64 / 하나의 GPU로 multi-scale training을 고려
  • mini-batch size : 8 또는 4 / 아키텍처 및 GPU 메모리 제한에 따라 결정

genetic algorithm을 이용한 hyper-parameter 탐색 실험은 다음과 같다.

  • GIoU loss를 이용하여 YOLOv3-SPP를 훈련하는데 genetic algorithm을 사용 / min-val 5k sets에 대해 300 epochs을 탐색
  • learning rate : 0.00261
  • momentum : 0.949
  • IoU threshold : 0.213 / ground truth 할당용
  • loss normalizer : 0.07

BoF 관련 실험은 다음과 같다.

  • grid sensitivity elimination , mosaic data augmentation , IoU threshold , genetic algorithm , class label smoothing , cross mini-batch normalization , self-adversarial training , cosine annealing scheduler , dynamic mini-batch size , DropBlock , Optimized Anchors , 서로 다른 종류의 IoU losses

Bos 관련 실험은 다음과 같다.

  • Mish , SPP , SAM , RFB ,BiFPN , Gaussian YOLO

모든 실험 하나의 GPU만 사용하였고, 여러 GPU를 최적화하는 syncBN과 같은 기술은 사용하지 않았다.

 


4.2. Influence of different features on Classifier training


classifier를 훈련 시 서로 다른 features들이 주는 영향에 대해서 실험하였으며, 특히 아래의 features들을 고려했다.

  • Class label smoothing
  • data augmentation : bilateral blurring, MixUp, CutMix, Mosaic
  • activations : Leaky-ReLU(by default), Swish, Mish

 

CutMix ,Mosaic , Class label smoothing, Mish activation 같은 기법이 classifier’s accuracy를 증가시켰다. 아래의 표는 backbone 모델에 따른 결과이다.

 

  • CutMix 및 Mosaic data augmentation , Class label smoothing , Mish activation 등의 features들을 적용하였을 때 정확도가 개선됨

 

 

  • CSPResNeXt-50을 이용한 실험을 통해, 결과적으로 CSPDarknet-53은 CutMix 및 Mosaic data augmentation, Class label smoothing 등을 포함함
  • 추가적으로 Mish activation을 상호 보완을 위한 option으로 사용함

 


4.3. Influence of different features on Detector training


BoF의 다양한 features들이 Detector 훈련에 주는 영향을 실험했고, 표 4와 같이 서로 다른 BoF(BoF-detector)가 detector 훈련 정확도에 주는 영향을 보기 위해 추가적인 연구를 수행했다. FPS에 영향을 주지 않으면서도 detector의 정확도를 높이는 다양한 features들에 대한 연구를 통해 BoF list를 크게 확장했다.

 

 

1. S: Eliminate grid sensitivity the equation

 

 

2. M: Mosaic data augmentation

 

  • 훈련 동안에 단일 이미지 대신 4개의 image mosaic을 사용

3. IT: IoU threshold

 

  • IoU (truth, anchor) > IoU threshold 인 경우에는 단일 ground truth에 대해 multiple anchors를 사용

4. GA: Genetic algorithms

 

  • 전체 시간 중 처음 10% 기간 동안 network 학습 시 최적의 hyperparameters 선택을 위해 genetic algorithms을 적용

5. LS: Class label smoothing

 

  • sigmoid activation을 이용하여 class label smoothing을 수행

6. CBN: CmBN

 

  • 단일 mini-batch 내에서 통계를 수집하는게 아니라, 전체 batch 내에서 통계 수집을 위해 Cross mini-Batch Normalization을 이용

7. CA: Cosine annealing scheduler

 

  • sinusoid training 동안 learning rate를 변경하는 Cosine annealing scheduler를 적용

 

8. DM: Dynamic mini-batch size

 

  • Random training shapes을 이용하여 작은 해상도를 training 하는 에는 mini-batch 크기를 자동으로 늘림

 

9. OA: Optimized Anchors

 

  • 512x512 크기의 network 해상도를 이용한 training 시 최적화된 anchors를 사용

 

10. GIoU, CIoU, DIoU, MSE

 

  • bounded된 box에 대해 regression 시 서로 다른 종류의 loss 알고리즘들을 사용

  • M(Mosaic data augmentation) , GA(Genetic algorithms) , CBN(Cross mini-Batch Normalization) , CA(Cosine annealing scheduler) 등은 포함하는 것이 성능 향상에 도움이 됨
  • S(liminate grid sensitivity the equation) , M(Mosaic data augmentation) , IT(IoU threshold) , GA(Genetic algorithms) 등을 함께 적용하고 loss를 CIoU를 사용하는 것이 성능 향상에 도움이 됨
  • OA(Optimized Anchors)를 적용하는 것이 성능 향상에 도움이 됨
  • GIoU와 CIoU loss를 적용하는 것이 성능 향상에 도움이 되며, 동일한 결과를 보임

 

 

 

  • SPP, PAN, SAM을 함께 사용한 경우 가장 우수한 성능을 보임

 


4.4. Influence of different backbones and pretrained weightings on Detector training

 


서로 다른 backbone model들이 detector의 정확도에 주는 영향을 보기 위해 더 많은 연구를 진행했고,가장 우수한 classification 정확도를 보이는 model이 detector의 정확도 관점에서도 가장 우수한 것은 아님을 발견했다.

 

 

  • 서로 다른 features들을 이용하여 훈련된 CSPResNeXt50 model이 CSPDarknet53 model보다 classification 정확도가 높지만, object detection 정확도는 CSPDarknet53 model이 더 높음
  • 이전 실험을 통해 CSPResNeXt-50의 classifier 훈련에 BoF와 Mish를 사용하면 classification 정확도가 향상되는 것을 확인했지만, 이렇게 pre-trained된 weight를 detector에 적용하면 정확도가 떨어짐
  • CSPDarknet53의 classifier 훈련에 BoF와 Mish를 사용한 경우는 classification과 pre-trained된 weight를 detector에 적용한 경우 모두에서 정확도가 향상되므로, CSPDarknet53이 CSPResNeXt50보다 detector에 적합한 backbone이라고 할 수 있음
  • 다양한 개선으로 인해 CSPDarknet53 model이 detector의 정확도를 향상시킬 수 있는 더 많은 능력이 있음을 확인함

 

4.5. Influence of different mini-batch size on Detector training


마지막으로 서로 다른 mini-batch size를 이용하여 훈련된 model들에 대한 결과를 분석했다.

 

  • CSPResNeXt50-PANet-SPP와 CSPDarknet53-PANet-SPP 모두, mini-batch size를 8에서 4로 줄이면서 BoF와 BoS training 전략을 추가한 경우나 그렇지 않은 경우 둘 다 성능에 거의 영향을 주지 않음
  • BoF와 BoS를 도입한 후 training에 더 이상 값비싼 GPU가 필요하지 않다는 것이며 즉, 누구나 기존의 GPU를 가지고 성능이 우수한 detector를 training할 수 있게 됨

 


5. Results


다른 최신의 object detectors들과의 비교 결과를 나타내고 있다.

 

  • inference 시간 검증을 위해 서로 다른 기법들은 서로 다른 아키텍처의 GPU를 이용하므로, 일반적으로 채택된 Maxwell, Pascal, Volta 아키텍처의 GPU를 사용하여 다른 최신 기법들과 비교
  • YOLOv4는 파레토 최적(Pareto optimality) 곡선에 위치하며, 속도 및 정확성 측면에서 가장 빠르고 정확한 detector이다.


6. Conclusions


  • 사용 가능한 모든 대안의 detectors들보다 빠르고(FPS) 정확한(MS COCO AP50 ... 95, AP50) 최신의 detector를 제안
  • 제안한 detector는 8~16 GB의 VRAM으로 기존의 GPU에서 training 및 사용이 가능하므로, 광범위한 적용이 가능
  • one-stage anchor-based detectors의 원래 개념의 실행 가능성을 입증
  • classifier와 detector 모두의 정확도 개선을 위해 많은 features들을 검증하여 선택
  • 이러한 features들은 향 후 연구 개발을 위한 모범 사례(best-practice)로 사용 가능

 

 

728x90