version | 특징 |
---|---|
Yolo v1 | 하나의 이미지의 Bbox와 classification 동시에 예측하는 1 stage detector |
Yolo v2 | 빠르고 강력하고 더 좋게 3가지 측면에서 model 향상 |
Yolo v3 | multi-scale feature maps 사용 |
Yolo v4 | 최신 딥러닝 기술 사용(BOF : Bag of Freebies , BOS: Bag of Specials) |
Yolo v5 | 크기별로 모델 구성(Small, Medium, Large , XLarge) |
CNN의 정확도를 향상시키는 feature들은 많이 있지만 특정 모델과 문제 그리고 작은 데이터셋에서만 작동하였다.
이를 대규모 데이터 셋에서 사용하기 위해서는 다양한 feature 조합에 대한 결과와 실제 테스트의 정당성이 필요하다
논문에서는 다양한 feature들 중에 대부분의 모델과 데이터에 적용할 수 있는 기능들은 대표적으로 BN, residual connectivity 와 같은 기능들이 있으며, 추가적으로 아래 기능들이 범용성을 가질 수 있는 feature들 이라고 가정한다.
weighted residual connection(WRC)
cross-stage partial connection(CSP)
cross mini-batch normalization(CmBN)
self adversarial training(SAT)
mish activation
결과적으로 이러한 기능들을 결합하여 MS coco dataset에서 43.5% AP (AP_50 : 65.7%)와 실시간에 가까운 65 FPS를 달성했다고 한다.
대부분의 CNN 기반 object detector 들은 recommendation system에서만 사용할 수 있습니다.
예를 들어, 빈 주차 공간을 찾는 모델은 느리고 정확도가 높은 반면 자동차 충돌 경고를 나타내는 모델은 빠르고 부정확하다 것
real-time object detector의 정확도를 향상시키면 recommendation system 뿐만 아니라 자립적인 프로세스 관리와 인력 투입을 감소시킬 수 있다.
최신 Neural Networks 들은 높은 정확도를 가지지만, 실시간으로 작동하지 못하며 큰 mini-batch를 학습하기 위해 많은 수의 GPU가 필요하다는 단점이 존재한다.
이러한 문제를 해결하기 위해 기존의 GPU에서 실시간으로 동작하며, 하나의 GPU만으로 학습할 수 있는 object detector를 만들었다.
따라서, 논문의 주요 목적은 생산 시스템에서 빠른 속도로 동작하는 object detector 를 고안하고 BFLOP를 줄인다기 보다는 병렬 계산을 최적화 하는 것이다.
Yolo v4의 기여
효율적이고 강력한 object detection model을 개발하였다.
detector를 훈련시키는 동안 최신의 BOF , BOS 기법들이 주는 영향을 검증하였다.
single GPU training에 효과적이고 적합하도록 CBN,PAN,SAM 등을 포함한 기법을 수정하였다.
Input
Backbone
Pooling & Neck
Backbone과 Head를 연결하는 부분으로, feature map을 재구성하는 단계
Additional blocks : SPP, ASPP, RFB, SAM
Path-aggregation blocks : FPN, PAN, NAS-FPN, BiFPN, ASFF, SFAM
Head
Dense Prediction : RPN, YOLO, SSD, RetinaNet, CornerNet, CenterNet, MatrixNet, FCOS
Sparse Prediction : Faster-RCNN, R-FCN, Mask R-CNN, RepPoints
보통 object detector는 offline으로 traning되므로, 연구자들은 이러한 이점을 활용하여 inference 비용을 늘리지 않고도 정확도를 높일 수 있는 더 나은 학습 방법들을 개발하는 것을 선호한다. 이 방법을 BOF라 한다.
BOF는 다음과 같이 3가지 카테고리로 분류된다.
Data Augmentation
입력 이미지의 variability을 증가시켜 overfitting을 막고, 다른 환경의 이미지에 대해서도 높은 robust를 유지하는 것이 목적
Photometric Distortions(color transform)
Geometric Distortions
위의 augmentation은 pixel-wise 하게 조정되어, 원래 영역의 픽셀 정보는 유지된다.
이외에도 연구자들은 object occlusion 문제를 시뮬레이션 하는데 중점을 두었는데, 이는 classification과 object detection에서 좋은 성과를 보였다
object occlusion
feature map에 object occlusion을 적용한 방법들
여러 이미지를 함께 사용하여 데이터를 증가시키는 연구
위의 연구들 외에도 style transfer GAN을 활용하여 CNN이 학습한 texture bias를 효과적으로 줄였다고 한다.
Semantic Distribution Bias
위에서 제안된 다양한 접근법과 달리, 일부 BOF는 semantic distribution의 bias 문제를 해결하기 위해 사용된다.
semantic distribution bias를 다룰 때 매우 중요한 문제는 서로 다른 등급 사이에 데이터 불균형이 있다는 것이다.
hard negative mining
Focal Loss
Label smoothing
Bounding box regression
따라서, 이러한 문제를 개선하기 위해 IOU 기반의 loss를 사용하자고 제안되었다 (GIOU, DIOU, CIOU)
IOU Loss
GIOU Loss
DIOU Loss
IOU와 함께 중심점의 좌표를 활용하는 방법
GT와 bbox가 겹쳐진 영역이 동일하고, bbox의 위치만 달라졌을 때 IOU,GIOU는 위치정보를 포함하지 않기 때문에 동일하게 나타지만, DIOU는 중심점의 좌표를 고려하기에 값이 달라지는 것을 볼 수 있다.
CIOU Loss
Enhancement of receptive filed
SPP(Spatial Pyramid Pooling)
ASPP
RBF(Receptive Field Block)
Attention Module
Squeeze-and-Excitation(SE)
SAM(Spatial Attention Module)
Feature Integration
low level의 물리적인 feature를 high level의 semantic feature로 통합하기 위해 skip connection 구조 또는 hyper-columne을 사용하였다.
FPN과 같은 multi-scale 방법이 인기를 끌면서, FPN 기반의 다양한 경량 모듈이 제안되었다.
FPN
scale - wise feature aggregation module(SFAM)
adaptive spatial feature fusion(ASFF)
BiFPN
Activation function
Post processing method
object detection에서 일반적으로 사용되는 후처리 방법은 NMS이다. 이 방법은 잘못 예측한 bbox를 필터링하고 response가 높은 box만을 유지할 수 있다.
NMS가 개선하려는 방법은 목적 함수를 최적화하는 방법과 같다.
NMS
soft-nms
YOLO V4는 연산량(BFLOP)보다는 생산 시스템에서 빠른 속도와 병렬 계산을 최적화 하는 것 목표이기에 real-time 네트워크를 위한 두 가지 옵션을 제시한다.
GPU
VPU
이 실험의 첫 번째 목적은 network의 입력 해상도와, convolution layer의 개수, parameter 개수, layer output의 개수 가운데서 최적의 균형을 찾는 것이다.
두 번째 목적은 receptive field를 늘릴 수 있는 additional blocks와 다양한 level의 detector와 backbone에서 parameter 집합을 선택하는 최적의 방법을 찾는 것
e.g. ) FPN, PAN, ASFF, BiFPN
classification을 위한 reference model이 detector에도 항상 최적은 아니며, classification과 달리 detector에는 아래와 같은 내용들이 필요하다.
receptive filed의 크기가 더 크고, 더 많은 수의 parameter를 가진 모델을 bakcbone으로 선택해야 한다고 가정할 수 있다.
크기가 다른 receptive field의 영향
논문에서는 수많은 실험과 함께 CSPDarknet53 이 backbone으로서 최적의 모델임을 보여주었다.
Yolo v4는 SPP block을 CSPDarknet53에 추가하여 receptive filed를 대폭 키웠으며, 가장 중요한 context features를 분리하여 네트워크 동작 속도가 거의 저하되지 않았다고 한다.
결과적으로 YOLO v4는 CSPdarknet53을 backbone으로 SPP block을 추가했으며, neck으로는 PANet을 사용하고, detection head는 YOLO v3를 따른다
연구자들은 Cross-GPU Batch Normalization 또는 고가의 전용 장비를 사용하지 않았으며, 1080ti 또는 2080ti 등의 기존의 GPU를 통해 최신의 결과를 재현할 수 있었습니다.
CSPDarknet 53
backbone model을 개선하면서 모델의 크기가 커지게 되었고, 성능 향상을 위해서는 어느정도 경량화가 필요하다.
따라서, yolo v4 부터는 yolo v2부터 사용하던 darknet의 Cross stage partial이라는 새로운 알고리즘을 변형해서 사용하였다.
기존의 Cross Stage Partial DenseNet은 구조는 다음과 같다.
이러한 구조는 하나의 feature map을 여러 번 사용하기 때문에, 가중치를 업데이트할 때 gradient 정보가 재사용되어 계산량이 많아지는 단점이 존재한다.
forward
backward
따라서, Yolo v4에서는 계산량을 줄이기 위해서 이렇게 반복되는 gradient를 줄이는데 집중하였다.
yolo v4에서는 X0를 channel기준으로 두 부분으로 나누어서 일반적인 CSPNet과 같이 진행한다.
forward
backward
설계된 detector를 단일 GPU 훈련에 적합하도록 하기 위해 다음과 같은 추가 설계 및 개선을 수행하였다.
Augmentation
Mosaic
Self-Adversarial Training(SAT)
기존의 기법들을 수정
modified SAM
modified PAN
Cross Mini-Batch Normalization(CmBN)
Bag of Freebies (BoF) for backbone
Bag of Specials (BoS) for backbone
Bag of Freebies (BoF) for detector
Bag of Specials (BoS) for detector
모든 실험은 1080 ti 또는 2080 ti를 이용하여 훈련하였으며 하이퍼 파라미터는 다음과 같다.
BOS : 기본 설정과 동일하며, LReLU, Swish, Mish 등 activation function의 효과를 비교하였다.
BOF : 50%의 training step을 추가하였으며, MixUp, CutMix, Mosaic, Bluring 등 data augmentation과 label smoothing regularization 기법들을 검증하였다.
genetic algorithm을 이용하여 하이퍼 파라미터를 탐색하는 것 외에는 기본 설정과 동일하다.
또한, 하나의 GPU에서만 train하기 때문에, 여러개의 GPU를 이용하여 최적화하는 syncBN등의 기법은 사용하지 않았다.
BOF : IoU threshold, genetic algorithm, class label smoothing, cross mini batch normalization, self- adversarial training, cosine annealing scheduler, dynamic mini batch size, DropBlock, Optimized Anchors, different kind of IoU losses
BOS : Mish, SPP, SAM, RFB, BiFPN, Gausian YOLO
먼저, classifier 훈련 시 서로 다른 feature 들이 주는 영향에 대해서 실험하였다.
Cutmix, mosaic, label smoothing, mish와 같은 feature들을 사용하였을 때 성능이 향상됨
다양한 BOF가 detector의 정확도에 대한 영향을 실험
FPS에 영향을 주지 않으면서 정확도를 높이는 다양한 기능들을 연구하여 BOF 목록을 크게 확장하였다.
loss를 MSE로 고정시킨 후 다양한 BOF의 실험 결과
GIOU, DIOU, CIOU 에 따른 실험
OA 적용유무에 따른 실험
S, M ,IT, GA, OA를 적용하고 다양한 loss를 비교
다양한 backbone model들이 detector의 정확도에 주는 영향을 보기 위해 연구를 수행
가장 우수한 classification 정확도를 보이는 backbone model이 detector의 정확도에서 가장 우수한 것은 아님을 알 수 있다.
위에서 CSPResNeXt50 classifier train을 위해 BOF와 Mish를 사용하면 classifier 정확도가 높아지는 것을 알 수 있었는데, 이렇게 pre-trained된 weight를 detector에 적용하면 정확도가 떨어진다.
따라서, CSPDarknet53은 다양한 개선을 통해 정확도를 향상시킬 수 있는 더 큰 능력을 가지고 있다.
마지막으로, 다양한 mini-batch size로 train시킨 모델을 사용하여 얻은 결과를 비교한다.
두 모델 모두 mini-batch size에 따른 성능 차이가 미미하다.
다른 object detector와의 속도와 정확도 비교 결과 속도와 정확도 측면에서 가장 빠르고 정확한 detector임을 볼 수 있다.