ML study > Object Detection > Two stage detection
RFCN (Region based Fully Convolutional Network)
- RFCN은 Faster R-CNN에서 이미지마다 진행된 수백 수천 개의 ROI에 대하여 sub network를 통과시켜야 한다는 점이 문제점으로 삼으면서 Fully convolutional network를 적용하여 ROI를 구하는 동시에 classification과 BBox regression이 함께 이루어지도록 만들었다
1. RFCN 동작
RFCN은 Faster R-CNN과 거의 비슷한 구조이며 ROI subnetwork 부분에서 차이가 난다.
- 다음은 Fast R-CNN과 Faster R-CNN의 알고리즘이다. Image에 대하여 feature map을 뽑아내고 ROIs를 예측한다. 이후 각 ROI에 대하여 pooling 한 후 detector network를 통과시켜 class score과 box regression을 수행한다. 모든 ROIs가 detector network를 통과하기 때문에 시간소요와 computation power 소모가 크다.
feature_maps = process(image)
ROIs = region_proposal(feature_maps)
for ROI in ROIs
patch = roi_pooling(feature_maps, ROI)
class_scores, box = detector(patch)
class_probabilities = softmax(class_scores)
- 이번엔 RFCN의 알고리즘을 보자. 마찬가지로 Image에 대하여 feature map을 뽑아내고 ROIs를 예측하는 것 까진 동일하다. 여기에 추가로 feature map으로 부터 sub network를 만들어 score_map이란 출력을 계산한다. 이후 각 ROI에 대하여 score map에서 ROI pooling을 진행하면 detector와 같은 sub network를 계속 통과시키지 않아도 average score를 취함으로써 class score와 box regression이 가능하다.
feature_maps = process(image)
ROIs = region_proposal(feature_maps)
score_maps = compute_score_map(feature_maps)
for ROI in ROIs
V = region_roi_pool(score_maps, ROI)
class_scores, box = average(V) # Much simpler!
class_probabilities = softmax(class_scores)
- 그렇다면 score map이 어떤 식으로 동작하는지 살펴보자.
-
RFCN의 개념은 물체를 판단할 때 여러 영역으로 나누어서 각각 지니고 있는 특징이 있을 것이라는 생각에서 출발한다.
-
따라서 물체를 \(k \times k\) 로 나눈다고 가정할 때 feature map의 channel을 \(k^2\) 개로 만들어 하나의 채널이 \(k \times k\) 로 나눈 물체의 어느 한 부분의 특징을 나타낸다고 보는 것이다. 이 때 클래스마다 특징이 다를 것이므로 총 채널의 갯수는 \(k^2(C+1)\) 이 된다. 그렇게 나온 새로운 feature map을 논문에서는 position-sensitive score map이라 부른다.
-
이렇게 구한 score map에 Region proposal을 적용시키고 ROI pooling을 진행한다. 이 때 pooling 과정은 \(k \times k\) pooling layer를 만들기 위해 ROI 영역을 \(k \times k\) 로 나누고 각 영역에 해당하는 channel에서의 점수가 계산 된다.
-
이렇게 탄생한 pooling layer를 평균해주어 class score 를 계산할 수 있게 되는 것이다.
-
BBox regression 역시 동일한 방식으로 가능하다.
2. RFCN 결과
RFCN 결과 faster R-CNN 보다 train, test 속도와 mAP 모든 측면에서 더 향상 된 결과를 나타내었다.
Reference
[1]: Deep Learning for Generic Object Detection: A Survey
[2]: RFCN 논문
[2]: RFCN 정리 블로그
댓글남기기