📌 이 글은 권철민님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 정리한 내용입니다.


목차

  1. RCNN(Region with CNN features)
    1. Region Proposal 방식 적극 도입
    2. Region Proposal 에서 예측이 된 Object를 CNN 모델에 적용
  2. RCNN 과정
    • Stage 1. Region Proposal 단계 (Selective Search) : 2000개의 (Object가 있을만한)Region 영역 Proposal
    • Stage 2. CNN Detection 단계 : 이미지가 Feature Extractor를 통과해 Object 클래스를 최종 분류하고 Bounding Box 회귀 문제를 수행하는 단계
  3. RCNN의 문제점

RCNN(Region with CNN features)

RCNN 모델은 Region Proposal을 Selective Search 방법으로 구현한 모델이다.

 


RCNN 과정

Two-stage 모델로 분류된다.

 

Stage 1. Region Proposal을 하는 단계

Stage 2. 이미지가 Feature Extractor를 통과해 Object 클래스를 최종 분류하고 Bounding Box 회귀 문제를 수행하는 단계

 


Stage 1. Region Proposal 단계

  1. Selective Search를 통해 약 2000개의 객체가 있을만한 영역을 추천
  2. 2000개의 각 Region Proposal 마다 하나씩 Feature Extractor로 입력됨
  3. 2000개의 Region Proposal들의 사이즈를 동일하게 맞춰주어야 한다. 
  4. VGG, Resnet과 같은 Pretrained된 Feature Extractor에는 입력받는 사이즈가 고정되어 있기 때문
  5. 따라서 Region Proposal을 자르거나(Crop) 찌그러뜨리는(Warp) 작업을 하고 넣어줌

Stage 2. Classification

  1. Region Proposal을 기반으로 입력된 이미지에서 객체가 어떤 물체를 나타내는지 클래스를 분류함
  2. Feature Map을 Flatten 하고 Dense layer(FC layer)를 추가
  3. Softmax layer와 SVM Classifier가 둘다 존재함
  4. 먼저 Softmax layer로 객체가 어떤 클래스로 분류되는지에 대한 확률 Score를 얻음 (확률 Score로파라미터 학습)
  5. 그 후 SVM Classifier탐지된 객체의 클래스가 무엇인지 최종 분류

 

 

탐지된 객체의 클래스가 어떤 물체인지 분류까지 완료되면, 이제 이 객체가 어디에 있는지 Detection 하기 위해 객체 주변에 사각형을 그려주는 Bounding Box의 좌표를 찾아야 함


Stage 2. Bounding Box Regression

 

최적의 좌표를 찾기 위해 Regression을 사용한다.

최적의 좌표를 찾는 과정도 Loss 함수를 이용한 Back Propagation을 진행한다.

 


 

Ground Truth Selective Search Predicted중심 간의 거리, 높이와 너비가 최소가 되어야 한다. 그렇게 모델이 만들어져야 한다.

 


Bounding Box Regression 으로 구해야 하는 것은 dx(p)dy(p), exp(dw(p))exp(dh(p)) 이다. 

여기서 dx(p)dy(p)예측 좌표의 중심(px, py)에서 실제 좌표의 중심(gx,gy)으로 얼마나 이동시켜야 하는지에 대한 함수이다.

그리고 exp(dw(p))exp(dh(p))예측 Bounding Box의 너비(pw)와 높이(ph)를 얼마나 scaling 해야하는지에 대한 함수이다.

 

 

g에 대한 예측 값인 g^를 위와 같이 나타낼 수 있다.

dx(p) : 너비에 대해 곱해지는 weight 값

dy(p) : 높이에 대해 곱해지는 weight 값

 

g(ground truth) 와 예측값 g^의 차이가 최소가 되도록 해야 한다!!!

 


이제 타겟이 되는 변수, t라는 변수에 대해 정의하자면, 이  p(predicted)가 g(ground truth)로 옮기는 이동량을 의미한다.

결국 t는 위에서 우리가 찾아야 하는 모든 에 대한 Label이라고 할 수 있다. 따라서 t라는 이동량에 대해 정의를 하게 되면 다음과 같다.

 

(ground truth - predicted)인 tx가 최대한 0이 되도록 해야 한다. 값이 너무 크니 너비(width)로 정규화 한 것

 


이제 Label이라고 할 수 있는  값들에 대해 정의를 했으니 이 t 값들과 우리가 학습시키려는 함수들 d(p) 간의 차이를 0으로 만들어주도록 하면 된다. 아래는 t 와 에 대한 Loss 함수 수식이다.

 

Loss 함수의 수식 끝에는 모델의 일반화를 위한 정규화 항인 L2 norm을 적용한 것을 볼 수 있다. 그리고 논문에서 λ 의 적절한 값으로 1000을 추천하고 있다.

 

 


RCNN의 문제점

 

  1. 하나의 Region Proposal 마다 Feature Extractor에 넣어주어 Object Detection 진행
    즉, 하나의 이미지에 대해서 2000개의 Region Proposal을 진행 (대략 하나의 이미지당 47초가 소요)
    = 학습 시간이 매우 오래 걸린다.
  2. 사이즈를 고정시켜 줘야 하므로 이미지를 자르거나(crop) 찌그러뜨릴(warp) 수 밖에 없다. 

 

'🖼 Computer Vision > Object Detection' 카테고리의 다른 글

CV - Fast RCNN  (0) 2022.04.28
CV - SPPNet (Spatial Pyramid Pooling)  (0) 2022.04.28
CV - Object Detection Architecture  (0) 2022.04.28
CV - OpenCV  (0) 2022.04.23
CV - Object Detection 주요 데이터셋  (0) 2022.04.23
복사했습니다!