하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.
YOLOv4: Optimal Speed and Accuracy of Object Detection
1월 26th, 2021 Posted by 룬룬
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