부스트캠프 10주차 Stage Detectors 정리

kimkihoon·2022년 4월 8일
0

부스트캠프 AI

목록 보기
34/49

접근 전략

Object Detection은 크게 one-stage와 two-stage가 존재한다. two stage는 사람의 객체인식 방법과 가장 유사하게 디자인된 방법이다.

1. 객체가 있을 법한 위치를 추정한다.
2. 해당 객체가 무엇인지 추론한다.
이때 객체가 있을 법한 위치를 RoI(Region Of Interest)라고 부른다.

RCNN

Region Proposal Algorithm

  • Extracting Region Proposal : 입력 이미지에서 RoI를 추출하고 객체가 있음직한 위치에 bbox를 친다.

    • Sliding Window : 다양한 scale로 무수히 많은 영역을 검출하는 방법이다. 다만 이미지의 대부분은 배경이기 때문에 정확도 면에서 낮아진다.

    • Selective Search : 이미지의 색 모양 등 특성을 활용하여 추출하는 방법이다. 무수히 작은 영역에서 점차 통합하여 덩어리를 선택한다.

Pipeline

  1. 입력이미지에서 Selective Search를 사용하여 약 2000개의 RoI를 추출한다.
  1. RoI를 전부 동일한 사이즈로 만들어주고 이후 Class 판별 단계에서 CNN을 수행한다. 마지막 FC layer가 고정된 사이즈만 받을 수 있기때문에 반드시 Resize를 해주어야 한다.
  1. n개의 후보영역을 RoI를 CNN에 넣어서 유의미한 feature로 변환한다.
    각 지역마다 4096 Dimension의 feature vector를 추출한다.
  1. CNN을 통과한 feature SVM에 넣어서 분류를 진행한다. 이때 결과값으로 Class 개수 + Background 해서 C+1개의 Confidence Score가 나오게 된다.
  1. CNN을 통과한 feature에 Regression을 통해 bbox를 예측한다. 이때 결과값으로는 bbox의 좌표 x,y,w,h가 나오게 된다.

Training

AlexNet

Domain specific finetuning
Dataset 구성

  • IoU > 0.5: positive samples
  • IoU < 0.5 : negative samples
  • positive samples 32, negative samples 96으로 구성

Linear SVM

Dataset 구성

  • Ground Truth : positive samples
  • IoU < 0.3 : negative samples
  • positive samples 32, negative samples 96

Hard Negative Mining

  • 배경으로 식별하기 어려운 sample들을 강제로 다음 배치의 negative sample로 mining하는 방법이다.

Bbox Regressor
Dataset 구성

  • IoU > 0.06 : positive samples

Loss function

  • MSE loss
    -> width, height, 중심점을 얼마나 이동시킬지에 대한 학습방법

Shortcomings

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

SPPNet

RCNN은 2가지 한계점이 있었다
1. CNN의 입력 이미지 사이즈가 고정되어 있어서 Crop/Resize 했을 경우 정보 손실이 발생한다.
2. RoI마다 CNN을 통과하게 되면 시간이 너무 오래걸린다.

Spatial Pytramid Pooling

  • Binning이라고도 불리는 이 과정은 고정된 size의 feature vector를 정해놓고, BIN의 크기를 조정해가면서 pooling하는 방법
  • Pooling은 Max pooling을 하든, Average pooling을 진행하든 어쨋든 고정된 하나의 feature를 추출한다

ShortComing

먼저 CNN을 통과해서 ROI를 추출하였고,wraping을 하지않고 spp를 사용하여 고정된 효과를 얻었다. 이렇게 함으로써 기존의 RCNN의 문제점을 개선하였다.

Fast R-CNN

RoI Projection, RoI pooling

  • selective search를 사용하여 2000개의 region을 추출하였다.
  • CNN을 통과한 feature map에 해당 RoI를 추출하였다.
  • RoI는 feature map의 비율에 맞게 축소를 하였다.

Hierarchical Training

RCNN의 경우 여러개의 이미지에 존재하는 ROI들을 전부 저장해서 사용한다.
따라서 한 배치에 서로 다른 이미지의 ROI가 포함되는 경우가 있다.
Fast RCNN은 이점을 보완하여 한 배치에 한 이미지의 ROI들만을 포함할 수 있게 했다.

