본문 바로가기
Machine-Learning/paper

[Paper] Faster RCNN

by AteN 2022. 10. 6.

 

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 

 

Contents

1. Overview

2. Related Work

2.1 Object Proposals (= region proposals)

2.2 Deep Networks for Object Detection

3. Faster R-CNN 

3.1 Region Proposal Networks

3.2 Anchors

3.3 Multi-Scale Anchors as Regression References

3.4 Sharing Features for RPN and Fast R-CNN (4-step)

3.4 NMS (Non-Maximum Suppression)

3.6 RPN Loss function 

  

1. Overivew

Object Detection Network은 SPPnet, Fast R-CNN 등 과 같이 region proposal algorithms에 의존하고 있고, Running time을 줄이는 등 성과를 내고 있다. 다음의 논문에서는 모든 이미지의 Convolutional Features를 공유하면서 region proposal을 구하는 데에 자원 절약(cost-free)을 할 수 있는 region proposal network(RPN)에 대해 소개할 것이다. RPN은 FCN(fully convolutional network)로서 동시에 물체의 경계를 예측하고, 물체의 위치에 대한 점수를 매긴다. RPN은 Fast R-CNN에 쓰였던 것과 같이 고품질의 region proposal을 만들기 위해서 end-to-end로 학습된다. 여기서 더 나아가 최신의 Neural Networks “attention” 기술을 사용하여 RPN과 Fast R-CNN을 Convolutional features으로 공유함으로써 통일된 network로 구성된다. 

* region proposal: 주어진 이미지에서 물체가 있을 법한 위치를 찾는 것 

 

Introduction

