카테고리 없음 / / 2026. 1. 3. 11:42

[임준수]RCNN, Fast RCNN, Faster RCNN

https://arxiv.org/abs/1311.2524

 

Rich feature hierarchies for accurate object detection and semantic segmentation

Object detection performance, as measured on the canonical PASCAL VOC dataset, has plateaued in the last few years. The best-performing methods are complex ensemble systems that typically combine multiple low-level image features with high-level context. I

arxiv.org

https://arxiv.org/abs/1504.08083

 

Fast R-CNN

This paper proposes a Fast Region-based Convolutional Network method (Fast R-CNN) for object detection. Fast R-CNN builds on previous work to efficiently classify object proposals using deep convolutional networks. Compared to previous work, Fast R-CNN emp

arxiv.org

https://arxiv.org/pdf/1506.01497

저자

 

각 논문별 비교 Abstract

R-CNN

- Selective Search (Region Proposal)기반으로 물체가 존재할 것 같은 영역을 제안

- 2000개의 Object들에 대해서 CNN이 inference를 돌리기에 비효율적인 것이 RCNN의 문제

- 최종적인 classification이 딥러닝 로직에서 수행되는 것이 아니라 별도의 SVM을 적용을 했어야 함

 

SPPnet 

R-CNN의 주요 성능 병목 현상을 해결하기 위해 등장

R-CNN과 달리, 이미지 전체에 CNN을 단 한 번만 적용. 그 결과로 생성된 특징 맵(Feature Map)에서 영역별 특징을 추출

CNN은 고정된 크기의 입력 이미지를 요구하지만, SPP 계층은 다양한 크기의 특징 맵 입력에 대해 항상 고정된 크기의 출력 특징 벡터를 생성

 

Fast RCNN

- SPPnet과 유사한 방식인 ROI pooling 사용 -> 적용 방법은 차이

- selective search 여전히 사용

- ROI pooling에서 바로 Softmax 사용하여 classification

- Multi task loss 함수로 classification과 regression 함께 수행

- Feature을 원본 이미지에서 추출하여 crop하는 것이 아니라 Feature Map단에서 추출

- Translation equivariant한 성질

* 입력의 Translation(변환) 달라지면 출력도 마찬가지로 달라지는 것을 의미

Faster RCNN

- fast RCNN에 RPN을 추가한 것

- 딥러닝만으로 object detection을 수행한 첫 모델

 


RCNN

 

 

- Selective Search (Region Proposal)로 물체가 존재할 것 같은 영역을 제안

Selective Search란?

- Felzenszwalb와 Huttenlocher의 그래프 기반 segmentation 알고리즘으로 이미지를 작은 영역(segment)들로 over segmentation

 

- 유사도가 높은 것 끼리 하나의 영역으로 합쳐줌

- 이 과정을 거쳐 많았던 영역들이 유사도 기반으로 합쳐져 후보 영역이 줄어듬

- 이후 최종 후보 영역들에 대해 CNN을 통한 Classifiaction과 Bounding box regression을 해주고 Object Detection 수

 

 

- 위 영역에서는 세개의 box지만 실제로는 한 이미지당 2천개가량

- 이후 각 영역별로 crop, 동일한 size로 resize

- 동일한 사이즈로 변형하는 이유는 이후 c classification과 regression을 수행할 때 고정된 길이의 벡터로 만들기 위함,  FC Layer로 들어가는 입력이 고정

(이를 fast rcnn에서는 ROI pooling)

- 따라서 이미지마다 2천번의 CNN 수행. 속도가 매우 느림

- 이후 구해놓은 고정 길이 벡터로 cls와 reg 수행

- classification은 이진 SVM 분류기 사용(클래스 수 만큼)

 

Fast RCNN

- RCNN의 매우 느린 속도를 개선

- 기존 R-CNN과 마찬가지로 Selective Search를 사용하여 Region Proposal, 영역 제안을 함

- RCNN과 비교하여 CNN을 병렬적으로 수행한다는 차이점

- RoI Pooling을 통해 각각의 Region(Box)을 고정 크기의 벡터로 변환한 후, 각각의 벡터를 FC layer에 통과시켜 Classification과 Regression을 수행

256 크기의 이미지라 가정

(16 + 4 + 1) * 256의 벡터로 매핑

 

ROI pooling

 

- Feature Map 상의 임의의 ROI를 고정 크기의 Pooling 영역으로 매핑

- 매핑 시 Max Pooling 사용

- 논문에서는 보통 7x7의 pool 크기를 적용

 

ROI pooling을 적용한 Fast RCNN 구조

 

- 원본이미지에서 selective search 수행 (위에선 하나의 selective search지만 실제로는 여러 개)

- selective search안의 원본이미지를 featrue map에 매핑

- ROI pooling의 size에 맞게 들어온 feature map의 원본이미지들을 size 맞춰서 넣음

- ROI pooling을 최종적으로 fc layer 통과시켜서 Softmax에 들어가고 이 부분이 기존 RCNN에서는 SVM으로 classification

- regression 함께 수행하고 이 regression은 Anchor Box와 GT Box를 의미(GT box는 정답 레이블)

 

 

https://medium.datadriveninvestor.com/review-on-fast-rcnn-202c9eadd23b

 

Multi task loss 함수로 classification과 regression 함께 수행

 

vs Multilabel -> sigmoid

 

classification loss + regression 

 

regression loss

- L1은 실제값과 예측값의 차이를 절댓값으로 빼서 loss를 구하는 것, 1보다 작을때는 loss를 좀 더 급격하게 줄여줌

 

- mAP 등 종합적인 성능이 기존모델보다 개선된 것을 볼 수 있음

