개발자로 후회없는 삶 살기

논문 리뷰 PART.Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks 본문

[AI]/[논문 리뷰, 분석]

논문 리뷰 PART.Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks

몽이장쥰 2022. 12. 29. 21:46

서론

Faster R-CNN은 기존 Fast R-CNN이 Resion Proposal을 추천기의 추천대로 하는 것의 한계를 느끼고 영역 추정 네트워크(RPN)를 자체적으로 추가한 모델입니다. 본 포스팅에서 주요 내용 위주로 논문을 번역/ 요약하였습니다.

 

> 논문에서는 Fast R-CNN이 추천기에 의존하는 것 때문에 속도가 느리고 한계가 있다고 언급합니다. 따라서 모델 스스로 영역 추정을 하도록 합니다. 틀린 내용이 있으면 피드백 부탁드립니다.

 

- 논문 제목 : Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

- 저자 : Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun

 

본론

- 논문

1506.01497.pdf
6.59MB

 

[논문 1회독]

 

- Abstract

기존 최신 객체 탐지 모델은 객체 위치를 추정하기 위해 영역 추정(region proposal) 알고리즘을 사용해 왔습니다. Fast R-CNN은 R-CNN에서 객체 탐지 시간을 크게 줄인 모델입니다. 그렇지만 여전히 영역 추정 단계에서 병목(bottleneck) 현상이 생긴다는 단점이 있습니다. 본 논문에서는 영역 추정 네트워크(Region Proposal Network) 기법을 제안합니다.

 

 

- 본론 Figure 미리 보기

 

=> Fig1

 

그림 1 : 다양한 크기의 객체를 처리하기 위한 알고리즘

(a) 이미지 사이즈를 피라미드 각 층처럼 각각 만들고 모든 scale에서 feature map을 추출합니다.

(b) 여러 크기가 있는 필터의 feature map이 피라미드처럼 추출됩니다.

(c) 이미지의 참조 박스에서 feature를 추출합니다.

 

=> Fig2

그림 2 : Faster R-CNN은 객체 감지를 위한 단일 통합 네트워크입니다. RPN 모듈은 이 resion proposal 역할을 합니다.

 

=> Fig3

그림 3 : RPN과 RPN proposal detection 결과

 

5. Conclusion

본 논문에서는 빠르고 정확한 영역 추정을 하기 위해 RPN을 제안했습니다. RPN과 객체 탐지기가 합성곱 피처를 공유함으로써 영역 추정 비용을 크게 줄였습니다. Faster R-CNN은 통합된 딥러닝 기반 객체 탐지 시스템으로, 실시간 객체 탐지가 가능할 정도로 빠릅니다.

 

[논문 2회독 (수식 + method + experiment 위주)]

1. Introduction

영역 추정(region proposal) 기법과 R-CNN 덕분에 최근(논문이 쓰인 2015년) 객체 탐지 성능이 크게 좋아졌습니다. R-CNN은 속도가 느리지만, Fast R-CNN에서는 피처 맵을 공유한 덕분에 R-CNN의 단점을 많이 개선했죠. 하지만 Fast R-CNN도 여전히 영역 추정 단계에서는 병목 현상이 있습니다.

 

-> 본 논문에서는, 깊은 합성곱 신경망으로 영역 추정을 하도록 하는 알고리즘을 통해 영역 추정 계산 비용이 거의 들지 않게 했습니다.

 

 

 

3. Faster R-CNN

Faster R-CNN은 두 가지 모듈로 이루어져 있습니다. 첫 번째 모듈은 영역 추정을 위한 깊은 합성곱 네트워크입니다. 두 번째 모듈은 객체 탐지 모듈입니다. Fast R-CNN에서는 첫 번째 영역 추정을 추정기의 도움을 받아서 했습니다. 여기서는 모델에 모듈로 존재하여 영역 추정을 수행하고 추정한 영역에서 객체 탐지를 수행합니다.

 

 

3.1 Region Proposal Networks

RPN(Region Proposal Networks)은 크기에 상관없이 이미지 전체를 입력받습니다. 그다음 영역 추정 경계 박스를 반환합니다. 각 경계 박스는 안에 객체가 있는지 여부를 점수로 나타냅니다. 

 

