Introduction
다수의 cnn기반의 객체검출기들은 대체로 추천시스템에만 적합했다.
예를 들어 도시의 카메라를 통한 주차 빈자리 찾기는 느리지만 정확한 모델에 의해 실행되지만 자동차 충돌 주의는 빠르지만 정확하지 않은 모델을 통해 실행된다.
실시간의 객체 검출기의 정확도를 높이는 것이 추천시스템에 대한 힌트를 생성하는 것 뿐만아니라 독립형 프로세스 관리와 사람이 입력해야하는 것을 감소시키는것을 가능하게한다.
전통적인 GPU를 사용한 실시간 객체검출 수행은 방대한 사용량을 허용한다.
가장 정확한 신상의 neural network들은 실시간에서 동작하지 않으며 큰 mini-batch-size를 요구하면서 여러개의 GPU 사용을 필요로한다.
이러한 문제점에 직면하면서 하나의 GPU만을 사용하는 모델을 만들었다.
주요한 목적은 생산시스템에서의 객체검출의 빠른 수행시간을 만들기 위함과 병렬계산에 최적화하기 위한것이다.

위 그림과 같이 yolov4 모델을 사용했을때 하나의 GPU만을 사용해도 실시간, high quality, 높은 정확도를 얻을 수 있을 것이다.
YOLOv4의 contribution은 다음과 같다.
1. 1080Ti 또는 2080Ti 와같은 GPU 하나만을 사용하여 빠르고 정확하게 학습하는 효율적인 객체 검출 모델을 개발했다.
2. 객체검출 학습시에 최신의 bag-of-freebies와 bag-of specials 방법들의 영향을 검증하였다.
3. 최신의 방법들을 수정하고 single-GPU 학습에서 더 적합하고 효율적이게 만들었다. (ex. CBN, PAN, SAM)
Methodology
기본 목표는 생산시스템과 병렬 연산을 위한 최적화에서의 빠른 수행 속도를 내는 것이다.
실시간 네트워크를 위해서는 두가지의 조건이 있다.
1. GPU의 경우 convolutional layers 내 group의 수가 작은(1-8) CSPResNeXt50 / CSPDarknet53 등을 이용
2. VPU의 경우 grouped-convolution은 사용하지만, Squeeze-and-excitement (SE) blocks은 사용하지 않음. 특히 EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3 등의 모델들을 포함함
1. Selection of architecture
우리의 첫번째 목적은 입력 해상도, convolutional layer number, parameter number, the number of layer output 사이에서의 최적화된 균형을 찾는 것이다.
예를들어 많은 연구들이 CSPResNext53와 비교했을때 객체분류 측면에서 CSPResNext50이 더 낫다는 것을 입증했다.
그러나 반대로 CSPResNext53이 객체검출 측면에서 더 낫다.
두번째 목적은 receptive field를 증가시키기 위한 추가적인 블록과 서로 다른 detector levels을 위한 서로 다른 backbone levels로부터 parameter aggregation을 위한 최상의 기법을 선택하는 것이다. (ex. FPN, PAN, ASFF, BiFPN)
classification에 최적화된 참조모델이 항상 detector에도 적용되는 것은 아니다.
classifier에 대조적으로, detector는 다음과 같은 것이 필요하다 :
* 높은 입력 해상도 - 다양한 작은 크기의 물체 검출을 위해
* 더 많은 layers - 증가된 입력네트워크의 크기를 커버하기 위해 커진 receptive field를 위해
* 더 많은 parameters - 하나의 이미지에서 다양한 크기의 객체들을 검출하기 위한 모델의 더 큰 능력을 위해

