본문 바로가기
딥러닝 머신러닝 데이터 분석/BoostCampAITech

[Lv2 P-Stage] 2 stage Detectors

by SteadyForDeep 2021. 10. 6.
반응형

R-CNN

- 객체가 있을만한 후보위치(Region of Interest)를 기존의 알고리즘으로 예측

- 예측된 후보 위치를 crop 후 warpping

- warpping 된 이미지를 분류

- sliding window 는 너무 많은 경우의 수 -> Selective search 를 이용해서 후보 추출

 

- 아래의 step으로 진행

1) 입력 이미지 받기

2) Selective search 적용 : 하나의 이미지에서 2000개의 RoI 추출

3) 동일한 size로 warpping : 분류기의 마지막에 fc레이어에서는 고정된 사이즈를 받아야함

4) warpping된 RoI를 CNN 에 넣어 feature 를 추출

5) 추출된 feature를 SVM에 넣어서 분류 진행

6) regression을 진행해서 bbox를 보정하는 값을 예측

 

- AlexNet fine tuning

  - 적용하고자 하는 Domain에 대해서 finetuning

  - RoI와 Ground truth 의 IoU 계산

    - 0.5 이상이면 positive sample 미만이면 negative sample

    - positive 32, negative 96 = 128개의 이미지 1 batch

    

SPPNet

- crop and warpping 하는 과정에서 발생하는 정보 왜곡을 최소화 함

- Spatial Pyramid Pooling 을 도입

  - target size 를 먼저 정한 후에 그 size 만큼 등분하여 만들어진 영역을 pooling

- 여러가지 Bin size를 통해서 pooling 을 각각 시도하고 그에 따라 feature vector를 생성

 

Fast R-CNN

Pipeline

1) 이미지를 VGG16에 넣고 feature map 추출

2) 원본 이미지의 selective search RoI를 feature map에 projection 해 줌

  - feature map이 원본의 1/10 이라면 RoI를 같은 비율로 줄여서 맵핑

3) feature map 상에서 얻어진 RoI 를 고정된 크기의 feature vector 로 변환해줌

  - SPP 를 이용하지만 target size를 7x7 하나만 사용하게 됨

4) softmax classifier 와 bounding box regressor를 통과하여 결과를 얻음

  - class의 수 + 배경(unknown)

 

- multi task loss : softmax classifier 와 bounding box regressor

  - Classification : Cross entropy

  - BB regressor : Sommoth L1 (outlier에 덜 민감하게 반응함)

- Dataset

  - 0.5 < IoU : positive samples

  - 0.1 < IoU < 0.5 : negative samples

  - 이렇게 나눈 데이터들을 p-sample 25% n-sample 75% 로 구성

 

- Hierachical sampling (이해가 잘 안된다 -> 논문 볼 것)

  - 한 batch에 한 이미지의 RoI만을 포함함

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

 

-> 거의 End-to-End로 동작하지만 아직 완벽한 E2E 라고 볼 수는 없음

 

Faster R-CNN

- Selective search 를 제거하고 RPN 이 selective search를 대체할 수 있도록 했음

 

Pipeline

1) CNN으로 feature maps 추출

2) RPN을 통한 RoI 계산

  - Selective search 대체 -> Anchor box 사용

  - SPP 는 임의의 위치에 있는 객체와 임의의 크기를 가지는 객체를 맞추기 힘들다

  - 중앙을 맞춘 후 여러가지 미리 정의된 박스를 사용하는 방식이 anchor box

  - RPN은 anchor box들이 객체를 얼마나 가지고 있는지 근거를 주고 box를 미세 조정하도록 하는 네트워크

  - 각 픽셀별로 9개의 anchor box가 객체를 포함하는가?

  - 각 픽셀별로 9개의 anchor box를 어떻게 조정해야하는가?

3) NMS

  - 중복된 box를 제거하는 과정

  - 각각의 추론된 box에 대한 IoU를 측정

    -> IoU가 가장 높은 box A를 선정

    -> A에 대하여 나머지 박스에 대한 IoU추론

    -> A와 너무 많이 겹치는 박스는 class를 0으로 바꿈

 

RPN training

- RPN 단계에서 

  - IoU > 0.7 or 어떤 ground truth와 가장 높은 IoU를 가지는 박스 : positive samples

  - IoU < 0.3 : negative samples

  - 0.3 <= IoU <= 0.7 : 학습에 사용하지 않음

Faster R-CNN training

 

반응형

댓글