- Faster RCNN 기반의 이전에는 Region proposal 은 Selective Search 방법으로 성공적으로 진보되었다. (selective search은 low-level feature를 기반으로 픽셀들을 병합(greedy 알고리즘을 기반으로 유사도에 따라 점차 통합). 

- 하지만 Selective Search 는 CPU 기반으로 연산 속도가 느리다는 단점을 가지고 있었고, 효율적인 성능 향상을 위해서 GPU로 성능을 향상시킬 목적을 가지고 있었다.

- 그래서 제안된 방법이 Selective Search를 사용하지 않고, region 경계와 각 위치에 대한 객체의 점수를 예측할 수 있는 RPN을 사용하여 fully convolutional network처럼 하나의 end-to-end 방식으로 사용할 수 있게 되었다.

RPN은 넓은 범위의 척도(scales)와 종횡비(aspect ratio)를 가지고 효율적으로 region proposal를 예측 할 수 있도록 설계 되었다. 

이러한 다양한 scales와 sizes를 해결하기 위한 서로 다른 전략들이 있다.

(a) 이미지들의 Pyramids 와 Featrue maps이 쌓여져 있으며, 분류기는 모든 scales을 실행한다. 

(b) 다수의 scales/sizes들과 함께 필터의 Pyramids는 feature map에서 실행된다.

(c) 우리는 (Faster R-CNN)은 regression function을 통한 reference boxes(anchor)의 Pyramids를 사용한다 

여기서 다양한 척도(scales)와 종횡비(aspect ratio)에 대한 reference는 anchor boxes라는 것을 소개 한다 

논문에서의 계획은 다양한 척도(scales)와 종횡비(aspect ratio)의 image(a) 또는 filter(b)들이 하나하나 열거되는 것이나 을 방지한 것이다. 이 모델은 single-scale 이미지를 사용하여 train/test 할 떄 성능이 좋았고, 실행 속도도 좋았다.  

RPN과 Fast R-CNN을 objection detection networks 에 통합하기 위해서, 논문proposals 를 고정시키면서 region proposal task 를 위한 fine-tuningobject detection를 위한 fine-tuning을 번갈아 하는 훈련 계획을 제안한다. 이 방법은 빠르게 수렴하고, 두 작업 간에 공유된 convolutional features를 함께 하나의 통합된 network를 구성한다 

 

2 RELATED WORK

2.1 Object Proposals (= region proposals)

- Object Proposals 방법은 super-pixels을 그룹화(e.g, Selective Search) 그리고 sliding windows(e.g, EdgeBoxes) 하는 기본적인 방법을 포함한 방법이다

- Object Proposals 방법은 detectors의 독립적으로 외부적인 모듈을 채택하고 있다.

 

2.2 Deep Networks for Object Detection

- RCNN은 주로 Classifier 역할을 하지만 객체의 경계(bounds)를 예측하지 못한다. (bounding box regression에 의한 refining을 제외하고), 이것의 정확도는 the region proposal module 의 수행에 의존하게 된다.

- MultiBox 방벙론은 마지막인 동시에 다양한 클래스와 무관하게 박스를 예측하고 single-box를 일반화하는 fully connected layer 인 network로부터 region proposals를 생성한다. - MultiBox는 proposal 과 detection network간에 특성들을 공유하지 않는다 

- Fast R-CNN에서는 공유된 convolutional fearture를 이용하여 ene-to-end detector를 학습할 수 있어서 놀라운 성능과 속도를 보여준다



3. Faster R-CNN 

논문에서 말하는 Faster R-CNN의 두가지 modules로 구성되어 있다. 

- a deep fully convolutional network that proposes regions

- the Fast R-CNN detector that uses the proposed regions

이 전체 시스템은 단일적이고, object detection을 위해 통합된 네트워크이다. Attention 메커니즘이라는 neural networks 모듈이 사용되며, 이 RPN 모듈이 어디를 봐야 하는지 알려준다. 뒤에 나올 region proposal을 위한 network 의 특성과 설계에 대해서 설명할 것이다. 공유된 특성들을 가지고 두 가지 모듈을 학습하는 알고리즘에 대해서 설명할 것이다. 

 

3.1 Region Proposal Networks

RPN은 모든 크기의 이미지를 입력으로 받고, 출력으로 하는 각각 object에 대한 점수(class / background) 를 지닌 직사각형 모양의 object proposals 세트를 출력한다. 이러한 과정을 fully convolutional network로 모델링한다. 궁긍적인 목표가 fast R-CNN과 연산을 공유하기 위함이기에 논문에서는 두가지 nets가 공통적인 convolutional layer sets를 공유한다고 가정한다.

 

the Zeiler and Fergus model (ZF) = 5 shareable convolutional layers

the Simonyan and Zisserman model (VGG-16) = 13 shareable convolutional layers

 

region proposals를 생성하기 위해서, 공유된 마지막 convolutional layer를 통해서 출력된 convolutional feature map 위를 작은 network로 slide(미끄러지다). 이 작은 network는 입력된 convolutional feature map 의 (n x n) spatial window 의 입력으로 가져온다. 

이 특성들은 두개의 같은 형태로 fully connected layers—a box-regression layer (reg) and a box-classification layer (cls) 보내지게 된다. 이 architecture는 1 x 1 으로 두개로 나누어진 convolutional layers (reg and cls)로부터 따르는 n×n convolutional layer으로 실행된다. 









3.2 Anchors

각 sliding-window 위치에서, 동시에 다수의 region proposals를 예측한다 여기서 각 위치 대한 가능한 최대 region proposals 의 수를 k로 표시된다. 그래서 Reg layers는 좌표를 포함하기 때문에 4k, Cls layers에 대해 객체 인지 아닌지에 대한 확률을 주청하기에 2k이다 

K proposals는 k reference box에 대한 매개변수로 표시되며, 이를 Anchor라고 부른다 (sliding window의 각 위치에서 bounding box의 후보로 사용되는 상자) 

Anchor는 sliding window의 중앙에 위치하며 scale and aspect ratio 와 연관된다. 기본값으로 3 scale and 3 aspect ratio 를 사용하여 각 sliding position에 대해 k = 9 anchors를 도출한다 

* sliding window 

: 이미지를 인식할 때 이미지의 중심에 완벽하게 맞지 않으면 전혀 동작하지 않게 된다. 이러한 문제는 아주 약간 위치가 벗어나도 무엇인지 인식하지 못한다. 그래서 슬라이딩 sliding window 으로 작은 섹션을 나누어 해당 이미지를 찾을 때까지 한번에 한 섹션 씩 모두 스캔하는 방법이다. 이것은 무차별 대입 (brute force) 솔루션이다. 일부 제한된 경우에는 잘 동작하지만 실제로는 매우 비효율적이다 

Translation-Invariant Anchors

* Translation invariant (이동 불변성)

  • RPN은 Window sliding을 통해 모델 사이즈를 줄이면서 동시에 이미지 내 Class가 어디에 위치하든 같은 특징을 뽑아내는 이동불변성을 가짐

논문의 중요한 접근 방식 중에 특성은, anchor와 anchor box에 비교적인 proposals을 연산한 function 모두 translation invariant 이다는 것이다 

만약에 이미지 속의 객체가 이동했다면 proposals도 옮겼다면, proposals을 예측하는 것도 마찬가지로 전후 이미지에서 같은 proposals을 만들어야 한다 

비교하자면, MultiBox 방법은 k-means를 통하여 translation invariant이 아닌 800 anchor를 발생시켜 사용한다. 그래서 Multibox 는  만약 object을 이동시켰다면 동일한 proposal을 보장하지는 않는다 

 translation invariant는 또한 model 크기를 줄인다 . Multibox은 (4+1) x 800의 FC Layer를 가진다 (우리의 방법에 따라 9개의 anchor를 가진 (4 + 2) x 9 Convolutional output layer에 위치한 ). 그 결과로 우리는 (512 x (4 + 2) x 9 for VGG)에 해당하는 2.8 x 10^4 개의 파라미터를 가진다 

 

3.3 Multi-Scale Anchors as Regression References

* Multi-scale anchors

  • SPPNet과 같은 방법들은 다양한 Scale의 이미지나 다양한 크기의 Filter를 사용하여 학습을 진행함
  • 단순히 Anchor box의 Hyperparameter를 다양하게 둠 → 위와 동일한 효과를 냄
  • 이를 Pyramid of anchors라고 부름

 

논문에서의 anchor의 설계는 Multiple scales( and aspect ratios)를 다루기 위한 새로운 주제를 나타낸다 

 

Multiple scales 예측을 위한 두가지 방법을 있다. 

이미지 / 특성 파라미터 기반 (DPM. CNN 기반의 방법들)

이미지들을 다양한 scales에 대해 resizes 되고, feature maps는 각 scale에 대해 계산된다. 이방법은 유용하지만 시간이 많이 소요된다. 

그래서 다양한 scales의 sliding windows를 feature maps에 사용하는 것이다 

예를 들어 DPM에서 다른 aspect ratio의 모델은 각각 다른 필터 사이즈 (5 x 7, 7 x 5)를 이용하여 개별적으로 학습 되어 진다. 만약에 다양한 scale을 사용한다면 (b) 에서 말하는 필터들의 파라미드로 생각될 수 있다. 이 방식은 보통 첫 번째 방식과 같이 채택되어서 사용한다 

비교하자면, 논문에서 말하는 Anchor-Based 방법은 a pyramid of anchors를 구성한 방식이며, 더 자원적 측면에서 효율적이다. 논문에서의 방법은 scales 및 aspect ratio와 함께 Anchor box를 참조하여 bounding box를 분류하고 예측한다. 이는 이미지와 single scale의 feature map에 의존하고 single size의 필터들을 사용한다. 이러한 multi-scale anchors는 추가적인 자원 없이 특성들을 공유하는 것이 핵심이다.




3.4 Sharing Features for RPN and Fast R-CNN (4-step)

Features를 공유한 networks를 학습하는 3가지 방법에 대해 볼 것이다 

1. Alternating training

먼저 RPN을 학습시킨다. 그리고 proposals를 Fast R-CNN을 학습하는데 사용한다. Fast R-CNN으로 tuned 된 network를 RPN을 초기화할 때 사용한다. 이 과정을 반복한다 

2. Approximate joint training

RPN과 Fast R-CNN을 하나의 network로 통합한다 

3. NON Approximate joint training

RPN으로 예측된 bounding boxes를 input으로 한다. 이 과정에서는 box 좌표와 다른 ROI Pooling layer가 필요하다

 

1. 논문에서는 첫번째로 RPN을 학습시킨다. RPN은 imageNet-pre-trained 모델로 사용되고, region proposal task를 위해 end-to-end 로 fined-tuned 된다.

2. 1-step 의 RPN에서 생성된 proposals를 사용한 Fast R-CNN에서 분리된 detection network를 학습시킨다. 이 network 또한 imageNet-pre-trained 모델로 초기화된다. 이 부분에서 두개의 networks는 convolutional layers를 공유하지 않는다 

3. RPN 학습을 초기화하기 위해 detector network를 사용하는데, 공유(Step-2)된 convolutional layers를 고정(학습x)하고 RPN에 대해 고유한 layer만 fine-tuning한다. 여기서 두개의 network가 convolutional layers를 공유한다

4. 공유(Step-2)된 convolutional layers를 고정을 유지하면서 Fast R-CNN의 공유(Step-1)된 layers를 fine tuning한다. 이처럼 두 개 모두 network가 같은 convolutional layers를 공유하고 하나의 networks 형태가 된다. 

유사하게 Alternating Training은 좀더 많이 반복할 수 있으나, 효과는 무시할 정도이다

 

• RPN (Region Proposal Network) – concept

- Feature map 의 각 cell에서 크기와 모양이 다른 K개의 anchor box

- fully Convolutional Network: 각 anchor box에 대해 2개의 class (object/background), box 위치에 대한 4개의 regression

 

3.4 NMS (Non-Maximum Suppression)

: object detection 알고리즘을 구성하는데 대부분 NMS 을 사용하여 연산량을 줄이고 mAP 도 올리는 효과를 본다. 일반적으로 영상 에지를 찾기 위한 NMS 는 현재 픽셀을 기준으로 주변의 픽셀과 비교했을 때 최대값을 경우 그대로 놔두고 아닐 경우 (비 최대) 억제(제거)하는 것이다 

딥러닝을 이용한 object detection에서 대부분은 bounding box + 각 box에 object 가 있을 확률 (class 확률)들이 나오게 되는데, 이중 겹치는 부분을 제거하기 위한 방법으로 사용된다.

NMS를 하려는 가장 큰 이유는 역시 중복제거이기 대문에 예측하 박스들 중 IOU가 일정 이상인 것들에 대해서 수행하게 된다.)

