Object Detection
- Object Detection: 사물 각각의 Bounding Box (Bbox) 위치와 Category를 예측
- Bounding Box: {x0 , y0 , x1 , y1 } 예측, Category: 사물의 class label 예측
- Architecture: Backbone (CNN) + Decoder (Detection Head)
- Image Classification vs Object Detection
- Image Classification: 이미지 내에 어떤 물체가 있는지 분류
- Object Detection: 이미지 내의 각 Bbox 마다 객체의 클래스 분류 및 Bbox의 위치 추론 - Localization (Bbox Regression)
- Localization: Bounding Box Regression으로도 불리며, 각 Bounding Box의 {x0 , y0 , x1 , y1 } 예측
- Regression을 수행하며, Feature Map에서 추출된 RoI의 경계 상자 위치 및 크기를 조정 - 2-stage Detector
- Region Proposals 및 Feature Extractor를 거치며 object detection 수행
- Region Proposals: 다양한 크기와 모양의 Bounding Box로 물체의 위치를 제안
- Feature Extractor: 제안한 Region (Bounding Box)에 대하여 물체의 특성 추출 - 1-stage Detector
- Region Proposals없이, Feature Extractor만을 이용한 object detection 수행
- Feature Extractor: 입력 이미지를 특성으로 변환, 해당 특성을 이용하여 추후 Classification 및 Bounding Box를 예측하는 작업 수행
Dataset
- COCO (Common objects in context)
- 91개의 클래스 이루어진 사물 및 동물 모음
- 최대 640 x 480 RGB 이미지
- 330K 이미지 데이터
- 총 1.5M개의 사물이 Annotation 되어 있음 - Pascal VOC
- 20개의 클래스 이루어진 사물 및 동물 모음
- 500 x 375 RGB 이미지
- 11K 이미지 데이터
- 27K개의 사물이 Annotation 되어 있음 - KITTI
- 8개의 클래스 이루어진 자동차 및 사물 모음
- 1248 x 384 RGB 이미지
- 15K 이미지 데이터
- 80K개의 사물이 Annotation 되어 있음
성능평가 방법
- Intersection of Union (IoU)
- Average Precision (AP)
- Precision 과 Recall은 Trade-Off 관계에 있음
- Precision과 Recall Curve의 넓이를 계산: AP
-> Precision과 Recall이 둘다 적절히 좋아야 AP가 높음
2-stage Detector
- R-CNN
- 2-stage Detector로 Region Proposals 단계를 수행
- R-CNN의 개선된 모델인 Fast R-CNN, Faster R-CNN 모델의 기반이 됨
- CVPR 2014에 출판된 논문으로, 2-stage Detector 분야의 초기 모델
- Region Proposals
- Selective Search 기법으로 2000개의 RoI (Region of Interests)를 추출
- Selective Search: 인접한 영역(Region)끼리 유사성을 측정해 큰 영역으로 차례대로 통합
- Warped Region
- 각 RoI (Region of Interest)에 대하여 동일한 크기의 이미지로 변환
- Backbone
- Region Proposals마다 각각의 Backbone (CNN)에 넣어서 결과를 계산
- Output
- SVM: 각 Region Proposals마다 SVM으로 Class 분류 결과 예측
- Bbox Regression: Backbone의 Feature를 Regression으로 Bounding Box 위치 예측
- Limitation
- CPU 기반의 Selective Search 기법으로 인해 많은 시간이 필요
- 2000개의 RoI로 인하여, 2000번의 CNN 연산이 필요하며 많은 시간이 필요 - Fast R-CNN
- ICCV 2015에 출판된 논문으로, R-CNN 모델에 비해 속도와 성능 면에서 큰 개선을 이룸
- CNN
- Input Image를 한 번만 CNN에 넣어 Feature Map 생성
- Region Proposals
- Selective Search 기법으로 2000개의 RoI (Region of Interests)를 추출
- 생성된 RoI 각각을 RoI Projection 수행
- RoI Pooling
- 각 RoI 영역에 대하여 Max Pooling을 이용
- 고정된 크기의 Vector 생성
- Output
- Pooling layer 와 FC layer를 거쳐, Feature Vector 생성
- Softmax Classifier: 각 RoI의 Class를 추론
- Bbox Regressor: 각 RoI의 Bounding Box 크기 및 위치를 조정함
- Limitation
- CPU 기반의 Selective Search 기법으로 인해 처리 속도 느림
- RoI Pooling 정확도 떨어짐 - Faster R-CNN
- NIPS 2015에 출판된 논문으로, R-CNN과 Fast R-CNN 모델에 비해 속도와 성능 면에서 큰 개선을 이룸
- Fast R-CNN + Region Proposal Network(RPN)의 구조
- RPN으로 기존 CPU연산을 GPU 연산으로 변환
- Region Proposal Network (RPN)
- Feature Map을 기반으로 물체의 위치 예측
- k개의 Anchor Box를 이용
- Sliding Window 방식으로 Feature Map에 적용
- Training Process
- Preprocessing
- Model
- Faster R-CNN 모델을 초기화
- 가중치(Weight) 설정
- Loss
- 각 위치에서 Anchor Box마다 GT와 IoU 비교: Positive은 0.7 이상, Negative는 0.3 이하
- Positive Anchor: Classification Loss + Regression Loss , Negative Anchor: Classification Loss
- Positive Anchor는 객체가 있는지 여부를 분류
- Negative Anchor는 객체가 없는지 여부를 분류
- MSE를 사용하며, 예측된 객체 위치와 실제 객체 위치의 차이 측정
- Test Process
- Preprocessing
- Model
- Non-Maximum-Suppression (NMS)
- 중복된 경계 Bbox를 제거하여 최종 객체 감지 결과를 정리하고 정확도를 높이는 기술
- 각 클래스 마다 Score가 가장 높은 박스와 IoU 가 특정 기준 이상 (e.g. 0.7)인 박스 제거
- 남은 박스들에 대해서 동일 과정 반복
- Prediction
- Prediction: 각 객체의 위치 (바운딩 박스)와 클래스 레이블에 대한 예측
- 모델의 출력으로부터 객체 감지의 임계값(예: 0.5) 초과하는 객체만을 최종 감지
Limitation & Future work
- 2-stage Detector로 연산량이 많아, 실시간 사용에 부적합
-> 1-stage Detector인 YOLO는 실시간 사용 가능
1-stage Detector
- Region Proposals없이, Feature Extractor만을 이용한 Object Detection 수행
- Feature Extractor: 입력 이미지를 특성으로 변환, 해당 특성을 이용하여 추후 Classification 및 Bounding Box를 예측하는 작업 수행
- 간단한 파이프라인: 2-stage Detector와 달리 Region Proposals가 없음
- 빠른 속도: 2-stage Detector에 비해 연산이 효율적이며, 실시간으로 사용가능
- You Only Look Once (YOLO v.1)
- CVPR 2016에 출판된 논문으로, 1-stage Detector 분야의 초기 모델
- Single Shot Architecture: YOLO는 객체 감지를 위한 단일 신경망 아키텍처를 사용
- 이미지를 그리드로 나누고, 그리드 셀 별로 Bounding Box와 해당 객체의 클래스 확률 예측
- Grid Image
- 이미지를 SxS grid 이미지로 분할
- 객체의 중심 좌표가 특정 셀 안에 있으면 그 셀의 예측 박스 해당 객체를 검출해야함
- 각 셀은 Bounding Box와 Confidence, Class Probability Map을 예측하는데 사용
- Backbone
- 학습 데이터의 이미지가 YOLO 모델로 입력
- Backbone은 CNN으로 구성
- 백본을 통과한 이미지에서 Feature Map 생성
- Bounding Box + Confidence
- 각 셀마다 Bounding Box를 예측
- 각 셀은 여러 Bounding Box를 나타낼 수 있음
- 이후, Bounding Box의 Confidence를 예측
- Class Probability Map
- 각 셀마다 Class의 조건부확률을 예측
- Output
- 예측한 Bbox, Confidence, Class Probability로, Object Detection 결과 산출
- 낮은 Confidence의 Bbox를 지움
- 각 클래스마다 Non-Maximum Suppression을 진행
- 하나의 Bbox는 하나의 물체를 나타내게 함
- Training Process
- Preprocessing
- Model
- YOLO 모델을 초기화
- 가중치(Weight) 무작위 설정
- 바운딩 박스의 위치와 객체 클래스를 예측
- Loss
- Test Process
- Preprocessing
- Model
- Prediction
- Prediction: 바운딩 박스의 좌표, 객체 클래스, 및 해당 객체에 대한 신뢰도 점수예측
- NMS로 중복된 상자를 제거하고, 신뢰도 점수가 가장 높은 상자를 선택
'Study > 머신러닝' 카테고리의 다른 글
CV Metrics (0) | 2025.01.06 |
---|---|
Semantic Segmentation (0) | 2025.01.03 |
Image Classification (0) | 2025.01.03 |
CNN (0) | 2025.01.03 |
컴퓨터 비전 모델 구조 (0) | 2024.12.23 |