[Object Detection] 1. Object Detection Overview
-
Object Detection Overview
💡 precision은 모델이 찾은 모든 detections 중에 정답의 비율을 의미. recall은 모든 정답들 중에 모델이 맞춘 정답의 비율을 의미. Recall, AP, IoU 은 모두 성능을 평가하는 지표 중 하나인 mAP를 계산하기 위해 필요한 개념. FPS, FLOPs는 속도를 평가하는 지표. FLOPs(FLoating point OPerations)에서의 연산은 사칙연산을 포함하여 root, log, exponential 등의 연산도 해당되며, 각각을 1회 연산으로 계산 FLOPS(FLoating point Operations Per Second)1초당 얼마나 많은 연산을 처리할 수 있느냐하는 하드웨어의 퍼포먼스 측면을 본다는 점에서 차이가 있음. MAC(multiply-accumulate) a*x+b를 하나의 연산(operation)으로 처리를 하고 이 연산이 몇번 실행되었는지를 세는 것 → 2FLOPs = 1MAC
classification → 이미지 한 장당 정답이 매핑되어 있음.
object detection → 이미지 안에서 정답이 여러가지가 있을 수 있음.
semantic segmentation → semantic 한 영역을 구분. 같은 클래스를 갖는 객체의 영역은 구분하지 않음.
instance segmentation → semantic seg + object det. 객체를 구분하고 영역까지 구분함. 겹쳐있는 사람 한명한명을 따로따로 예측하는 것.
-
Object Detection
- mAP(mean average percision)
- 각 클래스당 AP 평균
- mAP를 계산하기 위해 필요한 개념
-
confusion matrix
P, N → 모델의 예측 T, F → Groundtruth 에 비춰 맞았는지 틀렸는지.
- Precision & Recall
- precision
- 모델의 예측 관점에서 정의한 metric. 모델이 P 라고 예측(TP + FP)한 모든 케이스에 대해서 맞은(TP) 비율
- Recall
- groundtruth 즉 정답 관점. 정답인 케이스(TP + FN) 중에서 모델이 옳게 예측(TP)한 비율
- Example
- precision
-
PR curve
- confidence → TP, FP 인지 여부를 담음. 그 confidence 의 확신을 가지고 예측한 것. 예측들에 대해서 맞았는지 틀렸는지 labeling 이 가능하고, 각각의 confidence가 존재한다고 했을 때, 이를 confidence score 를 기준으로 내림차순으로 정렬 가능.
- 내림차순으로 정렬 했을 때 누적 TP 와 누적 FP 를 계산 가능. Precision 과 Recall 을 누적되어 있는 TP, FP 로 계산함.
- 모든 예측에 대해서 confidence score 로 내림차순 정렬을 했을 때, 각각 row 에 한해서 누적 TP, 누적 FP 를 계산해서, 이것으로부터 precision 과 recall 을 계산.
- 이를 그래프에 찍음. (Recall, Precision) 으로. 그게 바로 PR curve
- PR curve 는 모든 예측에 대해서 confidence score 로 내림차순 정렬 했을 때, 각각의 누적 TP, FP 를 계산해서 precision 과 recall 을 계산. 이를 recall, precision 좌표로 찍어서 그래프로 그리면 PR curve 가 됨.
- AP(Average Precision)
- PR curve 에서 아래 면적을 계산 가능. 아래 면적을 계산 할 때 그 면적 자체가 AP 가 됨. 즉 AP 는 PR curve 를 그리고 그 아랫면적으로 구할 수 있음. 0부터 1사이의 값을 가지는 metric.
-
mAP(mean Average Precision)
- 각각 class 에 대해서 AP 를 다 계산해서, 그 AP 를 평균냄.
- IOU(intersection over union)
- detection에서 TP 와 FP 를 어떻게 판단하는지 그 방법론.
- classification 은 TP, FP 가 명확함. 한 이미지에 label 이 지정되어 있고 예측도 한 cls 로 하기 때문.
- detection 의 경우에는, cls 를 직접적으로 예측하는 것이 아니라 객체가 있을 법한 bbox 를 같이 예측함. gt box 가 있고 pred box 가 있을 때, pred box 가 gt box 가 맞는지 아닌지 판단하는 조건이 필요함.
- 어느정도 겹쳐있는지에 따라서 T, F 를 구분하는 과정이 필요함. 공통된 기준. 그 공통된 기준을 IoU 로 계산 가능.
- IoU 는 2개의 box 가 있을 때, 전체 영역 분의 겹치는 영역으로 계산할 수 있다.
- IoU 컨셉을 가지고 gt 와 비교해서 pred box 가 어느정도 겹쳤는지를 기준으로 해서 0.5, 0.6 이상일 때 True 로 한다는 등 TP와 FP 의 기준을 부여할 수 있게 됨.
- 왼쪽 이미지의 경우 IoU 는 0.4 오른쪽은 0.6
- IoU 를 0.5 로 threshold 를 정했을 때, 왼쪽은 False라고 labeling. 오른쪽은 True 라고 labeling. 0.4 가 thr 이면 두 경우 모두 True 라고 매핑됨. 만약 IoU 0.7 thr 을 주면 두 케이스 모두 False 예측이 됨. → 즉 우리가 정하는 IoU 의 threshold 에 따라서 TP 가 될 수도 있고 FP 가 될 수도 있는 것.
- mAP 는 TP 와 FP 의 누적을 계산해서 각각 precision과 recall 을 계산함. 정한 IoU 의 기준에 따라서 precision과 recall 이 TP 와 FP 가 달라지기 때문에 값이 달라짐.
- Evaluation
- 따라서 detection 에서는 단순하게 mAP 만 사용하는 것이 아니라, mAP 와 함께 IoU 의 기준을 같이 부여를 해야함. mAP50 은 IOU 가 0.5 이상인 애들은 True 라고 했을 때 그 때의 mAP 가 어떻게 되느냐는 것. mAP60 은 IOU thr 이 0.6
- 쭉 계산했을 때 mAP95 가 가장 엄격한 평가 metric 인 것. 실제 gt box 와 95% 이상 겹쳐야만 True 라고 인정하는 것이기 때문에.
- 여기까지 성능평가를 위한 metric
- 속도 Evaluation
-
FPS(Frames Per Second)
- FPS 가 크면 클수록 1초에 60 frame 을 처리할 수 있는 것. 크면 클수록 모델이 빠른 것.
-
FLOPs(Floating Point Operations)
- 모델이 얼마나 빠르게 동작하는지 측정하기 위해 필요한 Metric. 연산량의 횟수(곱하기, 더하기, 빼기 등)
- FLOPs 가 작으면 작을수록 빠른 모델. 연산이 적은 것.
- 행렵곱 결과에 대해서 각 셀 당 연산이 몇 개있는지를 계산.
- CNN 에서 FLOPs
→ 일반적으로 덧셈의 경우는 FLOPs 에서 생략하는 편.
-
- Library
- MMDetection → pytorch 기반인 object detection 오픈 소스
→ 정말 많은 paper 들이 MMdetection 을 기반으로 하고 있음.
- Detectron2 → Meta 에서 만든 라이브러리.
- YOLOv5 → YOLO 계열 종합. 여러 플랫폼에서 오픈 소스로 제공하고 있음.
- EfficientDet → EfficientNet을 응용해서 만든 Object detection 모델.
-
- mAP(mean average percision)
-
Object Detection Domain 특성
- 통합된 library 의 부재 → library 의존도가 매우 높은 편.
- 엔지니어링 적인 측면이 강하다.
- 어떤 모델이 풀고자 하는 문제에 적합한지 실험적인 증명이 필요함.
- Custom, tuning 하는 과정에서 개발 수준의 활용이 필요함.
- 복잡한 파이프라인
- 높은 성능을 내기 위해서 무거운 모델을 호라용
- Resolution(해상도) 이 성능에 영향을 많이 끼쳐 사진의 크기가 큼. → detection 은 작은 객체도 잘 구분해야 하기 때문에 이미지 사이즈가 일반적으로 큰 편. 그에 따라 연산량이 많아짐. 따라서 한 batch 에 담을 수 있는 이미지 개수가 적어지는 편.
⇒ 이론적인 이해와 개발적 역량을 요구하는 task 임.
-
댓글 남기기