공부 기록장

[논문읽기] - Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 본문

스터디/인공지능

[논문읽기] - Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

빛나무 2021. 5. 25. 19:07

Faster R-CNN을 사용하면 이미지 속의 여러 사물을 한꺼번에 분류할 수 있으며 데이터 학습에 따라서 겹쳐 있는 부분들 까지도 정확하게 분류해 낼 수 있다고 한다. Object detection과 관련된 알고리즘에는 R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN, YOLO, YOLO v2 등등 여러가지가 있는데, 그 중 R-CNN이 최초가 된 분석방법이고 YOLO의 경우 속도가 Faster R-CNN보다 훨씬 빠르지만 예측률이 떨어진다고 한다.

 

Object Detection 방식에는 2-stage 방식과 1-stage 방식이 있다.

1) 2-stage 방식

: 물체의 위치를 찾는 문제와 분류하는 문제를 순차적으로 해결한다.

(R-CNN은 2-stage 방식을 따른다.)

이미지에서 물체가 존재할 법한 위치를 찾아 나열한다. (Region Proposals)

찾은 위치들에 대하여 feature를 추출하여, feature를 토대로 분류하고 위치에 대한 정보를 조정한다.(feature extract, classification+regression(이미지 내에 사물이 존재하는 bounding box의 좌표를 예측하는 것))

 

2) 1-stage 방식

: 물체의 위치를 찾는 문제와 분류하는 문제를 한 번에 해결한다. 일반적으로 2-stage 방식보다 빠르게 동작하지만, 정확도는 더 낮다. (YOLO)

 

 

2-stage 방식을 사용하는 R-CNN 시리즈

1) R-CNN

R-CNN은 이미지에 대해 selective search를 진행해 region proposal 2000개를 찾아내고, 그것들 CNN에 넣어서 feature 들을 추출한다. 그렇게 추출된 feature vector들에 대하여 SVM을 이용해 분류를 진행하고, regressor를 이용해 정확한 물체의 위치가 어디에 있는지 bounding box를 조절해서 예측한다.

 

2) Fast R-CNN

기존의 R-CNN에서 속도와 같은 성능이 개선된 모델이다. Fast R-CNN에서는 R-CNN과 마찬가지로 selective search를 진행해 2000개의 region proposal을 찾는다. R-CNN과 다른 점은 feature를 추출할 때 CNN을 한번만 거친다는 점이다. 이후에 ROI 풀링을 통해 각 region들에 대해서 feature에 대한 정보를 추출한다. Faster R-CNN부터는 기본적인 CNN을 이용해서 sofmax layer를 거친다.

 

3)  Faster R-CNN

R-CNN과 fast R-CNN은 모두 CPU 상에서 region proposal를 찾아내는데, 이러한 이유로 속도가 매우 느리다. 이러한 점을 개선해 Faster R-CNN에서는 region proposal의 연산을 GPU 상에서 수행할 수 있도록 RPN(Region Proposal Network)을 제안한다. (Faster R-CNN는 Fast R-CNN구조에 RPN을 합쳤다고 생각할 수 있다.) 이는 selective search의 시간적 단점을 해결해주고 전체 프레임워크를 end-to-end로 학습할 수 있게 한다. 이후로는 Fast R-CNN에서 사용하는 Detection 구조를 사용해 classification과 regression을 진행한다.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

RPN(Region Proposal Networks)

RPN 네트워크는 RPN의 전 단계인 convolution layer를 통해 생성된 feature map을 입력으로 받아서 물체의 위치를 예측하는데, 이때 다양한 형태와 크기의 물체를 잘 예측하도록 k개의 anchor box(3개의 scale과 ratio)를 사용한다. 기본적으로 sliding window를 이용해 각 위치에 대해서 intermediate feature를 뽑아 이것으로 classification과 regresssion을 진행한다. 이때 classification에서는 물체가 있는지 없는지에 대한 여부를 2개의 output(2k)을 갖고, regression layer에서는 bbox에 대한 중앙좌표값(x, y)과 높이/너비값(w, h)을 갖기 때문에 4k개의 output을 갖는다.