Study/머신러닝

Object Detection

김 도경 2025. 1. 3. 15:17
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