Abstract

Fast R-CNN architecture and training

Untitled

위의 이미지에서 Fast R-CNN의 architecture을 확인할 수 있다. 본 network는 전체 이미지의 input과 object proposal의 set을 입력받는다. Network는 먼저 여러 convolutional을 통해 전체 이미지를 처리하고, 그 결과로 나온 feature map에 max pooling을 적용시킨다.

그 후에 각 object proposal 마다 region of interest(RoI) pooling layer이 feature map에서 fixed-length의 feature vector을 뽑아낸다.

그 결과는 fc layer에 입력드로 들어가 2개의 결과로 출력된다. 그 중 첫 번째 결과는 softmax를 통한 class별 확률값을 출력하고(background class 포함), 나머지 하나는 각 object class별 bounding-box를 위한 4개의 수를 출력해준다.

The RoI pooling layer

RoI pooling layer은 max pooling을 통해 유효한 RoI의 feature들을 $H\times W$ (height and weight)크기의 작은 feature map으로 변환한다.

본 논문에서 RoI는 rectangular window를 conv feature map으로 변환시킨다. 각 RoI는 $(r,c,h,w)$ 의 형태로 정의되며, 그 중 왼쪽 위는 $(r,c)$ 로 정의되고, height & width는 $(h,w)$ 로 정의된다.

RoI max pooling은 $h\times w$ RoI window를 $H\times W$ 의 sub-window$(approximate\ size\ h/H\times w/W)$ 로 나누고, sub-window의 값들을 대응되는 output grid cell로 max-pooling한다. Pooling은 각 feature map channel에 독립적으로 적용된다.

Initializing from pre-trained networks

본 논문의 저자들은 3개의 pre-trained ImageNet network로 실험을 진행하였다.

구조는 5개의 5, 13개의 conv layer 사이에 max pooling layer이 위치한 형태이다. Pre-trained network가 Fast R-CNN을 initialize 할 때에 3 종류의 transformation이 진행된다.

첫 번째로 마지막 pooling layer이 RoI pooling layer으로 대체된다.

두 번째로 network의 마지막 fc layer과 softmax가 2개의 sibling layers로 대체된다(앞서 확인한 2개의 결과로 출력됨).

마지막으로 network가 2개의 input을 받도록 수정된다. 2개의 input은 이미지와 RoI 이미지의 list로 구성된다.

Fine-tuning for detection