Classification vs object detection vs Sementic Segmentation vs Instance Segmentation


object detection History

evaluation
성능
mAP (mean average precision)
mAP를 계산하기 위해 필요한 개념
confusion matrix

Precision & Recall


Precision : bbox 검출한 것 중에 맞게 예측한 것
Recall : GT 중에 맞게 bbox 검출한 것
PR Curve
예측들에 대해 맞았는지 틀렸는지 검출하고 각 confidence 알수 있을 때
이를 내림차순으로 정렬한 후 누적 TP,FP 로 Precision, Recall 계산
x축 Recall, y축 Precision으로 하여 그래프 그리기
즉 모든 예측에 대해 confience score로 내림차순 정렬 한 후 누적TP,FP 를 이용하여 Precision, Recall 구해서 그래프로 그리면 PR Curve
AP (Average Precision)

아래면적 계산 = AP : 0~1 값을 갖는 metric
mAP : 모든 객체의 AP의 평균
IOU (Intersection Over Union)

mAP in Object Detection
mAP50, mAP70 ... : IOU가 50, 70일떄의 mAP 를 뜻함
속도
FPS (Frames Per Second)
초당 처리할 수 있는 frame의 갯수
FLOPs (Floating Point Operations)
model 이 얼마나 빠르게 동작하는 지 측정하는 연산량의 횟수 : 작을 수록 좋음

Library
resion prposal - object clf

pipeline
1. 입력이미지 준비
2. Selective Search를 통해 약 2000개의 RoI(Region of Interest)를 추출
3. RoI(Region of Interest)의 크기를 조절해 모두 동일한 사이즈로 변형 (FC layer 입력사이즈 고정이므로)
4. RoI를 CNN에 넣어, feature를 추출
5-1. CNN을 통해 나온 feature를 SVM에 넣어 분류 진행
• Input : 2000 x 4096 features
• Output : Class (C+1) + Confidence scores
• 클래스 개수(C개) + 배경 여부(1개)
5-2) CNN을 통해 나온 feature를 regression을 통해 bounding box를 예측

요약
1) 2000개의 Region을 각각 CNN 통과 -> 연산량 너무 많아 시간 오래걸림
2) 강제 Warping, 성능 하락 가능성
3) CNN, SVM classifier, bounding box regressor, 따로 학습
4) End-to-End X

spatial pyramid layer

이미지를 binning으로 나누어 각 cell에서 pooling으로 feature를 뽑음
요약
1) 2000개의 RoI 각각 CNN 통과
2) 강제 Warping, 성능 손실 가능성
3) CNN, SVM classifier, bounding box regression, 따로 학습
4) End-to-End X

-ROI Pooling으로 고정된 크기의 feaure map 얻음
pipeline
1. 이미지를 CNN에 넣어 feature 추출 (CNN을 한 번만 사용) : VGG16 사용
2. RoI Projection을 통해 feature map 상에서 RoI를 계산

요약
1) 2000개의 RoI 각각 CNN 통과
2) 강제 Warping, 성능 손실 가능성
3) CNN, SVM classifier, bounding box regression, 따로 학습
4) End-to-End X

pipeline
1. 이미지를 CNN에 넣어 feature maps 추출 (CNN을 한 번만 사용)
2. RPN을 통해 RoI 계산
CNN으로 feature map얻은 후 grid로 나누고, 각 cell 마다 다양한 크기와 비율을 가진 n개의 ancher box를 가지고 있음

2-1. CNN에서 나온 feature map을 input으로 받음. (𝐻: 세로, 𝑊: 가로, 𝐶: 채널)
2-2. 3x3 conv 수행하여 intermediate layer 생성
2-3. 1x1 conv 수행하여 binary classification 수행
- 2 (object or not) x 9 (num of anchors) 채널 생성
- 4 (bounding box) x9 (num of anchors) 채널 생성
최종 pipeline

NMS
• 유사한 RPN Proposals 제거하기 위해 사용
• Class score를 기준으로 proposals 분류
• IoU가 0.7 이상인 proposals 영역들은 중복된 영역으로 판단한 뒤 제거

bb1 을 기준으로 IOU를 계산하여 미리 정해둔 threshold = 0.7 이상인 bbox=bb2를 제거
result

SS로 2000개의 region을 뽑은 것 보다 RPN으로 300개의 region을 뽑은 것이 mAP가 더 좋음
fps 속도 또한 ss보다 RPN이 더 빠름
요약
1) 2000개의 RoI 각각 CNN 통과
2) 강제 Warping, 성능 손실 가능성
3) CNN, SVM classifier, bounding box regression, 따로 학습
4) End-to-End X
하지만 여전히 region proposal + clf/reg 2 step이로 이루어져 있기 때문에 속도 가 느려 실시간으로는 사용할 수 없음
summary

Further Reading
RCNN Paper
Fast RCNN Paper
Faster RCNN Paper
https://herbwood.tistory.com/
통합된 라이브러리 없음
kaggle/실무에서는 MMDetection, Detectron2 사용

pipeline


Config file
dataset

model
2stage model
새로운 backbone 등록 가능

module import
등록한 backbone 사용
run time setting
optimizer
learning rate, runner
Facebook AI Research의 Pytorch 기반 라이브러리
Object Detection 외에도 Segmentation, Pose prediction 등 알고리즘도 제공
pipeline

Setup Config / Setup Trainer / Start Training