본문 바로가기
컴퓨터비전

[딥러닝] R-CNN 논문 리뷰

by PIAI 2022. 3. 23.

R-CNN

 

물체인식(Object Detection) 알고리즘은 타깃으로 하고자 하는 객체의 위치에 Bounding Box를 그려줘야 하고, Classification을 동시에 해주어야 하기 때문에 일반 CNN보다는 훨씬 복잡한 구조입니다.

R-CNN은 첫 2-stage detector로, Object Detection 분야에서 최초로 CNN을 적용시켰습니다.

 

위의 그림은 R-CNN의 구조입니다. 위 구조를 설명하자면

 

  1. 이미지를 넣는다.
  2. 이미지가 있을만한 영역 2000개 추출해내고, 이미지를 모두 동일한 사이즈로 resize 해준다. 
  3. CNN모델에 이미지를 하나씩 집어넣는다.
  4. 각각 이미지마다 분류를 한다.

2-stage detector는 Region Proposal(물체의 Bounding Box를 찾는 일), Classification(분류)를 나누어서 진행합니다.

그럼 Region Proposal 먼저 진행해보겠습니다.

 

Region Proposal

 

Selective Search

 

R-CNN은 기본적인 Region Proposal의 방법으로 Selective Search를 사용하였습니다.

컬러, 무늬, 크기, 형태에 따라 유사한 Region을 계층적으로 그루핑 하여 계산합니다.

 

위의 Selective Search 알고리즘에서 추출된 2000개의 Region을 뽑아내고, CNN은 이때 AlexNet을 사용하였기 때문에 227 x 227 사이즈로 Resizing 하는 작업을 거칩니다. 

 

Classification

 

1. CNN

앞에 2000개의 이미지들을 하나씩 CNN에 넣어줍니다. 이때 CNN은 AlexNet에 ImageNet으로 Pre-train 된 모델입니다. 

 

2.1 SVM

이제 위의 CNN 모델로부터 Feature가 추출이 되고 분류를 하는데 일반적인 모델이면 Softmax나 Sigmoid를 사용하는데 R-CNN은 이상하게도 SVM를 사용하였습니다. 이 이유는 단순히 여러 실험에 걸친 결과, Softmax를 사용할 때보다 SVM을 사용할 때가 성능이 더 잘 나왔기 때문입니다.

 

CNN fine-tuning을 학습할 때 IoU가 0.5가 넘으면 Positive라 두었고, 나머지는 Background로 두었습니다.

SVM Ground Truth(정답)만 Positive라 두고, IoU가 0.3 미만은 모두 Negative로 두고, 나머지는 무시하였습니다.

2.1 Bounding Box Regression

 

Selective Search로 만들어낸 Bounding Box는 아무래도 완전히 정확하지는 않습니다. 그래서 정확하도록 박스를 조정하는 선형 회귀 모델(Bounding Box Regression)을 넣었습니다.

 

x, y, w, h는 각각 Bounding Box의 x, y 좌표 (위치), width(너비), height(높이)를 뜻합니다.

P 선택된 Bounding Box이고 G Ground Truth(실제 값) Bounding Box입니다.

선택된 P의 Bounding Box가 G의 Bounding Box에 맞춰지도록 계속 학습하는 것이 목표입니다.

 

(1), (2), (3), (4)의 식의 G는 Ground Truth의 값으로 학습해 나아가는 것입니다. 근데 P값들은 이미 주어졌고 d(P)의 값이 학습되어야 하는 것입니다.

(6), (7), (8), (9)의 식의 t는 d(P)를 치환한 값입니다. (1), (2), (3), (4)의 식들을 이항 하고 d(P)만 남도록 하면 저렇게 됩니다. 

 

(5) 은 손실 함수입니다. 뒤에 람다는 값을 규제하기 위해 쓰인 식이고, t와 d의 차이를 줄여가는 방향으로 학습하는 것이 목표입니다.

 

결론

다른 알고리즘에 비해 mAP가 높게 나왔습니다. 이 말은 즉슨 다른 알고리즘 대비 매우 높은 Detection 정확도를 보인다는 말입니다. 하지만 2000개의 Selective Search에서 뽑아낸 이미지들을 모두 CNN모델에 학습시키니까 당연히 오래 걸릴 수밖에 없는 구조입니다. 더군다나 Selective Search는 GPU에서 사용하지 못하고 CPU에서 사용하기 때문에 더 오래 걸립니다.

 

Selective Search, CNN Feature Extractor, SVM, Bounding Box Regressor로 각각 따로 구성되어 복잡한 프로세스를 거쳐 학습과 Detection이 되어야 합니다.

 

SVM, Bounding Box Regression에서 학습한 결과는 CNN으로 역전파가 불가능하여 End-to-End가 되지 않습니다.

 

이러한 문제점을 발판 삼아 더 좋은 Fast R-CNN, Faster R-CNN 등이 나왔습니다.

댓글