https://arxiv.org/pdf/2004.10934
실전! 프로젝트로 배우는 딥러닝 컴퓨터비전
YOLOv4는 최초 개발자인 Joseph Redmon이 은퇴한 후 Alexey Bochkovskiy라는 개발자가 이어받아 개발한 새로운 YOLO이다. Alexey Bochkovskiy는 이 버전의 목적 자체를 '기존 GPU에서 실시간으로 작동하며, 학습에 한 개의 기존 GPU만 필요한 CNN을 만들고자 함'이라고 깔끔하게 정했다. YOLOv3까지만 해도 모델 학습의 경우에는 고성능의 Nvidia Titan GPU를 2개 정도 갖추고 있어야 학습이 용이했고, 추론의 경우에는 임베디드 GPU 제품군에서 실행하는 경우 정확도와 속도를 모두 만족하기 어려웠기 때문에 실용적인 콘셉트의 YOLOv4 개발은 이런 점에서 상당히 바람직하다고 할 수 있다.
다음은 YOLOv4와 다른 state-of-the-art object detection을 비교한 결과이다. YOLOv4는 YOLOv3의 AP와 FPS에 비해 각각 10%, 12% 향상되었다고 한다.

저자들의 contributions을 요약하면 다음과 같다.
요약하자면, ordinary object detector는 다음과 같이 구성돼 있다.

Bag of freebies is the method that (1) receive better accuracy without increaseing the inference cost and (2) only change the training strategy or only increase the training cost.
즉, 학습 전략을 바꾸거나 학습 비용을 높이는 방법들로, 다양한 데이터 증강, regularization, 손실 함수들을 적용해 가며 가장 적합한 결과를 찾아내는 것이다.
There are some examples that meet the definition of Bag of freebies:
data augmentation
Regularization
objective function of BBox regression
Bag of specials is the method that only increase the inference cost by a small amount but can significantly improve the accuracy of object detection.
즉, 추론 비용이 조금 더 들더라도 정확도를 높이는 방법이다. 다양한 receptive field, feature integration, activatioin fuction, attention module, 정규화, post processing의 방법론을 적용한 테스트를 진행해 가장 좋은 결과가 나오는 것을 선택한다.
There are some examples that meet the definition of Bag of specials:
enlarging receptive field
attention mechanism
feature integration
post-processing
In constrast to the calssifier, the detector requires the following:
따라서 larger receptive field size, larger number of parameters를 갖고 있는 model이 backbone model로 적합하다고 가정할 수 있다. 이러한 가정을 바탕으로 다음 결과를 분석했을 때, CSPDDarkent53이 최적의 모델 조건에 가장 부합하는 것을 알 수 있다.

Receptive field size가 끼치는 영향을 이해하는 것은 중요하다. 아래는 receptive field size가 다음과 같은 size일 때 얻을 수 있는 효과들이다.
저자들은 CSPDarknet53이 큰 receptive field size를 갖도록 SPP block을 추가했다. 더불어 PANet path-aggregation neck, YOLOv3 head로 YOLOv4의 architecture를 구성했다. 각 구성 요소의 핵심 개념을 정리해 보면 아래와 같다.
YOLOv4 consists of:
Backbone: CSPDarknet43
CSP(Cross Stage Partial)
- feature map을 두 부분으로 나눠, 하나는 그대로 다음 stage로 전달하고, 다른 하나는 남은 layer를 통과
- 이후 두 경로의 출력을 결합하여 더 나은 feature map을 생성
- 네트워크의 파라미터 수를 효과적으로 줄여 메모리 사용량을 줄이는 데 도움을 줌. 특히 YOLO 같은 경량화가 중요한 모델에서 유용
Neck: SPP, PAN
SPP(Spatial Pyramid Pooling)
- 각기 다른 크기의 max pooling window를 여러 번 사용하여, feature map의 크기에 관계없이 고정된 크기의 feature representation를 생성 가능
- YOLOv4는 feature map을 깊이 차원에서 나눠 각 부분에 SPP를 적용한 후, 이들을 다시 concat 하여 최종 출력 feature map 생성
- receptive field가 증가되고(다양한 크기의 poolind window를 사용하므로), 서로 다른 scale에서 서로 다른 객체 패턴을 캡처 가능
https://wikidocs.net/163675PAN(Path Augmented Network)
- 정보가 전달되는 information flow를 축소하여 low-level feature 정보를 온전하고 손쉽게 high-level로 전달하기 위해 제안
- YOLOv4에서는 PAN의 shortcut connection을 concatenation으로 대체하였다.
Head: YOLOv3
3.4절에서 YOLOv4에 쓰인 BoF와 BoS에 대해 언급하겠다.
Introduce a new method of data augmentation Mosaic and Self-Adversarial Training(SAT)
(1) Mosaic 은 4개의 training images를 mix 하는 data augmentation 방법이다. 이렇게 하면 여러 이미지의 정보를 한 번에 학습할 수 있어서 모델이 더 다양한 학습을 학습할 수 있다.
(2) 일반적으로 배치 정규화는 미니배치 내의 각 이미지의 activation statistics(평균, 분산)를 통해 계산되지만, Mosaic에서는 하나의 이미지에 포함된 4개의 서로 다른 이미지의 activation statistics를 사용한다. 이를 통해 각 층에서 다양한 데이터에 대한 statistics가 계산되므로 큰 미니배치 크기를 필요로 하지 않게 된다.

