object detection task, SPP Net, R-CNN, YOLO 간단하게 알아보기

1. Detection

 

이미지 안에서 원하는 물체에 대한 bounding box를 찾는 문제

 

가장 먼저 나온 해법으로 R-CNN이 있다

 

이미지 안에서 Selective search? 등으로 2000개 정도 region을 추출함.

 

적절하게 동일한 크기로 바꾸고 deeplearning(AlexNet)을 이용하여 feature map을 각각 추출

 

그러면 각각에 대하여 svm등으로 무엇인지 분류하면 되겠지

 

 

 

2. SPP Net

 

처음 나온 R-CNN은 딱 보면 문제가 많았다.

 

예를 들면 2000개 Bounding box 찾는것도 일이고 ,

 

1개의 input 이미지에 대해 2000개 각각을 deep learning하니까

 

2000번 돌려야 1개의 input 이미지에 대해 결과를 얻는다는 사실에 2000번 돌리는 것도 문제야

 

그래서 SPPNet은 2000번 돌리지말고 1번만 돌리자는 것이 핵심

 

bounding box는 일단 선택해두고 전체 이미지를 deeplearning 1번하여 featuremap을 뽑음

 

그러면 뽑은 featuremap에서 bounding box 부분의 tensor만 뽑아오면 된다.

 

그래서 각각에 대해 분류하면 되지않겠는가?

 

 

 

 

3. Fast R-CNN

 

SPP Net도 결국에 마지막에 텐서를 여러번 뽑는 것이 문제임

 

bounding box를 일단 뽑아두고 deeplearning으로 전체 이미지를 1번에 넣어서 feature map을 뽑는다.

 

각 bounding region에서 ROI Pooling을 통해 고정된 길이의 feature vector을 뽑는다.

 

이것은 각 region의 class 속성과 bounding box의 위치 정보를 갖는다.

 

분류기 2개에 동시에 집어 넣어 bounding box가 어디에 속하는지 class를 분류하고

 

bounding box의 적절한 위치가 어디인지 regressor한다.

 

 

 

 

4. Faster R-CNN

 

위를 보면 알지만 결국에 지금까지 알고리즘은 bounding box를 미리 골라놓는 것이 문제임

 

Region proposal network를 통해 bounding box의 적절성을 학습시키자.

 

왜냐하면 detection 문제는 bounding box를 탐지하는건데 내가 먼저 selective search로 이 정도 된다고 알려주는게 무슨 소용인가

 

Region proposal network에 Fast R-CNN을 합친것이 Faster R-CNN이다.

 

미리 정의해놓은 SIZE 정도의 후보군 박스(anchor box)를 준비는 해놓는다.

 

그래서 그것을 토대로 이미지의 특정 영역에 물체가 있는지 말지를 학습한다. 이것이 Region proposal network가 하는 일.

 

 

 

 

무슨 물체인지 구별하는 것은 뒤 Fast R-CNN이 하는일이다.

 

 

그래서 Region proposal network는 각각의 미리 정한 anchor box에 대해 각 box가 물체를 포함하는지 아닌지,

 

즉 쓸모있는지 여부와 bounding box를 어떻게 움직여야 물체를 적절하게 포함할 수 있는지의 여부를 포함하는 속성을 뱉어낸다

 

 

 

그걸 잘 고르면 이제 Fast R-CNN 동작시킴

 

5. YOLO

 

Bounding box를 찾는 것과 class를 분류하는 일을 동시에 하는 것이 핵심이다.

 

그러니까 이미지 1장을 투입하면 bounding box와 무슨 물체인지 class를 분류하는 일을 그냥 동시에 딱 해버리는 것.

 

 

 

input 이미지를 s*s의 grid로 나누고 각 grid cell에 물체의 중앙부가 들어오면 그 cell은 적어도 detection에 쓸모가 있는 것임.

 

 

 

그 쓸모있는 cell은 물체의 bounding box와 물체의 종류를 예측할 수 있음

 

각 cell이 b개의 bounding box를 예측한다.

 

이것은 bounding box의 크기속성과 bounding box에 무슨 물체가 있을지 없을지에 대한 여부이다.

 

그리고 동시에 각 cell이 c개의 class에 대해 속할 확률값을 제공한다.

 

 

 

따라서 이미지 1장을 투입하여 각 cell이 grid크기와 cell의 bounding box 속성과 class 분류 확률을 포함하는 vector를 뱉어낸다

 

 

 

근데 요새는 박스 크기를 지정해주는게 대세라는데? 그러면서 version2,3,.... 발전하기 시작함

TAGS.

Comments