NMS (Non-Maximum Suppression) Algorithm process

1. box들을 object score 기준으로 정렬

2. score 가 가장 높은 box부터 시작해서 다른 모든 box 들과 IoU를 계산해서 0.7 이상이면 같은 object로 간주하여 간주하여 제거 

3. 최종적으로 각 cell 에서 각 object별로 score가 가장 높은 box 하나씩만 잔류

 

3.5 RoI(region of interest) Pooling 

- max pooling을 사용하여 유요한 RoI 내부의 feature를 H x W의 고정된 범위로 작은 Feature map으로 변환하며, H와 W는 특정 RoI와 독립적인 하이퍼 파라미터이다.

 

 

각 RoI는 (r, c, h, w)의 좌표로 표현되는데 (r, c)는 top-left corner, 그리 고 (h, w) 높이와 넓이를 의미한다.

RoI max pooling 은 feature map 위에서 h/H x w/W크기 만큼 grid 를 만들어 max pooling을 하면 논문에서 설정했던 H x W 형태의 feature size로 변환된다. Pooling은 각 feature map 채널에 대해 독립적으로 실행

Ex) 7x5 영역을 2x2로 할 때는 width 7/2 =3 height 5/2=2

- 즉, 다양한 크기의 입력으로부터 일정한 크기의 feature map 을 추출

