컴퓨터비전(Computer Vision)

Object Detecion [3] - FAST R-CNN

zzoming 2023. 10. 17. 17:53

지난글 

https://zzoming00.tistory.com/32

 

Object Detecion [2] - SPPNET

지난글 https://zzoming00.tistory.com/31 Object Detecion [1] - R-CNN 💡 오늘 알아갈 목표 2 Stage Object Detector R-CNN R-CNN Object Detection 모델은 객체의 위치를 찾고 , Class를 분류하는 작업을 진행한다. R-CNN 모델은

zzoming00.tistory.com


들어가며 

이전에 봤던 SPP-NET은 multi-stage pipelines으로 모델을 한번에 학습시키지 못한다는 한계점이 있었다. 

 

Fast R-CNN은 다음 두 가지를 통해 위의 한계점들을 극복했다

 

1) RoI Pooling 

2) CNN 특징 추출 부터 Classifiation, bounding box regression까지 모두 하나의 모델에서 학습


Fast R-CNN (2015)

💡CNN, bounding box regression, classification을 모두 하나의 네트워크에서 학습 시키는 end-to-end 기법을 제시 

 

전체 알고리즘은 다음과 같습니다 

 

1-1. R-CNN에서와 마찬가지로 Selective Search를 통해 RoI를 찾는다

1-2. 이미지를 CNN에 넣어 feature map을 추출한다 (VGG 16사용) 

2. Selective Search를 통해서 찾은 각각의 RoI를 feature map 크기에 맞춰서 projection 한다

3. Projection 시킨 RoI에 대해 Rol pooling 을 진행하여 고정된 크기의 feature vector을 얻는다 

( SPP사용 - pyramid : level 1 , Target grid size : 7x7) 

4. feature vector은 Fully Connected Layer을 통과한 뒤 두 개의 브랜치로 나뉘게 된다

5-1. 하나의 브랜치는 softmax를 통과하여 해당 RoI에 대해 object classification을 한다

( 더 이상 SVM은 사용하지 않는다) 

5-2. bounding box regression을 통해 selective search로 찾은 box의 위치를 조정한다


END-TO-END : Trainable

 

 

 

 

CNN Network로 추출한 feature vector을  bounding box regressor의 입력으로 사용된다.  bounding box regression은 CNN을 거치기 전의 region proposal 데이터가 input으로 들어가고 SVM은 CNN을 거친 후의 feature map이 input으로 들어가기에 연산이 겹치지 않는다.

 

그러나 위 그림을 보면 RoI Pooling을 추가함으로써 RoI 영역을 CNN을 거친 후의 feature map에 투영시킬 수 있다. 

따라서 동일 data가 각자 sofrmax(Classification), bbox regressor(localization)으로 들어가기에 연산을 공유한다.


Rool Pooling 

 

실제로 Fast R-CNN에서는 1개의 pyramid를 적용시킨 SPP로 구성되어 있다. 여기서 피라미드 사이즈는 7x7이다. Fast R-CNN에서 적용된 1개의 피라미드 SPP로 고정된 크기의 feature vector을 만드는 과정을 "Rool Pooling"이라고 한다. 

 

 

 

Fast R-CNN에서 먼저 입력 이미지를 CNN에 통과시켜 feature map을 추출한다

그 후 이전에 미리 Selective Search로 만들어놨던 RoI을  feature map에 projection 시킨다

위 그림의 가장 좌측이 feature map이고 그 안에 hxw크기의 검은색 box가 투영된 Rol이다 

 

(1) 미리 설정한 HxW크기로 만들어주기 위해서 (h/H) * (w/H) 크기만큼 grid를 RoI위에 만든다.

(2) RoI를 grid크기로 split시킨 뒤 max pooling을 적용시켜 결국 각 grid 칸마다 하나의 값을 추출한다.

위 작업을 통해 feature map에 투영했던 hxw크기의 RoI는 HxW크기의 고정된 feature vector로 변환된다.

 

따라서 원래 이미지를 CNN에 통과시킨 후 나온 feature map에 이전에 생성한 RoI를 projcetion시키고, 이 RoI를 고정된 크기의 vector로 변환 할 수 있다. 


Multi Task Loss

 

 

우리는 위 과정에서 feature vector을 얻을 수 있었다. 이 vector로 classification 과 bounding box regression을 적용하여 각각의 loss를 얻어내고 , 이를 back propagation하여 전체 모델을 학습시키면 된다.  Fast R-CNN의 Loss function은 classification 과 localization loss를 합친 function 으로 , 이를 multi task loss 라고 부른다 


한계점 

 

Fast R-CNN은 region proposal에서 제안된 영역에 대해 단 하나의 모델을 동작시켜 feature 추출과 bounding box regression , classification 을 할 수 있다. end-to-end 모델을 제시함으로써 학습 단계를 간소화시키고 정확도와 성능 모두 향상시켰다는 것에 의의가 있다. 그러나 region proposal 을 selective search로 수행하기 때문에 구조 개선으로 인한 네트워크의 추론시간은 짧아졌지만, selective search알고리즘을 연산하는데 여전히 긴 시간이 필요한 문제점이 있다. 또한, 여전히 객체 후보 영역 추출 후 학습하는 mutil - pipeline 구조 이다. 

 


 

📝 참고자료 

https://ganghee-lee.tistory.com/36

 

(논문리뷰) Fast R-CNN 설명 및 정리

이전글 : (논문리뷰) R-CNN 설명 및 정리 Object Detection, R-CNN 설명 및 정리 컴퓨터비전에서의 문제들은 크게 다음 4가지로 분류할 수 있다. 1. Classification 2. Object Detection 3. Image Segmentation 4. Visual relation

ganghee-lee.tistory.com

https://yeomko.tistory.com/15?category=888201

 

갈아먹는 Object Detection [3] Fast R-CNN

지난 글 갈아먹는 Object Detection [1] R-CNN 갈아먹는 Object Detection [2] Spatial Pyramid Pooling Network 들어가며 지난 시간 SPPNet에 이어서 오늘은 Fast R-CNN[1]을 리뷰해보도록 하겠습니다. 저 역시 그랬고, 많은

yeomko.tistory.com