[네이버 부스트 캠프] AI-Tech - Lv2 week5(2)
학습기록 - 45
오늘 할 일
- Advanced Object Detection 2
1. 강의 복습 내용
YOLO v4
- Contribution
- 하나의 GPU에서 훈련할 수 있는 빠르고 정확한 Object Detector
- BOF, BOS 방법들을 실험을 통해서 증명하고 조합을 찾음
- BOF (Bag of Freebies) : inference 비용을 늘리지 않고 정확도 향상시키는 방법
- BOS (Bag of Specials) : inference 비용을 조금 높이지만 정확도가 크게 향상하는 방법
ex) Cascade-RCNN or Deformable R-CNN
- GPU 학습에 더 효율적이고 적합하도록 반영 -> Competition과 같은 리소스가 제한적일 때, 효율적으로 할 수 있다.
-
Object Detection Model
- Input
- Image, Patches, Image Pyramid, …
- Backbone
- GPU platform : VGG, ResNet, ResNext, DenseNet, …
- CPU platform : SqueezeNet, MobileNet, ShuffleNet, …
- Neck
- Additional blocks : SPP, ASPP, …
- Path-aggregation blocks : FPN, PAN, NAS-FPN, BiFPN, …
- Head
- Dense Prediction(one-stage) : RPN, YOLO, SSD, RetinaNet, CornerNet, FCOS, …
-> 여기서 RPN은 one-stage model이 아닌 two-stage에서 Region Proposals 영역을 만들어 내는 Network - Sparse Prediction(two-stage) : Faster-RCNN, R-FCN, Mask R-CNN, …
- Dense Prediction(one-stage) : RPN, YOLO, SSD, RetinaNet, CornerNet, FCOS, …
- Input
-
Related work
-
Bag of Freebies
Inference 비용을 늘리지 않고 사용하는 방법, Real-time 보장을 한다면 BOF 방법을 사용한다해서 Real-time 속도가 늘어나지는 않는다.
세 가지 파트 - Data Augmentation, Semantic Distribution Bias, Bounding Box Regression- Data Augmentation
- 입력 이미지를 변화시켜서 Overfitting을 막는 방법
- CutMix
- 입력 이미지를 변화시켜서 Overfitting을 막는 방법
- Semantic Distribution Bias
- 데이터셋에 특정 라벨 (배경)이 많은 경우 불균형을 해결하기 위한 방법
- 어려운 배경을 강제로 배치에 더 많이 포함시키는 방법 (Hard Negative Mining)
- 어려운 예제에서는 Gradient를 크게, 쉬운 곳은 작게 (Focal-loss)
- 라벨에 0 또는 1로 설정하는 것이 아니라 smooth하게 부여 (Label smoothing)
- 데이터셋에 특정 라벨 (배경)이 많은 경우 불균형을 해결하기 위한 방법
- Bounding Box Regression
- Bounding box 좌표값들을 예측하는 방법 (MSE) 은 거리가 일정하더라도 IoU 가 다를 수 있음
-
IoU 기반 loss 제안 (IoU 는 1 에 가까울수록 잘 예측한 것이므로 loss 처럼 사용 가능)
- GIOU
-
IoU 기반 Loss
-
- Data Augmentation
- Bag of Specials
- Enhance receptive field
Feature map의 receptive field를 키워서 검출 성능을 높이는 방법- SPP (Spatial Pyramid Pooling)
- Shifted Window (in Transformer)
- Attention Module
Feature map에 Global Attention 추가-
SE (A Squeeze and Excitation block) : channel 별로 Global Averaging pooling 연산을 통해 1x1xC로 만든 후, sigmoid 등 여러 연산을 통해서 이전 feature map과의 연산을 통해 channel의 중요 부분에 집중 가능
-
CBAM : Channel Attention + Spatial Attention -> 중요한 부분에 더 집중할 수 있도록 한다.
-
- Feature Integration
- Feature map 통합하기 위한 방법 (FPN : Feature Pyramid Network)
- Scale wise Feature Aggregation Module (SFPM)
- Activation Function
-
ReLU
Gradient vanishing 문제 해결하기 위한 활성 함수로 등장
음수 값이 나오면 훈련이 되지 않는 현상 발생 -
Swish / Mish
약간의 음수 값을 허용, ReLU의 zero bound 보다 gradient 흐름에 좋은 영향
모든 구간에서 미분 가능
-
- Post-processing Method
불필요한 Bbox 제거 방법- NMS (Non Maximum Suppression)
- Enhance receptive field
-
BoF and BoS for YOLOv4 Backbone (정리)
-
-
Selection of Architecture
3가지를 중점에 두고 구조 설계- 작은 물체 검출을 위한 큰 네트워크 입력 사이즈 - 큰 receptive field 필요 (많은 layer 필요) - 다양한 사이즈의 물체 검출을 위한 모델 용량 (많은 파라미터 필요)
-
Overall Architecture
-
Cross Stage Partial Network (CSPNet)
장점 정확도 유지하면서 경량화 메모리 cost 감소 다양한 backbone 에서 사용가능 연산 bottleneck 제거
-
기존 DenseNet
문제점은 가중치 업데이트 할 때, Gradient 정보가 반복적으로 쓰이게 된다. 반복적으로 사용되는 Gradient를 방지하기 위해서 일부만 사용할 수 있도록 한다.
-
CSPDenseNet
gradient information 많아지는 것 방지, 모든 backbone에 적용 가능
-
-
Additional Improvements
- Data Augmentation
- Mosaic : 4장의 이미지를 합쳐서 사용 -> Batch size가 커지는 효과, 작은 Batch size로도 학습이 잘된다.
- Self-Adversarial Training
1-stage : 원본 이미지 변형, 보이지 않는 이미지 추가
2-stage : 변형 이미지 이용
모델의 오작동을 일으킨다.
- Modified Spatial Attention Module
- Modified PAN (Path Aggregation Network)
-
Cross mini-Batch Normalization : 각 batch에서 계산하는 것이 아닌 각 mini-batch들을 accumulate 하는 방법을 이용.
- Data Augmentation
-
BoF and BoS for YOLOv4 backbone
YOLOv4에서 채택한 방법들
-
BoF and BoS for YOLOv4 detector
-
-
결론
BoF, BoS를 이용한 다양한 실험 결과를 보여준다. 하지만 다양한 Dataset에서 공통된 결과가 아니기 때문에, 모든 가능성을 열어두고 많은 실험을 해야한다. -
참고