- SPP (spatial pyramid pooling) 기법을 사용

 

3.6 RPN Loss function 

RPNs 을 학습시키기 위해서는 두개의 이진법으로 된 클래스 라벨(물체가 맞는지 아닌지)을 각 anchor에 할당해야 한다. 다음 두가지 anchor이다 

<positive anchor>

Ground-truth box와 함께 가장 높은Intersection-over-Union(IoU)의 anchor/anchors

Ground-truth box와 함께 Intersection-over-Union(IoU) > 0.7 이상인 anchor

<Negative Anchor>

Ground-truth box와 함께 Intersection-over-Union(IoU) < 0.3 이하인 anchor

여기서 Positive와 Negative 둘 중에 포함되지 않는 Anchor는 학습하는 목표에는 기여되지 않는다 

 

다음과 정의로써, 논문에서는 학습 목표에는 Multi-task loss를 최소화 한다

i : mini-batch 에서의 anchor의 index

Pi : anchor i가 객체인지 아닌지에 대한 예측 확률

Pi* : ground-truth label, 1=positive(객체)/ 0=negative(background)

ti : 예측된 bounding box의 4개의 좌표

ti* : positive anchor 와 연관있는 ground-truth box

Lcls : 객체인지 아닌지, 두 클새르에 대한 log loss

