r-cnn의 과정

 

1. 이미지를 입력 받는다

2. selective search 를 통해 region proposals (물체가 있을 것이라고 예상되는 영역)을 2000개 추출한다.

3. 추출한  region proposal을 고정된 크기의 이미지로 warp한다. (4.에서 추출될 feature vector의 길이를 통일 시키기위함)

4. warp한 이미지를 cnn에 넣어 feature vector를 추출한다.

5. feature vector를 SVM에 넣어 어떤 이미지일지 classification한다.

 

크게 나누면

1. 물체가 있을 만한 영역 (RoI)을 찾는다.

2. 영역에 해당하는 이미지가 무엇인지 판단한다.

 

이렇게 두 stage로 나뉘게 되는데 이런 detector를 2-stage detector라고 하며 r-cnn계열이 대표적이다

반면에 1-stage detector은 YOLO가 대표적이다.

 

 

 

다시 rcnn으로 넘어와 하나하나의 과정을 디테일하게 살펴보자

 

1. Selective search 

 

https://www.geeksforgeeks.org/selective-search-for-object-detection-r-cnn/

Region proposal 단계에서 물체가 있을만한 영역을 찾는 기법이다.

 

1. Efficient GraphBased Image Segmentation 이라는 기법을 통해 초기 영역을 생성한다

2. 작은 영역들을 유사도가 비슷한 영역끼리 합쳐 큰영역으로 통합한다.

 

Selective search는 위와 같은 과정을 반복하여 총 2000개의  roi를 찾아낸다.

이는 추후에 사용되지않는 방법이기 때문에 자세히 설명하지 않고 넘어간다.

이후 같은 크기로 warp한다.

 

2. CNN

alex net
warp

 

227*227 크기로 warp 하여 cnn모델에 넣는다. 모델은 alex net의 구조를 거의 따와 finetuning 한다.

 

인풋은 train image중에 selectiove search의 결과물을 crop한 것이다.

이때에 iou가 0.5이상인경우 positive, 즉 물체이다. 아닐경우 negative, 즉 배경이라고 전제하고 학습하게된다.

이렇게 데이터셋을 구축후에 alexnet을 기반으로 finetuning한다

 

이 crop시에 원래의 값대로 crop하는 것보다 padding을 16pixel만큼 줘서(원래보다 16pixel씩 w,h를 더 늘렸다) crop한것이 더 성능이 높았다고 한다. (warp이미지의 1행이 without padding 2행이 padding)

 

아직 GAP나 Roi pool, FCN이 나오지 않은 시기이기때문에 CNN에서 나오는 feature vector(4096)의 크기를 일치시키기 위하여 warp한다.

 

fine tuning 시에 k 종류의 object를 인식한다하면 k+1개를 학습하게 되는데 +1은 배경이다 측 k개에 해당하지 않는경우이다.

 

이 finetuning 완료된 cnn을 통해 softmax이전의 4096 길이의 feature vector를 얻는다.

 

3. SVM

 

위의 과정을 거쳐 4096크기의 vector를 통해 classification을 진행한다.

총 k개의 오브젝트가 있다면 배경을 포함해 k+1개의 linear SVM을 학습한다. (이진분류)

 

SVM의 학습시에도 selective search의 결과물을 학습에 이용하는데 

이때 원래 박스값 ground truth만을 positive로 사용하고 IOU 0.3미만인 값을 negative로 사용한다.

 

학습된 SVM에 2000*4096을 입력하여 각 region의 class와 confidence를 얻는다.

 

cnn에서 softmax를 사용하지 않은 이유는 단순히 cnn으로 나온 벡터를 통한 svm의 성능이 좋아서였다. 

 

 

 

4. Bounding box regression

 

https://lilianweng.github.io/posts/2017-12-31-object-recognition-part-3/

bounding box의 위치를 실제와 가깝게 만들기 위하여 bounding box regressor을 이용한다 G 가 ground truth, p가 예측 bounding box이며 t 는 이동량이다.

 

cnn을 통과한 4096의 벡터를 bbr에 통과시켜 x,y,w,h를 얻는다.

 

이후 NMS를 거쳐 최선의 bb를 출력한다.

 

 

R-CNN은 당시의  엄청나게 좋은성능을 가졌지만 여러 단점을 가진다

1. 2000번의 cnn연산

2. cnn, svm, brr 따로 학습 및 예측

3. selective search의 느린속도

 

위의 것을 보완해서 fast R-CNN 이 나오게된다

'CV > object detection' 카테고리의 다른 글

[CV] fast-R-cnn  (0) 2022.06.01
[cv] SPP-net  (0) 2022.06.01
[cv] object detection 기본용어  (0) 2022.05.25

+ Recent posts