FAST RCNN

5050·2021년 9월 24일
0

Object Detection

목록 보기
3/3

FAST RCNN은 SPPNet에서 많이 참고한 것을 확인할 수 있다.

기존 SPPNet은 입력 이미지에 대해 CNN을 진행하고 입력 이미지에 대해 selective search 결과를 CNN을 거친 특징 맵에 매핑하고 SPP를 적용하여 고정된 크기의 feature vector를 추출한다. 그 후에 fully connected layer를 통해 regression과 svm을 이용한 classification으로 나뉘어 진행되었다.

FAST RCNN은 SPP 부분을 ROI pooling을 진행해 고정된 크기의 feature vector를 얻고 classification 부분도 학습할 수 있게 fully connected layer을 통과시킨 뒤 두 개의 브랜치로 나누어 하나의 브랜치는 softmax를 또 하나는 bounding box regression을 진행하게 해 더 이상 svm은 사용하지 않게 하였다.

이를 통해 학습 속도, 인퍼런스 속도, 정확도를 모두 향상시킬 수 있었다.

ROI pooling

좌측 그림의 h x w 사이즈의 박스가 selective search로 만들어진 ROI를 CNN을 거치고 나온 feature map에 투영된 것이다.
(h/H) x (w/W)를 하나의 뭉텅이로 묶고 묶인 뭉텅이에서 가장 큰 값을 뽑는 max pooling을 적용시켜 H x W의 feature vector로 변환시킨다.

Multi Task Loss

Roi pooling을 거쳐 나온 featrue vector를 구했고 이제 softmax와 bounding box regression을 적용하여 각각의 loss를 구하고 이를 역전파를 통해 전체 모델을 학습시켜야 한다.
각 loss를 적절히 섞어주는 것이 필요한데 수식은

p는 softmax를 통해서 나온 확률값이고 u는 해당 ROI의 ground truth이다.

t는 각 바운딩 박스의 x, y, w, h들을 조정하는 값이다.



그리고 SPPNet에서는 SPP 이후에만 학습되는 형태로 진행되었는데, fast rcnn에서는 cnn까지 역전파가 전달되게 진행했다.

이 외에도 SVD 등이 소개되었지만 아직 SVD에 대한 지식이 부족해 따로 포스팅을 해야겠다.
참고 링크 : https://i.stack.imgur.com/3uZ3b.png, https://yeomko.tistory.com/15

profile
하이

0개의 댓글