[9주차] 2-stage Detector

Soonyoung Hwang·2022년 11월 18일
0

네이버 부스트캠프

목록 보기
9/14

1. R-CNN

  • 딥러닝을 이용해 detection을 시도했던 최초의 방법
  • 이 후의 딥러닝 기반 object detection은 RCNN의 단점을 보완하는 방식으로 연구되었다.

방법

  1. Selective Search를 통해 약 2000개의 RoI(Region of Interest) 추출

    Selective Search - 검출을 원하는 후보가 있을 것 같은 영역에 대한 guide를 설정한 뒤 그 영역을 중심으로

    exhaustive search를 하여 최종적으로 후보 영역을 확정한다.

  2. RoI의 크기를 조절해 모두 동일한 사이즈로 변경 : Wraping

    마지막 FC layer의 입력사이즈가 고정이므로, 필수적으로 수행했다.

    이 과정에서 이미지 손실이 발생

  3. RoI를 CNN에 넣어 feature를 추출

    각 region마다 4096-dim feature vector 추출 (2000x4096)

    Pretrained AlexNet 구조 활용

    AlexNet 마지막에 FC layer 추가

  4. Classification : feature를 SVM을 통해 분류 : (C+1) + confidence score

    Bound 예측 : feature를 regression을 통해 분류

Training Dataset - Domain Specific Finetuning

  1. AlexNet : 0.5 / 0.5 / 32 + 96 samples
  2. Linear SVM : GT / 0.3 / 32 + 96 samples
  3. Bbx regressor : 0.6

단점

  1. 2000개의 regions을 각각 CNN 통과 → 너무 오래걸림
  2. Warping → 성능 하락
  3. CNN, SVM, Bb Regressor 다 따로 학습
  4. End-to-End : X

2. SPPNet

  • RCNN의 단점을 해소하기 위해 conv 먼저 진행 후 SPP 구조를 통해 예측
  • Spatial Pyramid Pooling Layer를 모두 하나의 fixed-length representation으로 변환함으로써 warping이 필요없어짐으로써 데이터 손실을 방지했다. = 성능하락 방지

3. Fast R-CNN

방법

  1. 이미지를 CNN에 넣어 feature 추출 → CNN 한 번만 사용
  2. RoI Projection 을 통해 feature map 상에서 RoI 를 계산

  1. RoI Pooling을 통해 일정한 크기의 feature가 추출 됨

→ 고정된 vector를 얻기 위해

→ level1의 SPP 사용했다고 볼 수 있다.

  1. Fully Connected Layer 이후 Softmax Classifier와 Bb Regressor를 함께 학습

    multi task loss 사용

    classification loss + bounding box regression

    (cross entropy) (Smooth L1)

특징

  1. R-CNN의 경우 이미지에 존재하는 RoI를 전부 저장해 사용

    → 한 배치에 서로 다른 이미지의 RoI가 포함 됨

  2. Fast R-CNN의 경우, 한 배치에 한 이미지의 RoI만을 포함

    → 한 배치 안에서 연산과 메모리를 공유할 수 있음

4. Faster R-CNN

  • Fast R-CNN + RPN
  • End-to-End

방법

  1. 이미지를 CNN에 넣어 feature 추출 → CNN 한 번만 사용

  2. RPN을 통해 RoI 학습 및 계산

    → selective search 대체

    → anchor box (각 셀마다 다른 scale, 비율의 후보 박스들을 미리 정의해 놓은 것)

    1. CNN에서 나온 feature map을 input으로 받음

    2. 3x3 conv 수행(x512 channel) 하여 intermediate layer 생성 : w x h x 512

    3. intermedia layer
      → 1 x 1 conv 수행 → binary classification 수행 : 2 x 9 = 18 channel
      → 1 x 1 conv 수행 → bb regression 수행 : 4 x 9 = 36 채널 생성

    4. NMS 통해 유사한 RPN Proposals 제거

      class score를 기준으로 proposal 정렬(내림차순)

      IoU가 0.7 이상인 영역들은 중복으로 판단해 제거

    5. data : 0.3 이상 0.7 미만 은 데이터로 안 씀

    6. Loss 함수

  3. Region proposal 이후 Fast RCNN 학습

    • 4 step alternative training → 매우 복잡
    • 최근에는 Approximate joint Training 활용
profile
https://github.com/soonyoung-hwang

0개의 댓글