PipeLine

  1. 이미지를 CNN에 넣어서 feature를 추출한다. 이때 CNN을 한 번만 사용한다. RoI Projection을 통해 feature map 상에서 RoI를 계산한다.
  1. RoI Pooling을 통해 일정한 크기의 feature를 추출한다. 이는 고정된 vector를 얻기 위함이다. SPP Net의 Spatial Pyramid Pooling을 사용한다.
  1. 각 RoI들은 Fully Connected Layer에 통과한 후 Softmax Classifier와 Bbox Regressor를 통과한다.

Training

1) multi task loss 사용

  • classification loss + bounding box regression

2) loss function

  • classification: cross entropy
  • BB regressor: Smooth L1

3) Dataset 구성

  • IoU > 0.5 : positive samples
  • 0.1 < IoU < 0.5 : negative samples
  • positive samples 25%, negative samples 75%

4) Hierarchical Sampling

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

ShortComings

selective search는 CPU에서 돌아가기 때문에 완전한 end-to-end라고 볼 수 없다.

Faster R-CNN

PipeLine

  1. 이미지를 CNN에 넣어 feature map을 추출한다. 이때 CNN을 한 번만 사용한다.
  1. RPN(Region Proposal Nework)을 통해 RoI를 계산한다.
  • 기존의 selective search를 대체한다.
  • Anchor Box의 개념을 사용한다.

이미지가 Conv layer를 통과해서 feature map이 나오고 각 feature map의 cell마다 다양한 scale의 비율을 가진 k개의 anchor box가 나오게 된다.
이 anchor box가 객체를 포함하고 있는지 여부를 찾아내야 하고 좌표를 조정할 필요가 있는데 이런 것들을 하는 것을 RPN 이라고 한다.

k개의 anchor box가 있을 때 각 anchor box가 객체를 포함하고 있는지 아닌지를 score로 예측하는 classification head가 있고 위치를 조정하는 coordinates head가 존재한다

Summary

  • 각 anchor box에 대해서 score가 나오게 된다.
  • score가 높으면 이 box는 객체를 포함하고 있을 확률이 높다.
  • score기준으로 정렬해서 Top N개의 anchor box를 선택한다.
  • select된 box를 어떻게 조절할지를 coordinates를 적용하여 width, height 중심점이 변형되어 나오게 된다.

NMS

  • RPN의 과정이다.
  • 유사한 RPN Proposals를 제거하기 위해 사용한다.
  • classs score를 기준으로 proposals들을 분류한다.
  • IoU가 0.7이상인 proposals 영역들은 중복된 영역으로 판단한 뒤 제거한다.
  • N개의 RoI를통해서 1000~2000개의 RoI가 나오게끔 NMS를 수행한다.


threshold를 0.7로 잡았을 때, bb1과 bb2의 IoU는 0.8이 나오게 되므로 같은 객체라고 취급이 되어 bb2를 0으로 변경한다. 이와 같은 과정을 반복하여 유사한 bb를 제거한다.

Training

  1. RPN
    RPN 단계에서 classification과 regressor학습을 위해 positive/negative samples로 구분짓는다.
    Dataset
  • IoU > 0.7 or highest IoU with Ground Truth : positive Sampels
  • IoU < 0.3 : negative samples
  • 나머지 : 학습데이터로 사용하지 않는다.
    Loss
  • Classification : CSE
  • Regression : MSE
  1. Region Proposal이후 Fast RCNN 학습을 위해 positive/negative sampels로 구분짓는다.
    Dataset
  • IoU > 0.5: positive samples → 32개
  • IoU < 0.5: negative samples → 96개
  • 128개의 samples로 mini-bath 구성한다.
    Loss 함수
  • Fast RCNN과 동일하다.

학습과정

RPN과 Fast RCNN 학습을 위해 4 steps alternative training 활용한다.

  • Step 1) Imagenet pretrained backbone load + RPN 학습
  • Step 2) Imagenet pretrained backbone load + RPN from step 1 + Fast RCNN 학습
  • Step 3) Step 2 finetuned backbone load & freeze + RPN 학습
  • Step 4) Step 2 finetuned backbone load & freeze + RPN from step 3 + Fast RCNN 학습

학습과정이 매우 복잡하기 때문에 최근에는 Approximate Joint Training을 활용한다.

0개의 댓글