•
들어가기 전에 확인해 둘 개념들
WRC | Weighted Residual Connection
CSP | Cross-Stage-Partial-connections
CmBN | Cross mini-Batch Normalization
…
YOLOv4 모델은 그 당시까지 나왔던 여러 기법들을 적용하여 실시간성을 보장한 Detection 모델입니다.
WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation 등등..
CNN 단위의 기법부터 데이터 증강까지 여러 부분을 실험했다고 저술하는데 좀 더 자세히 알아보도록 하겠습니다.
Main goal : 빠른 속도를 목표로 하지만 그 과정에서 연산량(BFLOP)을 줄이기 보다는 병렬 계산을 최적화 시키는데에 있다.
1.
1080Ti / 2080Ti 에서도 빠르고 정확도가 높은 모델을 학습시킬 수 있게 한다.
2.
Bag-of-Freebies 나 Bag-of-Specials 같은 기법들이 Detection 모델에도 좋은지 검증한다.
3.
CBN, PAN, SAM 등을 통해 기존의 모델을 하나의 GPU에서도 효율적이고 적절히 돌아가게 바꾼다.
2. Related Work
2.1 Object Detection models
2.2 Bag-of-Freebies
보통 전통적인 OD 모델들은 오프라인 환경에서 학습이 된다. 그렇기에 Inference 비용을 늘리지 않고 train 전략이냐 비용만을 늘리는 방법을 사용하는데 이를 Bag-of-Freebies 라는 방법이다.
Bag-of-Freebies(이하 BoF) 에는 다양한 방법이 있는데 데이터 증강이나 loss fn, 규제화 같은 방법을 아우르는 표현인 듯합니다.
데이터 증강은 input image의 다양성을 부여하는 방식인데 이로 인해 좀 더 일반화된 모델을 만들 수 있습니다.
딸려오는 이점으로는 또 오버피팅 방지같은 것이 있기도 합니다.
random erase & Cutout와 같은 augmentation 기법을 통해 occlusion(가려짐) 같은 문제를 해결해왔다… 또한 이미지에 비슷한 concept(객체를 말하는 것 같다)이 여러 개 있다면 DropOut, DropConnect, DropBlock과 같은 방법으로 줄이는 방법이 있다. [이하 CutMix, Style-transfer GAN 등 여러가지 augmentation 기법 얘기들] → Augmentation
DropBlock
위와 같은 augmentation 기법과는 다르게 해당 모델에서는 semantic-distribution-bias 문제 해결을 위해 다른 BoF방법을 사용했다. 이러한 문제는 2 Stage 모델에서 hard example mining 방법을 통해 해결할 수 있지만 1 Stage 모델에 적합하지 않기 때문에 label smoothing 을 이용한다. → Loss Function(Regulation)
semantic-distribution-bias
마지막 BoF 방법으로 BBox regression이 있다. 전통적으로 Anchor box 베이스의 OD 모델들은 BBox에 대해서 MSE 함수를 Loss function으로 사용했다. 이는 변수(x, y, w, h와 같은) 하나하나를 독립 변수로 두고 직접적으로 계산하는 것이기 때문에 Box의 무결성이 고려되지 않기 때문에 IoU 베이스의 Loss function을 제안한다. IoU는 scale에 있어서 불변성이 있기 때문에 기존의 loss와 같이 scale이 커질수록 loss가 커지는 문제를 해결할 수도 있다. → Loss Function
2.3 Bag of Specials
약간의 성능 향상을 위해 모듈에 뭐를 추가한다거나 후처리 작업을 하는 것을 BoS라고 부른다.
모듈 추가는 Receptive field 크기의 증가, Attention 메카니즘의 적용, feature 통합 능력의 향상 같은 것이 있다. 후처리 작업에는 모델의 예측 결과를 걸러내는 것이 있다.
feature 통합 능력의 향상 (이는 FPN과 같은 것을 말하는 걸까요?)
Enhance Receptive Field
SPP, ASPP, RFB 과 같은 방법들이 있다.
SPP | Spatial Pyramid Pooling
ASPP | Spatial Pyramid Pooling
RFB | Receptive Field Block
Attention Module
OD에 적용되는 Attention 모듈은 Channel-wise와 Point-wise attention으로 나누어진다. 그리고 이를 대표하는 두 모델은 SE(Squeeze-and-Excitation)과 SAM(Spatial-Attention-Module)이 있다.
Feature Integration
이전에는 skip-connection이나 hyper column을 이용해서 low level의 특징을 high level에 통합시켰다. FPN같은 모델이 유명해지면서 보다 경량화된 모델에 대한 연구가 이어졌는데 SFAM, ASFF, BiFPN같은 것들이 있다.
SFAM (Scale wise Feature Aggregation Module)
ASFF (Adaptively Spatial Feature Fusion)
Activation Function
Ouput이 0보다 작다면 gradient가 0이 되는 ReLU의 단점을 보완한 LReLU, PReLU. 그리고 양자화 네트워크를 위한 ReLU6, hard-Swish. 출력값을 0~1로 스케일하는 SELU는 자기 정규화 효과로 여러 문제를 해결할 수 있다. 그리고 Mish 와 Swish는 지속 미분가능한 함수이다. (이런 여러 활성함수 소개)
Post-processing
NMS가 있는데 NMS에도 다양한 방법이 있다. 일반적인 greedy NMS부터 동일한 객체가 겹쳐있아면 하나의 박스만 검출해넀던 greedy NMS의 단점을 보완하여 box 자체를 억제하지 않고 낮은 confidence 값을 주어 다 검출 가능하게 하는 soft-NMS가 있다. 또한 box의 중심좌표를 활용하여 수렴 속도를 높인 DIoU NMS도 있다.
3. Methodology
위에서도 언급했듯이 YOLOv4의 목표는 이론적 지표인 BFLOP의 감소보다는 최적화를 통한 빠른 연산이다.
3.1 Selection of architecture
첫 목표는 입력 해상도, Conv 층의 개수, 파라미터의 개수, 필터 개수에 대해 최적의 균형 조합을 찾아야한다. 다음 목표는 Receptive Field를 증가시키는 백본 모델을 정해야한다. (FPN, PAN, ASFF ...)
분류 모델이 항상 탐지 모델에 적합한 것은 아니기에 아래의 요구 사항을 충족해야한다.
1. Input 해상도를 높게 가져갈 수 있는 네트워크 (작은 객체 탐지를 위해)
2. More layers : 큰 Input 사이즈를 가져가기 위해선 Receptive field를 넓혀야 하기 때문
3. More param : 단일 이미지에서의 다중 객체 탐지
ImageNet에서 분류 성능으로 가장 좋은 CSPResNext50 과 MS COCO에서 탐지 성능이 더 좋은 CSPDarknet53, 그리고 Efficient-Net B3을 비교했다. 입력 해상도, Recep_Field 크기, 파라미터 수 등을 체크했을 때 CSPDarknet53이 적합하다고 결정을 지었다.
최종적으로 CSPDarknet53 의 백본에 SPP block을 추가하였다. 이러한 구조는 Receptive Field의 크기를 늘려주고, 연산 속도에 영향 없이 context feature를 잘 뽑아 낼 수 있다.
Context Feature 는 무엇일까..
뇌피셜: 직역-문맥 특징. 하지만 이미지에서 문맥이란 픽셀 사이의 관계 또는 객체 사이의 관계가 될 수 있을 것 같다.
그리고 FPN을 사용했던 YOLOv3과 달리 PANet와 YOLOv3의 anchor based head를 사용헀다.
3.2 Selection of BoF and BoS
OD 학습을 위해 보통 CNN 모델은 아래의 조합을 선택한다
PReLU와 SELU는 학습이 어렵다는 단점이 있어서 제외를 하였고, Drop Block은 검증이 되었기에 선택하였다.
3.3 Additional improvements
단일 GPU에서의 적합한 학습 상태를 만들기 위해 몇 가지 방법을 추가하였다.
1. Mosaic, Self-Adversarial Training (SAT) 데이터 증강 기법
2. Hyper-parameter 선정에 Genetic 알고리즘 적용
3. SAM, PAN, CmBN 수정
논문에서는 SAT에 대해서 설명이나 실험 소개를 별로 안해서 좀 더 찾아봤습니다. Mosaic 방법은 이미지로 설명을 조금 해뒀는데 이 방법이 YOLOv4에서 제안된 기법인건 몰랐네요..
Self-Adversarial Training은 데이터 증강 기법 중 하나입니다.
2번의 전방-역전파 학습으로 진행이 되는데, 1단계에서는 역전파를 통해 가중치를 갱신하는 것이 아니라 원본 이미지에 노이즈를 주어(adversarial attack) 모델이 원본 이미지의 클래스가 아닌 아래의 경우처럼 다른 객체로 인식하게끔 만듭니다.
그리고 2단계 학습에서 노이즈가 낀 이미지를 학습하게 됩니다. 이런 식으로 학습을 해서 좀 더 General한 모델이 되는 것을 노린 것 같습니다.
CBN을 개선한 CmBN를 제시하고
그리고 SAM에서 spatial-wise attention을 point-wise attention으로 대체하였고
또한 PAN에서 shortcut connection을 concatenation으로 바꿨다.
3.4 YOLOv4
위의 내용을 기반으로 만든 조합은 아래와 같다.
4. Experiments
ImageNet에서의 분류, MS COCO에서의 탐지 성능을 실험했다.
4.1 Experimental Setup
하이퍼 파라미터 세팅 값들에 대한 나열
4.2 Influence of different features on Classifier training
Class label smoothing, bilateral blurring, MixUp, CutMix and Mosaic, Leaky-ReLU (by default), Swish, and Mish 과 같은 기법들에 대해서 실험을 진행하였고 아래는 그 결과.
4.3 Influence of different features on Detector training
Mosaic, IT: IoU threshold, GA: Genetic algorithms, LS: Class label smoothing, CBN: CmBN, CA: Cosine annealing scheduler, DM: Dynamic mini-batch size, OA: Optimized Anchors, GIoU, CIoU, DIoU, MSE 에 대해서 실험을 진행하였고 아래는 그 결과
4.4 Influence of different backbones and pretrained weightings on Detector training
백본 모델이 detector 성능에 영향을 주는지 실험을 진행하였고 아래는 그 결과
4.5. Influence of different minibatch size on Detector training
미니 배치 사이즈에 대한 실험 결과.
5. Results
결론은 물론 이 모델이 짱이다! 입니다.
v3에 비해 정확도가 10%나 오르고 single GPU에서도 FPS가 좋은 것을 보면 좋은 모델인 것은 맞지만, 너무 휴리스틱하게(?) 이 방법 저 방법 다 쓰면 좋아지겠지~ 식의 논문인 것 같아서 그런건지, 익숙한 방법론들이 많이 보여서 그런건지 인상깊은 논문은 아니였습니다..
그럼 이만~