본문 바로가기

딥러닝/Object Detection

Fast R-CNN

이전 모델인 R-CNN은 CNN을 Object detection 활용할수 있다는 가능성을 보여준 모델이지만 단점이 몇가지 존재합니다.

  1. Selective search를 통해 획득된 2000개의 Region proposal 들은 각각 CNN에 모델로 입력되기 때문에 시간이 매우 오래 걸립니다.
  2.  AlexNet의 구조를 사용하기 때문에 Image 크기가 224x224로 고정되어 있어 Warping을 수행해야 하며 이미지 데이터의 손실이 일어 납니다.
  3. Multi-stage pipelines 구조이기 때문에 end-to-end로 학습시키지 못합니다.
  4. Selective search가 CPU로 동작하여 GPU를 활용하지 못해 네트워크의 병목 현상이 발생합니다. (좀더 후속 모델인 Faster R-CNN에서 해결됨)

Fast R-CNN 이란?

Fast R-CNN에서는 기존 모델 R-CNN의 단점을 극복한 SPP Net을 업그레이드 시킨 모델입니다.

  1. RoI(Region of Interest) Pooling을 통하여 Crop/Warping으로 인한 이미지 왜곡이 없습니다. (SPP Net과 동일)
  2. CNN (VGG16) 연산을 1번만 수행하여 속도가 빠릅니다. (SPP Net과 동일)
  3. CNN feature extracting 부터 Classification, Bounding box regression까지 end-to-end로 학습 가능합니다.

 

Fast R-CNN 구조

 

R-CNN과 SPP Net & Fast R-CNN의 차이

1. ROI(Region of Interest) Pooling

Fast R-CNN에서는 1개의 피라미를 구성된  SPP(Spatial Pyramid Pooling)으로 되어있고 피라미드의 사이즈는 7x7 입니다. 7x7로의 피라미드로 구성된 SPP에서 고정된 크기의 Feature vector를 만드는 과정을 RoI Pooling 이라고합니다.

한마디로 CNN에서 추출된 Feature map을 Region proposal에 해당하는 RoI(Region of Interest)을 지정한 크기의 Grid로 나눈 후 Max pooling을 진행합니다. 이와 같은 과정을 거치면 고정된 크기의 Feature map을 얻는것이 가능합니다.

RoI Pooling

ROI Pooling 과정

  1. 입력 이미지를 먼저 CNN에 통과시켜 Feature map을 추출합니다.
  2. 동시에 Selective search 알고리즘으로 Region Proposal을 얻습니다.
  3. Selective search로 추출해 두었던 Region Proposal를 RoI Projection 과정을 통하여 RoI를 획득합니다. (Selective search를 통해서 Regioin Proposal은 크기가 그대로 이지만 CNN을 통과한 Feature 맵은 Pooling을 연산을 통하여 크기가 줄어 들었습니다. 작아진 Feature map의 크기를 원본의 크기에 맞게 크기와 중심 좌표를 Sub sampling ration만큼 변경 시켜줍니다.)
  4. 추출한 RoI feature map을 지정한 sub window 크기에 맞게 grid 로 나누어줍니다.
  5. Grid의 각 셀에 대하여 Max pooling을 수행하여 고정된 크기의 Feature map을 획득합니다.

2. End to end 학습

R-CNN에서는 CNN을 통과한 후 서로 다른 모델인 SVM(Support Vector Machine), Bounding box regressor로 각각 입력되었기 때문에 연산이 공유되지 못합니다. 이와 같은 multi stage pipeline 구조적 문제로 인하여 3가지 모델을 따로 학습해야 하는 문제가 있습니다.

그러나 위 그림을 보시면 RoI Pooling 을 추가함으로써 RoI 영역을 CNN을 거친 후의 Feature map 그대로 투영(Projection) 시킬수 있습니다. 따라서 동일한 입력값이 Classification, Bounding box regression으로 들어가기에 연산을 공유할 수 있으며 end to end로 한번에 학습 시킬 수 있습니다.

3. Multi Task Loss

Multi task loss

CNN에서 이미지로 부터 얻어낸 Feature map으로 RoI들을 찾아서 RoI Pooling을 적용하여 Feature vector를 구했습니다.

획득한 Feature vector들로 Classification과 Bounding box regression을 적용하여 각각의 오차를 구하고, 이를 Back propagation 을 통하여 모델을 학습 시키면 됩니다. 이때 Classification과 Bounding box regression의 학습을 한번에 할수 있도록 loss를 묶어주는 작업이 필요합니다. 해당 작업을 Multi task loss라고 부릅니다.

R-CNN의 장점

  1. R-CNN과 비교하여 200번의 CNN 연산을 1번만 수행하여 속도가 많이 개선되었습니다.
  2. RoI(Region of Interest) Pooling을 통하여 Warp/Crop 단계를 제거해서 이미지 왜곡이 없습니다.
  3. CNN -> Classification, Bounding box regression의 end to end로 학습 가능합니다

R-CNN의 단점

RoI(Region of Interest)를 추출하는 알고리즘은 CPU를 사용하는 Selective Search  알고리즘 입니다. GPU를 사용할수 없으므로 속도가 느려 Fast R-CNN의 Bottleneck으로 작용합니다.

RoI 추출하는 부분을 Selective Search 대신에 GPU로 동작하도록 개선한 모델이 Faster R-CNN입니다.

'딥러닝 > Object Detection' 카테고리의 다른 글

YOLO (You Only Look Once)  (0) 2021.11.04
Faster R-CNN  (0) 2021.11.04
R-CNN  (0) 2021.11.04
1-Stage detector vs 2-Stage detector  (0) 2021.11.04
Introduction  (0) 2021.11.03