LregLcls (ti, ti* ) = R (ti, ti* ), R은 robust loss function( smooth L1 loss)

Ncls :  normalization 값 (mini-batch 크기 만큼)

Nreg :  normalization 값 (anchor location의 갯수)

: 기본값이 10이고, cls 및 reg 둘다 동일하게 가중치를 부여 

Bounding box regression의 ti, ti* 의 4개의 좌표들이다 

 

이것은 Bounding box regression을 anchor box로부터 ground truth box까지 생각할 수 있다 

그러므로, 우리의 방법은 이전의 방법과 다른 방식으로 Bounding box regression을 얻을 수 있으며, Bounding box regression는 임의의 크기인 ROI를 모아서 수행하며, regression weight 는 모든 region 크기를 공유한다. 우리의 공식은 feature map 의 같은 크기로 예측한다. 

다양한 크기를 할당하기 위해서는 Bounding box regression k의 세트는 학습되어야 한다. 

각각의 regressor는 하나의 scals 그리고 하나의 aspect ratio에 역학을 하고 있으며, k regressor는 weight를 공유하지 않는다. Anchor의 설계 덕분에, 고정된 size와scale 의 특징이 있는데도 불구하고 다양한 크기의 box를 예측하는 한다 

 

Training RPNs

Mini-batch는 positive/negative anchor를 보유하고 있는 단일 이미지로부터 발생된다. 256개의 anchors를 이미지에서 샘플링하여 mini-batch의 loss를 계산한다 (anchor의 비율 pos/neg = 1:1) 만약 positive sample 이 128 개보다 작다면 나머지 negative로 채운다 

즉, RPN에서 weigth는 conv layer의 weight와 cls/reg layer의 weight이다. 이 weight들의 최적값을 찾는 것이 RPN의 목적이다 .

 

'Machine-Learning > paper' 카테고리의 다른 글

[paper] Mask RCNN  (0) 2022.11.24
[Paper] CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features  (0) 2022.10.17
[Paper] RCNN  (0) 2022.10.06
[Paper] Attention  (0) 2022.09.15
[CV Paper] Vision Transformer  (0) 2022.08.25

댓글