코딩하는 해맑은 거북이

[컴퓨터비전] Object Detection - 2 Stage Detectors 본문

AI

[컴퓨터비전] Object Detection - 2 Stage Detectors

#CJE 2023. 5. 2.
본 게시물의 내용은 '부스트캠프 AI Tech - Object Det(송원호)' 강의를 듣고 작성하였다.
해당 글은 Object Detection - 2 Stage Detectors인 아래의 4가지를 다룬다.
📌 R-CNN
📌 SPPNet
📌 Fast R-CNN
📌 Faster R-CNN

 

앞서 해당 블로그에서 기존에 Object Detection의 Matrix를 정리한 내용이 있어 링크를 첨부한다.

 

📌 R-CNN

🔷 Extract Region Proposals

- Sliding Window

고정된 크기의 window를 이미지 상에서 슬라이딩 시키면서 모든 영역을 탐색하는 방법 (요즘은 잘 사용되지 않음)

 

- Selective Search

최소 단위의 픽셀 별로 각 영역을 나눈 후, 비슷한 인접 영역들을 합치는 방법

더보기

- Selective Search에서 사용하는 segmentation 방법
https://blog.naver.com/laonple/220925179894
- Greedy Algorithm 사용한 영역 병합 방법
https://blog.naver.com/laonple/220930954658

 

🔷 학습 방법

  1. 입력 이미지 받기
  2. Selective Search를 통해 약 2000개의 RoI(Region of Interest)를 추출
  3. RoI(Region of Interest)의 크기를 조절해 모두 동일한 사이즈로 변형
    • CNN의 마지막인 FC layer의 입력 사이즈가 고정이므로 이 과정 수행
  4. RoI를 CNN에 넣어, feature를 추출
    • 각 region마다 4096-dim feature vector 추출 (2000x4096)
    • Pretrained AlexNet 구조 활용
      • AlexNet 마지막에 FC layer 추가
      • 필요에 따라 Finetuning 진행
  5. 분류와 회귀 진행
    • CNN을 통해 나온 feature를 SVM에 넣어 분류 진행
      • Input : 2000 x 4096 features
      • Output : Class (C+1) + Confidence scores => C+1 : 클래스 개수(C개) + 배경 여부(1개)
    • CNN을 통해 나온 feature를 regression을 통해 bounding box를 예측

 

🔷 단점

1) 2000개의 Region을 각각 CNN 통과
2) 강제 Warping, 성능 하락 가능성
3) CNN, SVM classifier, bounding box regressor, 따로 학습
4) End-to-End X

 

 

📌 SPPNet

 >기존 R-CNN의 한계점
  • Convolution Network의 입력 이미지가 고정되어 있음
    이미지를 고정된 크기로 자르거나(crop) 비율을 조정(warp)해야함
  • RoI(Region of Interest)마다 CNN 통과
    하나의 이미지에 대해서 2000번 CNN을 통과 해야함 → 시간이 오래 걸림

SPPNet은 R-CNN과 달리 입력 이미지가 먼저 CNN을 거치고 RoI를 추출한 후, 각 RoI의 크기를 고정된 크기의 벡터로 변환하여 FC Layer로 전달한다.

 

🔷 Spatial Pyramid Pooling

Spatial Pyramid Pooling은 서로 크기가 다른 RoI들을 고정된 크기의 vector로 변환해주는 역할을 한다.

아래 그림과 같이 각 RoI를 (4, 4), (2, 2), (1, 1) 크기의 영역으로 나눠서 각 영역에 대해 pooling을 진행한다.

 

🔷 단점

1) 2000개의 Region을 각각 CNN 통과 (해결!)
2) 강제 Warping, 성능 하락 가능성 (해결!)
3) CNN, SVM classifier, bounding box regressor, 따로 학습
4) End-to-End X

 

 

📌 Fast R-CNN

🔷 학습 방법

  1. 이미지를 CNN에 넣어 feature 추출 (CNN을 한 번만 사용) → VGG16 사용
  2. RoI Projection을 통해 feature map 상에서 RoI를 계산
  3.  RoI Pooling을 통해 일정한 크기의 feature가 추출
    • 고정된 vector얻기 위한 과정
    • SPP 사용
      • pyramid level: 1
      • Target grid size: 7x7
  4. Fully connected layer 이후, Softmax Classifier과 Bounding Box Regressor
    • 클래스 개수: C+1개 → 클래스 (C개) + 배경 (1개)

 

🔷 Hierarchical sampling

R-CNN의 경우 이미지에 존재하는 RoI를 전부 저장해 사용하였다. 즉, 한 배치에 서로 다른 이미지의 RoI가 포함된다.
Fast R-CNN의 경우 한 배치에 한 이미지의 RoI만을 포함한다. 즉, 한 배치 안에서 연산과 메모리를 공유할 수 있다.

 

🔷 단점

1) 2000개의 Region을 각각 CNN 통과 (해결!)
2) 강제 Warping, 성능 하락 가능성 (해결!)
3) CNN, SVM classifier, bounding box regressor, 따로 학습 (해결!)
4) End-to-End X

 

 

 

📌Faster R-CNN

🔷 학습 방법

  1. 이미지를 CNN에 넣어 feature maps 추출 (CNN을 한 번만 사용)
  2. RPN을 통해 RoI 계산
    • 기존의 selective search 대체
    • Anchor box 개념 사용

 

🔷 Region Proposal Network (RPN)

  1. CNN에서 나온 feature map을 input으로 받음. (𝐻: 세로, 𝑊: 가로, 𝐶: 채널)
  2. 3x3 conv 수행하여 intermediate layer 생성
  3. 1x1 conv 수행하여 binary classification 수행
    • 2 (object or not) x 9 (num of anchors) 채널 생성
    • 4 (bounding box) x9 (num of anchors) 채널 생성

 

🔷 NMS

  • 유사한 RPN Proposals 제거하기 위해 사용
  • Class score를 기준으로 proposals 분류
  • IoU가 0.7 이상인 proposals 영역들은 중복된 영역으로 판단한 뒤 제거

🔷 단점

모두 해결

 

 

 

<Summary>

 

Comments