영역 추정 경계 박스를 만들기 위해 슬라이딩 윈도우 방식을 사용합니다. 각 격자에 대해 k개의 경계 박스를 만듭니다. 각 윈도우는 작은 차원의 feature로 매핑됩니다. 슬라이딩 윈도우로 구한 피쳐는 두 가지 fully connected layer의 입력으로 사용됩니다. cls layer는 해당 윈도우에 객체가 있는지 없는지 2진 분류기이고 reg layer는 4개의 바운딩 박스 좌표를 예측하는 회귀 계층입니다.

 

 

3.1.1 Anchors

각 슬라이딩 윈도우의 중심 위치마다 k개의 경계 박스 영역을 가지고 있습니다. 그렇기 때문에 회귀 계층은 좌표값을 4k개 갖고 있습니다. 분류 계층은 2k개 점수값을 갖습니다. 경계 박스 하나에는 객체일 확률과 객체가 아닐 확률로 두 가지 확률값입니다.

보통 feature map의 크기 W x H는 2400이고 k = 9로 설정합니다.

 

 

-> Translation-Invariant Anchors

Faster R-CNN의 중요한 특성은 위치 불변성(Translation-Invariance)입니다. 위치 불변성이란 이미지 안에서 객체 위치가 변하더라도 같은 객체로 인식하는 특성입니다. Faster R-CNN의 RPN은 슬라이딩 윈도우 방식으로 이미지의 전체 영역을 훑기 때문에 위치가 변해도 같은 객체로 잘 인식하는 겁니다.

 

-> Multi-Scale Anchors as Regression References

본 논문에서는 기존의 피라미드 방식보다 더 빠르고 효율적인 Anchor(앵커) 피라미드 방식을 소개합니다. 다양한 크기의 앵커 박스를 활용해 분류와 회귀를 수행합니다.

 

 

3.1.2 Loss Function

 

분류 손실 : 실제 ground-truth와 IoU가 0.7이 넘는 앵커를 positive label로 두고 0.3보다 작은 앵커를 negative label로 하여 이진 분류를 수행합니다. 

 

회귀 손실 : t는 예측 경계 박스의 4가지 좌표값으로 실제 좌표와의 차이가 손실입니다. 경계 박스 회귀에 사용되는 파라미터를 소개합니다.

-> 설명

1) x, y : 바운딩 박스의 중심 좌표/ 2) w, h : 너비, 높이/ 3) *표시 : GT에서의 좌표값을 의미(정답레이블)

 

 

3.1.3 Training RPNs

RPN은 확률적 경사 하강법(SGD)과 역전파로 end-to-end 훈련을 할 수 있습니다. 앞서 여러 앵커 박스를 만들어 영역 추정을 한다고 했습니다. 그런데 모든 앵커 박스마다 손실 함수를 적용해 최적화하면 negative label에 치우친 결과를 냅니다. 왜냐하면 positive label보다 negative label이 압도적으로 많기 때문입니다. 

 

> 그래서 손실 함수를 계산하기 위해 하나의 이미지에서 앵커 박스 256개를 무작위로 샘플링합니다. positive 앵커와 negative 앵커를 1:1 비율로 뽑습니다. 훈련할 때 새로운 계층은 '평균 0, 분산 0.01인 가우시안 분포에서 뽑은 가중치'로 초기화합니다. 

 

3.2 Sharing Features for RPN and Fast R-CNN

앞에서 말했듯이 Faster R-CNN에서는 탐지기(detector)로 Fast R-CNN을 사용합니다. 여기에 RPN을 추가하고 RPN과 Fast R-CNN이 합성곱 부분을 공유해 사용합니다.

 

> 그런데 RPN과 Fast R-CNN은 합성곱 피처를 서로 다른 방법으로 독립적으로 훈련합니다. 그렇기 때문에 RPN과 Fast R-CNN이 합성곱 피처를 공유하면서도 서로 다른 방법으로 분리해서 사용할 수 있도록 해야 합니다. 그러기 위한 세 가지 방법이 있습니다.

 

