YOLOv4: 성능 개선을 위해서 기존 기법들을 잘~ 조합한다.
Abstract
- Practical testing of combination of such features (실용적인 조합)
- batch-normalization
- residual-connections
- Weighted-Residual-Connections (WRC)
- Cross-Stage-Partial-connections (CSP)
- Cross mini-Batch Normalization (CmBN)
- Self-adversarial-training (SAT)
- Mish-activation
- Mosaic data augmentation
- DropBlock
- CIoU loss
Consists of
- 독창적인 모델링 -> 기존 feature 결합한 모델링
- 욜로v3와 v4의 차이
- v3
- Backbone: Darknet53
- Neck: FPN
- v4
- Backbone: CSPDarknet53
- Neck: SPP, PAN
YOLOv4 전략
- backbone(2): 사전학습 성능개선전략
- detector(2): 전이학습 성능개선전략
Freebies, Specials
- Bag of Freebies
- 추론 비용(추론시간) 없이 정확도를 향상시키는 훈련 방법.
- 훈련할 때 시간이 걸린다.
- 일반적으로 데이터 증강
- BOF가 아닌 것은?
- 데이터 증강
- dropout (뉴런을 일부만 사용, 추론시 모두 사용)
- focal loss (loss는 학습할 때만 확인한다. weight를 업데이트하기 위해)
- label smoothing (레이블을 바꿔줌. 과적합을 막기 위해서)
- mish (활성화 함수 변경) **정답
- Bag of Specials
- 추론 비용(추론시간)이 약간 높아지지만 정확도가 유의미하게 향상되는 처리방법
- BOS가 아닌 것은?
- swish (활성화 함수)
- SPP
- SAM
- DIOU NMS (post processing)
- dropblock (추론에서만 사용) **정답
BOF와 BOS
Object Detection에서는 추론 시간이 모델 성능에 중요
- BOF: 학습시에만 사용한 기법 (오차계산, 학습방식, 증강)
- BOS: 모델 자체 수정, 후처리 기법(욜로v1의 NMS)
성능개선전략 정리
성능개선 추가, BOF
- Optimizer (weights변경 방법, ex)경사하강법, Adam...)
- Initializer (weights 초기화)
- Learning rate scheduling
- Label smoothing (정답 레이블을 다중선택 가능하게 변경, 반대는 one-hot encoding)
- Learning strategy
성능개선 추가, BOS
- Ensemble (앙상블)
Mosaic
- Cutmix가 2개를(얼굴, 몸) 합치는 거라면, Mosaic은 4장.
- Mosaic은 위치 이동에 대한 학습도 할 수 있다.
(문제가 항상 중앙에만 있으란 법이 없음) - 모자이크는 1장당 포함된 사진이 늘어나므로 배치가 늘어나는 효과가 있다.
- 배치는 클수록 더 좋은 학습을 하게 된다.
- 한 장씩 공부하면, weights 이동이 빈번하게 일어난다.
CSPDarknet53: Backbone
ResNet(2015)
- skip connection
- 건너 뛰어서 전달
- Add connection
DenseNet(2016)
- dense connection
- 여러 곳에 달
- concat connection
- 계산량이 늘어난다. 피처맵이 두꺼워진다.
CSPNet
- concat 을 분할해서 한다.
SPP : Spatial Pyramid Pooling
- 입력 이미지 크기가 자유롭다.
- FC가 있더라도 고정된 사이즈로 넣을 필요가 없다.
- 기존풀링: patch size = 2x2 혹은 3x3 등 고정된 사이즈로 사용
- 기존풀링: 2x2 필터를 사용하여, 항상 output size를 반으로 줄였다.
- SPP: output size가 고정될 수 있는 필터를 사용한다.
- 3가지 size의 풀링을 사용하고 선형으로 만들어 항상 5,376 x 1 이 나온다.
- YOLO에서는 Flatten하지 않기 때문에 수정된 SPP를 사용한다.
- 백본 -> 넥 사이에 사용한다.
- Output size 4x4, 2x2, 1x1 고정x
pooling 사이즈를 3가지로 정하고,
모두 same padding 처리를 하여, 동일한 사이즈의 피처맵 3개를 만들고,
원본 피처맵을 포함한 4개의 피처맵을 concat - Pooling size가 달라도 동일한 크기의 피처맵을 만들기 위해, stride=1, same_padding
- 다양한 크기의 풀링을 동시에 적용하여 표현력이 뛰어난 피처맵을 생성한다.
PAN
- concat을 한 방향으로만 하는 게 아니라 양 방향으로 한다.
- 사이즈에 따른 장단점을 서로가 보완
- 52 x 52: 학습이 가장 덜 되었지만, 명시적이고 작은 객체에 집중.
- 26 x 26: 학습의 숙련도가 중간단계.
- 13 x 13: 학습이 잘 되어 있으나, 너무 추상화 되어 있다. 큰 객체에 집중.
Tags:
AI개발_교육