(3) SAT 는 원본 이미지를 변형하고(1st stage), 이 변형된 이미지로부터 object를 detect(2nd stage) 하게끔 하는 방식이다.
Select optimal hyper-parameters while applying genetic algorithms
Modify SAM, PAN, and Cross mini-Batch Normalization(CmBN)
(1) 기존 배치 정규화 방식은 미니 배치 크기가 작을수록, 특정 배치에서 계산된 평균과 분산이 iteration마다 크게 달라질 수 있다. 이는 정규화가 불안정하게 이루어지게 만든다. CmBN 은 이러한 불안정성을 줄이기 위해 보다 많은 데이터에 걸쳐 값을 얻어 배치 정규화의 신뢰도를 높이는 방법이다. 먼저 CBN은 여러 배치에 걸쳐 평균과 분산을 공유하여 안정성을 얻는다. 즉 이전 4개의 배치에서 얻은 평균과 분산을 현재 batch를 normalize 하는 데에 사용한다. CmBN은 배치를 여러 미니 배치로 나눠서 그 미니 배치들 간의 평균과 분산을 공유하여 normalization을 수행하는 방식이다. 여기서 말하는 미니 배치는 미니 배치의 미니 배치 느낌이다. 즉 이미 16장씩 나뉜 미니 배치를 다시 4장씩 나누는 개념이라고 생각하면 될 듯하다.
(2) PAN은 위에서 설명했으므로 여기서는 넘어간다.
(3) SAM(Spatial Attention Module) 의 Spatial Attention은 입력 이미지의 특정 위치에 주목하는 메커니즘이다. 이 메커니즘은 입력 데이터의 spatial information(즉, 이미지의 특정 부분, pixel 집합)이 중요한 경우에 유용하다. 저자들은 이 spatial-wise attention을 point-wise attention으로 수정하였다. point-wise attention은 각 개별 포인트(pixel)에 attention 하는 방식이다. 즉, 각 point의 정보를 개별적으로 처리하여 해당 point가 모델의 decision에 미치는 영향을 조정한다.

아래의 표를 보면 CutMix, Mosaic, Class label smoothing, Mish activation를 적용했을 때 accuracy가 가장 많이 향상되는 것을 알 수 있다.


앞서 설명한 SPP, PAN, SAM을 같이 사용했을 때 성능이 가장 좋은 것을 알 수 있다.

backbone model을 바꾸어 가며 실험한 결과이다. 이 결과를 통해 먼저 classification accuracy가 높은 model이 항상 detector accuracy도 높은 건 아님을 관찰할 수 있다. 예를 들어, CSPResNeXt-50 모델은 CSPDarknet53보다 calssification accuracy가 뛰어나지만 object detection에서는 CPSDarknet53의 accuracy가 더 높게 측정되었다. 또, BoF와 Mish를 CSPResNeXt50에 적용하였을 때, classification accruacy는 증가한 반면 detector accuracy는 감소하였다. 반면 CSPDarknet53 모델에 BoF와 Mish를 적용하였을 때는, classifier와 detector의 accuracy 둘 다 증가한 것을 알 수 있다.

여러 가지 mini-batch size를 BoF/BoS의 적용 유무와 함께 나타낸 결과이다. 저자들은 이 결과를 통해, BoF와 BoS를 잘 적용한다면 training 과정에서 expensive GPUs를 사용할 필요가 없음을 주장한다.


YOLOv4가 speed와 accuracy 면에서 다른 object detectors보다 뛰어난 것을 알 수 있다.
실전! 프로젝트로 배우는 딥러닝 컴퓨터 비전을 읽던 중 직접 논문을 살펴볼 필요성을 느껴서 찾아보게 되었다.
다른 YOLO 논문에서는 이 YOLO를 위해 설계된 특정 방식을 이해하는 데에 어려움이 있었다면, 이 YOLOv4에서는 이미 공개된 많은 BoF와 BoS를 이해하는 데에 어려움이 있었다. YOLOv4의 목적 자체가 높은 성능 향상보다는 기존에 공개된 방식들을 사용하거나 수정하여 실용적인 네트워크를 만드는 것에 더 중점을 두다 보니 그런 것 같기도 하다.
논문에서 가장 흥미로웠던 방식은 Mosaic data augmentation 방법이었다. 언뜻 봤을 때는 이미지 4장을 1장으로 만들어서 주면 object가 더 작아져 학습하기 어려울 것이라고 생긱했다. 그러나 오히려 이 방식이 작은 object에 대한 sensitivity를 높여 줄 수 있고, 여러 object들이 다양한 backgroud에 등장하며 background dependency를 낮출 수 있다는 장점이 흥미로웠다.
YOLO~YOLOv4까지 논문을 찾아보며 공부를 많이 해야겠다고 느꼈다. 논문 리뷰를 할 때마다 스스로 논문을 읽어 보고, 논문 리뷰 영상이 있으면 찾아보고, 관련 자료도 찾아보고, 다시 처음부터 논문을 읽으며 벨로그 작성을 했다. 처음에는 정말 몇 번을 읽어도 이해 안 되던 말들이, 마지막에는 이 말을 하려는 거였구나 이렇게 느껴졌었다. 지식의 부족함을 많이 느꼈다. 열심히 공부해야겠다.