본문 바로가기

부스트캠프 AI Tech

[WEEK 9-11] Object Det

Evaluation

- Confusion matrix : TP (True Positive), FP (False Positive), FN (False Negative), TN (True Negative)

- Precision : TP / TP + FP (All Detections)

- Recall : TP / TP + FN (All Ground truths)

- PR Curve : Confidence score 내림차순으로 누적 값의 Recall, Precision 그래프

- AP : PR Curve의 아랫면적

- mAP : AP의 평균

- IOU (Intersection Over Union) : overlapping region / combined region

- FPS (Frames Per Second) : 초당 처리 프레임

- FLOPs (Floating Point Operations) : Model이 얼마나 빠른지 측정하는 metric, 연산량 횟수

- Convolution layer Flops = Cin * Cout * K * K * Hout * Wout

Library

- MMDetection,  Detectron2, YOLOv5, EfficientDet

 

R-CNN

- Sliding Window : 특정 크기의 후보 영역을 모두 뽑아냄, 더이상 사용 안함

- Selective Search : 영역은 나눈 후 통합해나감

- RoI 2000개 추출

- 동일한 사이즈로 warping

- CNN으로 feature 추출

- SVM에 넣어 분류

- regression을 통해 bounding box를 예측

- CNN 연산 2000번, 강제 Warping, 따로 학습, End-to-End가 아님

SPPNet

- Spatial Pyramid Pooling : feature를 사이즈 별로 뽑은뒤 concat을 해 고정된 사이즈의 feature vector로 만듦

- CNN 연산 2000번, 강제 Warping하는 것을 해결

Fast R-CNN

- 이미지를 CNN에 넣어 feature 추출 (CNN을 한번만 사용)

- RoI Projection으로 feature map 상에서 RoI를 계산

- RoI Pooling을 통해 일정한 크기의 feature 추출 (SPP 사용)

- Fully connected layer 후, Softmax Classifier과 Bounding Box Regressor (클래스는 배경 포함 C+1개)

- 따로 학습 하는 것을 해결

Faster R-CNN

- 이미지를 CNN에 넣어 feature 추출 (CNN을 한번만 사용)

- RPN을 통해 RoI 계산 (기존 selective search 대체)

- Anchor box : 각 셀마다 비율과 스케일을 가진 다른 박스를 지정

- Region Proposal Network : 정해진 anchor box가 객체를 포함하는지 확인 한 후 미세조정

- NMS : 유사한 RPN Proposals 제거

- End-to-End

 

MMDetection

- Backbone : 입력 이미지를 특징 맵으로 변형

- Neck : backbone과 head를 연결, Feature map을 재구성 (FPN)

- DenseHead : 특징 맵의 dense location을 수행

- RoIHead : RoI 특징을입력받아 box 분류, 좌표 회귀 등을 예측

Detectron2

- Setup Config

- Setup Trainer

- Setup Training

 

Neck

- 다양한 크기의 객체를 잘 탐지하기 위해 다양한 feature map을 사용

- Feature Pyramid Network (FPN)

- Path Aggregation Network (PANet)

- DetectoRS - Recursive Feature Pyramid (RFP)

- Bi-directional Feature Pyramid (BiFPN)

- NASFPN

- AugFPN

 

YOLOv1

- GoogLeNet 변형 사용

- 빠른 속도, 사진에 대한 맥락적 정보(background error가 낮음), 일반화된 표현 학습

SSD

- Extra convolution layers에 나온 feature map 모두 detection : 크기에 따른 물체 탐지

- Fully connected layer 대신 convolution layer

- Default box (anchor box와 유사)

YOLOv2

- Better : Batch norm, 448x448 finetuning, anchor box, Fine-grained features, Multi-scale training

- Faster : GoogLeNet에서 Darknet-19로

- Stronger : WordTree 구성하여 9418개 class 구성

YOLOv3

- Darknet-53

- Multi-scale Feature maps

RetinaNet

- Focal Loss로 background나 Class imbalnce 해결

 

EfficientNet

- width scaling, depth scaling, resolution scaling, compound scaling

- 최적값을 찾아 FLOPS 대비 성능 향상

EfficientDet

- Efficient multi-scale feature fusion

- Model Scaling

 

Cascade RCNN

- Iterative, Integral 방식을 혼합

- 여러 개의 RoI head를 학습하고 Head 별로 IOU threshold가 다르게

- 높은 IOU들에 대해 큰 성능 향상

Deformable Convolutional Networks (DCN)

- Deformable Convolution : offset을 둔 피쳐맵을 더해주고 학습

Transformer

- Vision Transformer (ViT)

- End-to-End Object Detection with Transformer

- Swin Transformer

 

YOLOv4

- BOF (Bag of Freebies) : inference 비용을 늘리지 않고 정확도를 향상시키는 방법

- BOS (Bag of Specials) : inference 비용을 조금 높이지만 정확도를 크게 향상시키는 방법

- Cross Stage Partial Network (CSPNet)

M2Det

- Multi-level, multi-scale feature pyramid (MLFPN) : FFM(Feature Fusion Module), TUM(Thinned U-shape Module), SFAM(Scale-wise Feature Aggregation Module)

CornerNet

- Hourglass

- Detecting corner

- Grouping corner

- Corner pooling

- CenterNet

 

EDA

- 클래스 별 Object 개수 : 많으면 오버피팅되는 경향을 보일 수 있음

- 하나의 Image 내에 등장하는 Object 개수 : 너무 많은 경우 아웃라이어로 처리할 필요가 있음

- Bbox의 사이즈

- 클래스 별 bbox 사이즈 평균

- 클래스 간 등장 상관관계

파이프라인 구축

- Dataset

- CV strategy

- Training

Validation set 찾기

- Public score와 Private가 모두 오르는 validation set

- Random split, Stratified k-fold, Group k-fold

반복 시도

- Data Augmentation : Albumentation, Cutmix, Mosaic

- Ensemble & TTA : NMS(Non-Maximum Suppresion), Soft NMS, WBF(Weighted Box Fusion)

- ETC : Seed Ensemble, Framework Ensemble, Snapshot Ensemble, Stochastic Weight Averaging (SWA)