본문 바로가기
머신러닝-딥러닝/study

(ch.2) Object Detection 이란? : R-CNN, Fast R-CNN, Faster R-CNN

by 복복씨 2020. 12. 24.

 

 

Object Detection 

Classification : 물체가 무엇인지 식별

+Localization : 전체 이미지에서 어떤 위치에 있는지 , 그 위치를 바운딩 박스라고 하는 물체의 크기를 표현할 수 있는 박스. 그 물체의 중심점을 바운딩박스의 중심점

 

 이 두가지를 다한것을 Object Detection이라고 한다.

Object Detection = 여러가지 물체에 대한 Classification + 물체의 위치정보를 파악하는 Localization

 

1-Stage 와 2-Stage Detectors

처음에 Proposal Reason이라고 하는 보기가 되는 바운딩박스들을 만들어내고 그 안에서 간단한 문제를 푼 다음에 더 세부적으로 그걸 fine하게 regression을 한다던가 그 위치를 조절한다던가, classfication을 한다던가 2-stage로 되어있는 detector들이 있고-> 2-Stage Detectors

그에 반해 한번에 넣었을 때 bounding box의 위치와 classification을 하는 1-Stage Detector 있다.

 

속도의 문제를 보완하기 위해 YOLO, SSD가 나옴. 얘네는 한번에 한다.

 2 -Stage Detector 은 Region Proposal이 좀 오래걸려서 여러가지 방법을 쓴다.

그렇게 해서 보기값들이 나오면 걔네들을 Classification을 하면서 그걸을 fine하게 결과를 내는 식이다.

그에 반면 1-Stage Detector은 Region Proposal과 Classication이 동시에 이루어짐.

 

성능이 좋은것은 빨간색!

 

 

Objects Detection 활용

-우리의 눈과 같은 역할을 한다.

그 물체가 어디에 있고, 무엇이다 라는것을 판단해줌

 

ex) 자율주행 자동차, OCR, CCTV감시, Aerial Image 분석,스포츠 경기 분석, 불량 제품 검출, 무인 점포

실시간으로 object들을detection하고 tracking 할 수 있다.

 

R-CNN

FAST R-CNN, FASTER R-CNN, MASK R-CNN(얘는 segmentation과 관련)

warp(warped)[wɔːrp]동사

  • 1.(원래의 모습을 잃고) 휘다; 휘게 만들다

-input image를 이용해서 selective search를 이용한 여러가지 proposal이 되는 bounding box를 2000개 가량 생성

-그런다음 bounding box에서 각각의 뽑은 region에 warping을 시켜서 어떤 image를 생성을하고 그 warping image를 CNN모델에 집어넣게 된다. 그 CNN모델을 거쳐 그 OUTPUT으로 나오는 단에서 Classification을 하고, regression을 하는과정이 있는데 Classification을 통해 그 물체가 어떤 클래스에 해당하는지 판단할 수 있음. 물체의 위치와 class를 알수있는 Object detection 과정이 있다. 

-Region proposals을 거치고 나서 Classifcation을 하기 때문에 2-stage Detector라고 할 수 있음.

 

1. 물체가 있다 없다에 따라서 bounding box(약 2000개)를 만들어가는 과정, Proposal 하게 되는 과정은 Selective Search를 통해 알게 된다.

selective search

Selective Search:

객체와 주변간의 색감, 질감 차이, 다른 물체에 애워쌓여있는지(Enclosed)여부 파악해서 다양한 전략으로 물체의 위치를 파악할 수 있도록 하는 알고리즘, 경향성이 같은 애들을 groupping, down-up 방식으로 물체위치 추정

Bounding Box들을 Random하게 많이 생성을 하고 이들을 조금씩 merge(합류)해나가면서 물체를 인식

 

Warping Imge:

Region of Proposal를 selective search를 통해서 R-CNN은 구현을 하였고 , 이 selective search로 나온 이 region들이 있으면 이 bounding box들이 다 크기가 다를거아님. 이거는 R-CNN은 warping을 해서 이미지의 크기를 바꿔서 변형시킴 (그럼 물체의 비율이나 다른부분에서 문제가 생기겠지)

 

Bounding Box Regression:

Selective Search Bounding Box가 정확하지는 않기 때문에 물체를 정확히 감싸도록 조정해주는 Bounding BOX ㄱㄱㄱRegression을 사용한다

물체의 x,y좌표(위치),width(너비),height(높이).

P는 선택된 Bounding Box이고 G는 Ground Truth(실제값)

P가 G에 가깝게 되도록 Regression

 

2. region들의 값을 넣어서 얘를 좀 더 feature Extraction 하는 과정

 

3. Classification. Feature가 Extraction이 되면은 CNN에서 나오는 feature를 이용을 해서 Classification을 하게 되는데 Classification의 경우에는 머신러닝에서 사용하는 SVM를 통해 classify를 한다.

왜 SVM 사용? 이 때까지만 해도 Overfitting에 대한 대안방법이 많이 부족했고 Regularization한다던가 drop-out의 전략들보다는 머신러닝기법이 좀 더 로보스터하고, generalization을 늘릴 수 있다고 판단을 한것으로 보임. 

그 때문에 cnn의 결과와 svm 학습이 별도가 되어버리는 치명적인 문제가 생김.

 

*Regularization 은 이렇게 특정 가중치가 너무 과도하게 커지지 않도록 하게 해주는 방식

 

 

RCNN의 단점!

1.오래걸린다!

2. 복잡하다!

Multi-Stage Training을 수행하며 CNN, SVM, Bounding BOX Regression 까지 총 세가지의 모델을 필요로 한다

3. Back Propagation이 안된다.

이 세개의 모델을 따로 사용하기 떄문에 SVM, Bounding box Regression에서 학습한 결과를 cnn을 업데이트 시키지 못한다.