🔑 Object Detection, Detector, One-Stage Detector, Two-Stage Detector, Precision & Recall
Object Detecion
- 객체의 위치를 찾는 localization과 객체의 종류를 분류하는 classification을 모두 수행하는 task
- 객체의 위치를 탐지하고 객체의 종류를 분류하는 2가지 과정을 나누지 않고 한번에 수행하면 detection 속도가 훨씬 빠르다.
- YOLO와 같은 one-stage detector가 이런 방식을 사용하며 더 빠른 속도를 실현함
- Object detection은 자율 주행, OCR, CCTV 보안에 사용될 수 있는 기술
- 객체의 위치를 완전히 결정하기 위해서 필요한 정보
- class 종류
- bounding box의 중심점 좌표 (x, y)
- height
- width
- Segmentation은 모든 pixel을 분류하여 객체를 탐지하는 반면, object detection은 bounding box를 통해 객체의 위치를 지정함
Object Detector
- DETR
→ 2020년 Facebook AI에서 발표한 모델로, Transformer 구조를 object detection에 처음 적용한 모델. end-to-end로 학습이 가능하며, NMS(Non-Maximum Suppression)와 같은 후처리 과정이 필요없다는 장점이 있음 - SSD (Single Shot Detector)
→ CNN 기반의 one-stage detector. 여러 scale의 feature map을 사용하여 다양한 크기의 객체를 검출할 수 있음 - YOLO (You Only Look Once)
→ CNN 기반의 대표적인 one-stage detector. 이미지를 그리드로 나누어 한 번에 객체를 검출하는 방식을 사용. - R-CNN (Region-based CNN)
→ CNN 기반의 초기 two-stage detector. selective search를 통해 region proposal을 생성하고, 각 영역에 대해 CNN을 적용함 - Faster R-CNN
→ CNN 기반의 two-stage detector로, R-CNN의 개선된 버전. Region Proposal Network (RPN)를 도입하여 proposal 생성 속도를 크게 향상시켰음
Detector 구조의 구성 요소
- Fast R-CNN
→ RPN이 없음. selective search를 사용하여 region proposal을 생성함. [Input → Backbone → Sparse prediction] 구조를 가짐. - RetinaNet
→ One-stage detector로 RPN이 없음. [Input → Backbone → Neck(FPN) → Dense prediction] 구조를 가짐. Focal Loss를 도입하여 class imbalance 문제를 해결한 모델임. - CornerNet
→ One-stage detector로 RPN이 없음. [Input → Backbone → Dense prediction] 구조를 가짐. 객체의 왼쪽 상단과 오른쪽 하단 corner를 예측하는 방식을 사용함. - YOLO
→ One-stage detector로 RPN이 없음. [Input → Backbone → Dense prediction] 구조를 가짐. 단순한 구조로 빠른 속도를 보여줌. - Faster R-CNN + FPN
→ Two-stage detector로 문제에서 제시한 모든 구성요소를 포함함. [Input → Backbone → Neck(FPN) → RPN → Sparse prediction]의 구조를 가지며, FPN을 통해 다양한 scale의 feature를 효과적으로 활용할 수 있음.
Object detection evaluation metric
- mIoU (mean Intersection over Union)
→ Object detection의 metric임. 예측한 bounding box와 실제 ground truth box 간의 겹치는 영역을 평가하는 지표임. segmentation에서도 사용됨. - FID (Fréchet Inception Distance)
→ GAN과 같은 생성 모델의 성능을 평가하는 metric임. 생성된 이미지와 실제 이미지의 특징 분포 간의 차이를 측정함. Object detection과는 관련이 없음. - FPS (Frames Per Second)
→ Object detection의 metric임. 모델의 실시간 처리 능력을 나타내는 속도 지표임. 특히 실시간 객체 탐지가 필요한 응용에서 중요함. - mAP (mean Average Precision)
→ Object detection의 가장 대표적인 metric임. 각 클래스별 AP(Average Precision)의 평균값을 계산한 것으로, 검출 정확도를 평가함. - FLOPS (Floating Point Operations Per Second)
→ Object detection의 metric임. 모델의 연산량을 나타내는 지표로, 모델의 효율성을 평가할 때 사용함.
One/Two-stage detectors
- SSD (Single Shot Detector)
→ One-stage detector임. 단일 네트워크에서 바로 객체 검출을 수행하며, region proposal 과정이 없음. - FasterRCNN
→ Two-stage detector임. 1단계에서 RPN으로 region proposal을 생성하고, 2단계에서 classification과 box regression을 수행함. - R-CNN
→ Two-stage detector임. 1단계에서 selective search로 region proposal을 생성하고, 2단계에서 CNN을 통해 특징을 추출하여 분류를 수행함. - RetinaNet
→ One-stage detector임. FPN 구조와 Focal Loss를 사용하여 class imbalance 문제를 해결한 모델임. - YOLO
→ One-stage detector임. 이미지를 그리드로 나누어 한 번에 객체를 검출하는 방식을 사용하며, 빠른 속도가 특징임.
Precision & Recall
TP: 10
TN: 15
FP: 15
FN: 15
precision : TP/(TP+FP) = 10 / (10+15)
precision은 모델이 찾은 모든 detections 중에 정답의 비율을 의미
recall : TP/(TP+FN) = 10 / (10+15)
recall은 모든 정답들 중에 모델이 맞춘 정답의 비율을 의미
Evaluation metric in OD
Object detection 에 평가지표에는 단순히 성능 뿐만 아니라 속도를 평가하는 지표들
→ Recall, AP, IoU 은 모두 성능을 평가하는 지표 중 하나인 mAP를 계산하기 위해 필요한FF 개념
FLOPs
FLOPs 는 model이 얼마나 빠르게 동작하는지 측정하는 metric이다. 아래 그림과 같은 행렬곱에 대하여 FLOPs를 계산했을 때 옳게된 FLOPs
MUL(3x2, 2x3) = 3x3
- 각 셀 당 연산: 𝑎11 ∗ 𝑏11 + 𝑎12 ∗ 𝑏21
- 곱셈 • 한 셀 당 2번, 3 x 3 x 2 = 18번
- 덧셈 • 한 셀 당 1번, 3 x 3 x 1 = 9번 이기 때문에 총 FLOPS는 27
1-Stage Detectors
- 전체 이미지에 대해 특징 추출, 객체 검출이 이루어진다.
- 1 stage detector의 예시로는 다음과 같은 모델들이 있음 : YOLO, SSD, RetinaNet, ...
- 속도가 매우 빠르다 (Real-time detection)
- Localization, Classification이 동시에 진행한다.
- 1 stage detector도 충분한 맥락적 이해가 가능함
- RetinaNet과 같은 모델은 높은 정확도를 보여줌
- FPN과 같은 구조를 통해 다양한 scale의 정보를 활용
- 최신 1 stage detector는 2 stage와 비슷하거나 더 나은 성능을 보이기도 함
2-Stage Detectors
R-CNN
R-CNN은 object detection 분야에 CNN을 적용시킨 2-stage detector의 초기 모델로, 다음과 같은 pipeline으로 동작한다
- 입력 이미지에서 Selective Search를 통해 약 2k개의 후보 영역(RoI)을 추출한다.
- 추출된 RoI를 모두 동일한 사이즈로 warping한다.
- Warping된 RoI를 모두 CNN에 넣어 feature vector를 추출한다.
4-1. 추출된 feature vector를 SVM에 넣어 각 영역의 클래스를 예측한다.
4-2. 추출된 feature vector를 Regression에 넣어 각 영역의 bounding box를 예측한다.
Fast R-CNN
2 stage 초기 모델인 R-CNN은 1) 약 2000개의 RoI마다 모두 CNN 연산을 따로 수행해야 하며, 2) CNN의 fc layer의 입력 사이즈에 맞추기 위해 RoI를 강제로 warping해야한다는 단점이 있었다.
Fast R-CNN은 이 단점들을 해결하기 위해 1) 단일 CNN 연산으로 feature map을 추출하고, RoI를 이 feature map상에 매핑하는 RoI projection
를 사용하여 연산량을 크게 줄였으며, 2) 매핑된 feature map상의 각 RoI들은 고정된 크기의 vector로 변환해주는 RoI pooling
를 사용하여 성능과 속도를 모두 개선할 수 있었다.
- RoI projection: 입력 이미지를 통째로 CNN에 통과시켜 feature map을 추출하고, 입력 이미지로부터 따로 추출한 RoI를 feature map 위에 그대로 매핑하는 방법을 사용하여 약 2000번의 CNN 연산을 단 한번으로 줄일 수 있었다.
- RoI pooling: CNN의 fc layer에 입력하기 위해서는 고정된 크기의 벡터가 필요하기 때문에 R-CNN에서는 강제 warping을 사용하였다. 이 방식은 정보 또는 성능의 손실 가능성이 있기 때문에, SPPNet의 아이디어를 차용하여 고정된 크기의 vector로 변환해주는 RoI pooling 방식으로 대체하였다.
Faster R-CNN
Faster R-CNN에서 제안된 RPN(Region Proposal Network)의 동작 과정이다. 지정된 anchor box의 개수가 12개일 경우, 다음 (A,B,C)에 들어갈 숫자
- CNN에서 나온 feature map을 input으로 받음.
- Input feature map에 3x3x512 convolution을 수행하여 intermediate layer 생성.
3-1. Intermediate layer에 AxAxB convolution을 수행하여 binary classification 수행.
3-2. Intermediate layer에 AxAxC convolution을 수행하여 bounding box regression 수행.
- A=1, B=24, C=48
'Study - AI > Object Detection' 카테고리의 다른 글
Object Detection Wrap-Up (0) | 2025.04.05 |
---|---|
Advanced Object Detection (0) | 2025.04.02 |
EfficientNet & EfficientDet (0) | 2025.02.04 |
Neck (0) | 2025.01.27 |
Object Detection Library : MMDetection, Detectron (0) | 2025.01.24 |