본문 바로가기
컴퓨터비전

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

by PIAI 2022. 3. 23.

Fast R-CNN

이전 포스트 : https://lcyking.tistory.com/90

앞서 포스팅 한 것처럼 기존 R-CNN은 2000개의 이미지를 모두 CNN에 입력하고, 이미지 사이즈를 모두 같은 크기로 맞춰주는 문제점이 있었는데 이제 하나의 이미지로 

위의 구조를 보면 CNN구조 뒤에, SPP Layer가 아닌 RoI Pooling Layer 가 붙었습니다.

SPP Layer은 여러 가지 영역을 나누어 피라미드로 구성하고 어떤 크기의 이미지가 들어오더라도 같은 크기의 벡터를 출력되게 하는 점에서 RoI Pooling과 유사합니다.

위 그림에서 Projection된 RoI를 FCs(Fully Connected Layer)에 넣기 위해서는

같은 크기의 Feature map이 필요합니다.

하지만 Selective Search를 통해 구한 RoI영역은 다 다른 크기를 가지고 있습니다.

따라서 이 크기를 맞춰주기 위해 RoI Pooling을 수행합니다.

 

RoI Pooling

Fast R-CNN의 핵심인 RoI Pooling은 RoI영역에 해당하는 부분만 max-pooling을 통해 

feature map의 고정된 길이로 반환하는

단계를 말합니다.

모든 Feature Map이 RoI Pooling으로 2x2 출력이 이루어지는 것으로 예를 들겠습니다.

위의 그림은 8x8 Feature Map으로 추출된 그림이고,

미리 Selective Search에서 추출한 RoI를 Feature Map에 비율에 맞게 영역을 설정합니다.

(2x2) 출력 비율에 맞게 그리드를 설정하고, Max Pooling을 실행하면 최종 결과가 나옵니다.

최종 크기는 (이미지갯수, Selective Search개수, RoIPooingSize, Channel개수)입니다.

구조

https://jonathan-hui.medium.com/what-do-we-learn-from-region-based-object-detectors-faster-r-cnn-r-fcn-fpn-7e354377a7c9

 

Multi Task Loss

RoI Pooling으로 feature vector를 구했으니 이 벡터로 Classification과 Bounding Box Regression을 적용하여

각각의 loss로 역전파 시키면 됩니다. 이때, Classification과 Bounding Box Regression을 적절하게 섞어 주는 것은

Multi Task Loss라고 합니다. R-CNN 모델과 같이 각 모델을 독립적으로 학습시켜야 하는 번거로움이 없다는 장점이 있습니다.

https://herbwood.tistory.com/8

  • K개의 class를 분류한다고 했을 시, 배경을 포함한(k+1) 개의 class에 대하여 분류를 학습시켜줘야 합니다.
  • u는 positive sample인 경우 1, negative sample인 경우 0입니다.

 

결론

 

end-to-end 모델을 가능하게 하였습니다.

그로 인해 기존 R-CNN에서 불가능한 역전파를 가능하게 하였습니다.

하지만 여전히 Region Proposal에서 사용되는 Selective Search는 GPU가 아닌 CPU를 사용하는 구조입니다.

그렇기 때문에 이미지 한 장당 2.3초의 Test time이 걸리고 이는 실시간에는 아직 역부족입니다.

 

이제 Faster R-CNN은 이 문제들을 해결하기 위해 Faster R-CNN 알고리즘이 나옵니다.

댓글