1) Alternating training/ 2) Approximate joint training/ 3) Non-approximate joint training이고 논문에서는 1) 방식을 채택했습니다.  Alternating training이란 말 그대로 번갈아가며 훈련한다는 뜻입니다. 먼저 RPN을 훈련하고, 이어서 영역 추정 경계 박스를 사용해 Fast R-CNN을 훈련합니다.

 

 

-> 4-Step Alternating Training

이 논문에서는 피처를 공유하면서 훈련하도록 실용적인 4단계 훈련 알고리즘을 채택합니다. 1) 첫 번째 단계에서는 RPN을 훈련합니다. 2) 두 번째 단계에서는 첫 번째 단계에서 훈련한 resion proposal을 활용해 Fast R-CNN을 훈련합니다. 이때 두 네트워크 모두 이미지 넷으로 사전 훈련된 모델로 초기화합니다. 

 

+ 3) 세 번째 단계에서는, RPN 훈련 초기화를 위해 Fast R-CNN을 사용합니다. 공유된 합성곱 계층은 고정하고, 오직 RPN 계층만 파인 튜닝합니다. 이것으로 RPN과 Fast R-CNN은 합성곱 계층을 공유합니다. 4) 마지막 단계에서는, 공유된 합성곱 계층을 역시 고정한 채로 오직 Fast R-CNN 계층만 파인 튜닝합니다. 이런 방식으로 RPN과 Fast R-CNN은 같은 합성곱 계층을 공유하면서 단일 네트워크를 구성할 수 있습니다. 

 

3.3 Implementations Details

1) 기존 방법과 비교

Faster R-CNN에서는, 단일 스케일(single scale) 이미지에 대해 영역 추정 (region proposal)과 객체 탐지 훈련 (obejct detection networks) 및 테스트를 수행합니다. 기존 방식은 멀티 스케일로 feature를 추출하는 방식으로 성능은 좋지만 속도가 느핍니다. 논문에서 제시한 앵커 박스를 사용하는 방식은 성능과 속도 모두 향상됩니다.

 

2) 앵커박스

세 가지 스케일과 세 가지 가로세로 비율을 갖는 앵커 박스를 사용. 세 가지 스케일은 128, 256, 512 픽셀이고, 세 가지 가로세로 비율은 1:1, 1:2, 2:1 입니다.(k = 9) 기존에는 다양한 스케일(과 가로세로 비율)을 갖는 영역을 예측하려면 이미지 피라
미드나 이미지 필터를 사용해야 했지만, 다양한 앵커 박스를 사용하면 이미지 피라미드나 이미지 필터를 사용할 필요가 없습니다.

 

위 그림은 RPN을 활용한 객체 탐지 예시로 스케일과 가로 세로 비율이 다양해도 제대로 탐지합니다.

 

 

3) 앵커 박스 처리 방법

훈련하는 동안, cross-boundary 앵커 박스는 손실에 영향을 미치지 못하도록 무시했습니다. 1000 x 600 픽셀의 이미지에는 앵커 박스가 약 20,000개(= 60 x 40 x 9) 있고 여기서 cross-boundary 앵커 박스를 제거하면 6,000개만 남습니다. cross-boundary 앵커 박스를 제거하지 않으면 훈련 속도도 느리고 성능도 좋지 않았습니다.

 

4) 비최대값 억제

RPN에서 만든 영역 추정 경계 박스끼리는 서로 겹치는 영역이 많습니다. 겹치는 영역을 없애기 위해 비최대값 억제(Non-Maximum Suppression)를 적용했습니다. 이는 경계 박스 가운데 가장 확실한 경계 박스만 남기고 나머지 경계 박스는 제거하는 기법입니다.

 

5) 경계박스를 줄여 속도를 높이기

NMS IoU 임계값을 0.7로 설정했다. 그러면 경계 박스가 6,000개에서 2,000개로 줄어듭니다. 경계 박스 개수를 줄였기 때문에 속도는 당연히 빨라지면서도 성능은 그대로 유지됩니다.

Comments