- 무엇보다 RCNN 및 SPPnet보다 학습시간이 감소

*map(mean Average Precision) - 모든 클래스의 AP를 평균낸 값

ex) 사람 ap 0.84, 자동차 0.90 강아지 ap 0.75

mAP = (0.85 + 0.90 + 0.75) / 3 = 0.83

AP - 여러 recall(재현율) 값에서의 precsion(정밀도) 평균, 공식은 RCO의 AUC 아래 면

Faster RCNN

- fast RCNN에 RPN을 추가한 것

- 기존 selective search를 딥러닝 구조로 변경

- cPU에서 이루어지던 기존 selective search 연산을 GPU 사용으로 빠른 학습 및 inference

( selective search는 전통적인 알고리즘이고 순차적,조건부 연산이기 때문)

- end to end network

 

selectivce search와 anchor box ROI

 

selective search를 rpn으로 대체

- 데이터로 주어질 피처는 pixel 값, target은 GT BOX인데 이를 어떻게 추론?

- Anchor BOX별로 물체가 있는 곳 식별

 

- Anchor Box 들의 모양이 제각각인 이유는 물체가 모두 정사각형 형태가 아니기 때문

- 추후 정답값과의 IOU를 계산할 때 용이하게 하기 위해 고정된 크기(fixed size)말고 다양한 형태

 

Anchor Box 생성 과정

- anchor box는 원본 이미지의 각 grid cell의 중심을 기준으로 생성

- 이 anchor를 기준으로 사전에 정의한 anchor box 9개를 생성 위의 그림 anchor box에서 원본 이미지의 크기는 600x800

- sub-sampling ratio은 1/16 이기에 이 때 anchor가 생성되는 수는 1900(=600/16 x 800/16) = 50 x 38 = 1900

- 그리프포인트가 1900개 되고 anchor box는 9개니 총 17100(=1900 x 9)개가 생성

- 이같은 방식을 사용할 경우, 기존에 고정된 크기의 bounding box를 사용할 때보다 9배 많은 bounding box를 생성보다 다양한 크기의 객체를 포착하는 것이 가능

RPN이란?

- 독립적인 영역을 가지고 Anchor Box 영역을 추출

- feature map에서 직접 RPN이 region을 생성하므로 fast rcnn과 같은 cnn 수행 후  Selective Search로 생성된 region을 feature map에 투영하는 과정이 필요없음, 훨씬 빠른 속도

- rpn에서 inference

https://www.mdpi.com/2076-3417/13/4/2746

 

Underwater Object Detection Method Based on Improved Faster RCNN

In order to better utilize and protect marine organisms, reliable underwater object detection methods need to be developed. Due to various influencing factors from complex and changeable underwater environments, the underwater object detection is full of c

www.mdpi.com

- 위 이미지 크기가 40 x 50이라 가정. rpn에서 conv layer을 통과해서 rpn에서 바로 cls와 reg 수행

- cls 시 sigmoid로 이진분류, 9개의 output이고 이 9개는 anchor box, 총 40x50 이미지에 9개의 anchor box로 40 x 50 x 9의 1800개의 anchor box로 object cls

- regression x, y, W, H 이기에 40 x 50 x 9 x 4로 regression 수행, 아래 IOU연산 위함

 

 

RPN Bounding box Regression은 Anchor Box를 reference로 이용하여 Ground truth와 Anchor Box의 중심 좌표 x,y, w,h의 차이가 Anchor box와 Ground Truth간의 중심 좌표 x,y,w,h의 차이와 최대한 동일하게 예측되어야함

-> 즉, anchor box와 predicted ground truth의 차이가 anchor box와 ground truth의 차이와 최대한 동일해야함

This can be thought of as bounding-box regression from an anchor box to a nearby ground-truth box.

 

Anchor box는 미리 정의된 고정된 참조 박스(reference box)이고, 모델은 이 anchor box를 ground-truth box(실제 정답 박스)에 가깝게 만들기 위한 offset(오프셋)을 예측. 모델이 직접 좌표를 예측하는 대신, anchor box로부터의 상대적 변화량을 regression으로 학습

 

단 이 수많은 anchor box를 모두 조정하지는 않음. 이때 IOU가 등장한다.

적절한 IOU를 설정하여(보통 임계점은 0.7, 0.3) Positive와 negative Anchor box를 분류한다.

- 0.7과 0.3 사이는 학습에 포함되지 않음.

- negative를 학습하는 이유는 확실한 positive와의 거리를 벌리기 위해.

 

 

https://lilianweng.github.io/posts/2018-12-27-object-recognition-part-4/yolo-responsible-predictor.png

 

 

- 예측 bounding box를 위 수식과정으로 계산

- 각 box의 기준점끼리의 거리를 계산

- 예측 bounding box와 Postive anchor box와의 좌표 차이는 ground truth와 positive anchor box와의 좌표 차이와 최대한 동일하게 될 수 있도록 regression 학습

 

RPN loss 함수

- i는 anchor의 개수

- pi는 anchor i가 물체일 확률

- pi*은 anchor i의 ground truth 여부(pos 1, neg 0)

- ti는 anchor  과 예측 bounding box의 차이(reg)

- ti*은 ground truth와 positive anchor box의 차이(reg)

- 보통 pos 보다 neg이 더 많음, 이를 mini batch 형태로 정규화(256 개 중 128개씩 pos와 neg를 각 배치별로 뽑아서)

 

성능 비교

- bbox 2000개와 rpn 300개 기준

- mAP가 selective search에 비해 개선

- fast R-CNN과 비교해서도 높은 mAP, (val test 모두에서)

- selective search -+ Fast R-CNN에 비해서 10배 가량 차이가 나는 속도 개선

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유