가설적으로 이야기하자면, 더큰 receptive field 크기와 파라미터 수를 가지는 모델은 backbone로 선택해야 한다.
위 표를 보면
CSPResNext50는 16개의 convolutional layer를 갖고 425 × 425 receptive field와 20.6 M parameters를 가진다.
CSPResNext53는 29개의 convolutional layer를 갖고 725 × 725 receptive field와 27.6 M parameters를 가진다.
수많은 실험을 토대로 CSPResNext53가 detector의 backbone으로 최적화된 모델인것을 알아냈다.
다른 크기들을 가지는 receptive field의 영향은 다음과 같이 요약할 수 있다.
* 객체의 크기에 따라 - 객체 전체를 보는 것이 다름
* 네트워크 크기에 따라 - 객체 주변의 맥락을 보는 것이 다름
* 네트워크 크기를 초과하는 것이 - image point와 the final activation 사이의 연결수를 증가시킴
CSPResNext53 이후에 SPP 블럭을 추가하여 receptive field를 증가시키고 가장 중요한 문맥상의 특징을 분리시키며 네트워크의 수행 시간의 감소를 거의 발생시키지 않는다.
각 다른 detector levels를 위해 다른 backbone levels로 부터 parameter aggregation의 방법으로써 PANet을 사용한다.
backbone - CSPResNext53
neck - SPP module, PANet path-aggregation
head - yolo
GTX 1080Ti 또는 RTX 2080Ti 등의 기존에 사용하던 GPU를 이용하여 누구나 최신의 결과를 재생산할 수 있다.
2. Selection of BoF and Bos
객체검출 학습의 발전을 위해서
3. Additional improvements
객체 검출을 single GPU에서 학습하는것에 맞추기 위해 다음과 같은 추가적인 것을 도입하였다.
* Mosaic의 data augmentation, Self-Adversarial Training
* genetic algorithms을 적용하여 최적의 hyper-parameters를 선택
* 원래 있던 방법을 수정하여 적용 - modified SAM, modified PAN, Cross mini-Batch Normalization (CmBN)

mosaic 방식은 4개의 이미지를 섞어 학습에 사용한다.
이 방식은 평범한 context 외부의 객체들도 검출할 수 있게 한다.
추가적으로 batch normalization은 각 layer에서 서로 다른 4개의 이미지들에 대한 activation 통계를 계산한다.
이것이 큰 mini-batch 크기의 필요성을 감소시켜준다.
Self-Adversarial Training(SAT)는 2단계의 forward 및 backward 단계로 동작하는 새로운 data augmentation이다.
1단계에서 neural network는 network의 weight 대신에 원본 이미지를 변경한다. 이때 neural network가 자체적으로 adversarial attack을 수행해서 이미지에 원하는 객체가 없다는 속임수를 만들도록 원본 이미지를 변경한다.
2단계에서는 neural network는 평범한 방법으로 이 수정된 이미지에서 객체를 찾도록 학습된다.

CmBN은 CBN의 수정된 버전으로 단일 batch 내에서 mini-batches 사이에 대한 통계를 수집한다.

기존의 SAM을 spatial-wise attention을 point-wise attention으로 변경하였다.
기존의 PAN의 shortcut connection을 concatenation으로 변경하였다.
4. YOLOv4

위 그림 출처 : https://neverabandon.tistory.com/22
[논문읽기/2020] YOLOv4: Optimal Speed and Accuracy of Object Detection
문서 버전 발표 버전 Link: https://arxiv.org/pdf/2004.10934.pdf Abstract Convolutional Neural Network (CNN)의 정확도 개선을 위한 수많은 features들이 존재 이러한 feature들의 조합에 대해 대규모 데이..
neverabandon.tistory.com
Experimentation


'Paper > Object Detection' 카테고리의 다른 글
| Swin Transformer : Hierarchical Vision Transformer using Shifted Windows (1) | 2022.03.10 |
|---|---|
| Augmentation for small object detection (1) | 2021.11.02 |
| CBAM (0) | 2021.10.28 |
| Scaled-YOLOv4 (1) | 2021.07.13 |
| MDSSD : Multi-scale Deconvolutional Single Shot Detector for Small Object (0) | 2021.04.15 |
댓글