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 계산
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