R-CNN에서 가장 발전된 Faster R-CNN에 대하여

1. motivation

 

이전 fast R-CNN이 region proposal을 selective search로 구해서 학습이 불가능해 성능 향상에 결국 한계가 있다는 점

 

사실 진정한 object detection 목적이랑 먼저 bounding box 후보군을 선정한다는게 조금 아쉬운 부분

 

neural network 기반으로 학습 가능한 region proposal을 제안하여 모든 구조가 end-to-end로 학습이 가능하게 만들었다

 

 

2. Intersection over Union

 

두 영역의 합집합에 대하여 겹치는 영역의 비율

 

 

3. anchor box

 

생성한 feature map에서 n*n spatial map(논문에서는 3*3)을 sliding window 시키면서

 

spatial map의 중앙 포인트마다 총 k개의 anchor box를 각각 생성한다. k는 hyperparameter로 논문에서는 k=9

 

k개의 anchor box는 크기 비율에 따라 다양하며 bounding box로 사용할 후보군 box

 

 

4. sample box

 

region proposal network 학습을 위한 loss function에서 각 anchor box를 positive인지 negative인지 구별하는 작업이 필요하다

 

생성한 anchor box와 사람이 직접 이미지 내에서 처리한 ground truth box에 대하여 IoU를 계산

 

IoU가 0.7보다 큰 anchor box에 대해서는 가중치 1을 부여하는 positive sample

 

아주 드물게 positive sample이 위 경우로 잡히지 않는다면 가장 IoU가 큰 anchor box를 positive sample로 사용

 

IoU가 0.3보다 작은 anchor box에 대해서는 가중치 -1을 부여하는 negative sample

 

어떠한 경우에도 속하지 않는다면 training sample로 사용하지 않는다

 

하나의 ground truth box는 여러개의 positive sample을 지정할 수 있다

 

 

5. region proposal network

 

selective search를 대체하는 자동으로 bounding box 후보군을 미리 생성해주는 neural network

 

위에서 설명했던 방식으로

 

각 중앙 포지션마다 n*n spatial feature map을 sliding window 시키면서 1개의 지점마다 k개의 anchor box를 생성

 

각 spatial feature map을 intermediate layer라는 곳에 넣어서 256차원의 feature vector로 만듦

 

anchor box를 넣어서 만들어야하는거 아니냐 생각했는데 anchor box에는 weight가 없으니까 weight가 있는 spatial feature map을 넣어야지

 

근데 하나만 넣었는데 k개 box 각각 예측해준다는게 신기하긴하네

 

이것을 2개의 layer인 classification layer와 regression layer로 넣어줌

 

classification layer는 각 k개의 box가 (object를 가질 확률, 가지지 않을 확률)을 총 2k개의 softmax score를 뽑아준다

 

논문에서는 k개 box당 logistic regression 값으로 k개만 뽑는 방법도 있다고 언급했다

 

regression layer는 각 k개의 box의 위치로 중앙 점의 좌표 (x,y)와 box의 너비, 높이 4개 모수를 내주며 총 4k개의 좌표를 내준다

 

region proposal network가 anchor box를 예측하는 과정

 

k개나 예비 후보로 정했는데 regression으로 위치 탐색을 해야하는가?

 

k개 충분히 크면 촘촘하게 anchor box가 선정되므로 regression이 필요없을 수 있는데 계산량이 너무 많아진다.

 

그래서 적절한 k에 대해서는 더욱 정교한 위치를 찾기 위해 regression을 할 필요가 있다

 

각 cls layer와 reg layer에 대한 loss function을 합친 loss를 최종 loss로 사용해서 학습을 진행함

 

 

positive와 negative을 왜 구분했는지 보여주고 싶어서 첨부했다

 

positive는 객체이고 negative는 배경을 뜻하는듯

 

log loss는 cross entropy loss로 classification의 대표적인 loss

 

L1 loss는 regression의 대표적인 loss

 

 

6. Faster R-CNN의 구조

 

region proposal network와 fast R-CNN이 합쳐진 구조

 

training 방법으로 논문에서는 여러가지가 제시되었는데

 

전체적인 틀은 region proposal network를 먼저 학습하고 fast R-CNN을 독립적으로 따로 학습하는 방식으로 되어있는 듯??

 

그러니까 완전한 end-to-end training까지는 아닌가봄

 

 

7. non maximum suppression

 

Region proposal network는 하나의 object에 여러개의 bounding box가 중복되어 있는 것이 보통

 

너무 당연하게 한번에 k개의 box를 예측해주니까

 

가장 objectiveness score가 높은 box를 먼저 선정

 

다른 box들간의 IoU를 계산하여 (threshold)넘는 box들은 제거함

 

여기서 threshold는 0.5~0.9로 정한다고 한다

 

다음으로 objectiveness score가 높은 box에 대해 반복 진행

 

 

효과적으로 중복된 bounding box를 제거하고 Faster R-CNN에 넣는게 계산량에 좋다

 

8. summary of R-CNN Family

 

1) 학습 관점

 

R-CNN은 오직 마지막 단의 SVM classifier만 학습 가능

 

Fast R-CNN은 첫 feature map을 뽑는 CNN도 학습이 가능

 

Faster R-CNN은 region proposal network로 모든 과정이 학습 가능

 

 

R-CNN에 언급 한번 안한 box regression이 있다는 것이 특이한데 실제로 가능하다고 한다

 

2) input size관점

 

R-CNN은 CNN을 2000번 돌리며 CNN에 들어가는 input size는 고정되어있다

 

Fast R-CNN 이후는 ROI pooling을 이용하여 CNN의 input size를 임의로 해도 동작하도록 만들었다

 

 

3) region proposal 관점

 

Fast R-CNN까지 region proposal로 selective search로 미리 찾아야 했다

 

Faster R-CNN에서 region proposal network를 설계하여 모든 과정이 한번에 가능하며 학습도 가능하게 만들었다

 

 

TAGS.

Comments