2020. 2. 27. 19:04ㆍPapers/Object Detection
Cascade RPN: Delving into High-Quality Region proposal Network with Adaptive Convolution
Thang Vu, Hyunjun Jang, Trung X. Pham, Chang D. Yoo
NeurIPS 2019
Abstract
- 기존의 RPN의 경우에 anchor에 대한 부분은 굉장히 경험론적인(heuristically) 경향이 있었다. 그렇기에 제한점 또한 명확히 들어나는데 그러한 부분을 체계적으로 해결함으로써 검출 성능과 구역-제안(region-proposal)의 퀄리티를 향상시키는 Cascade Region Proposal Network(Cascade RPN)을 제안한다.
- 첫 째, 다양한 종횡비와 스케일을 가지는 사전에 정의된 여러가지의 anchors을 사용하는 대신, Cascade RPN은 각 위치당 단일 앵커만을 사용한다.
- 둘 째, 정렬(alignment)를 파괴하지 않기 위해 adaptive convolution을 적용한다. ( 기존에 대표적인 deformable convolution의 경우에는 정렬에 의해서 성능이 향상되었는지 kernel의 변화의 의해 성능이 향상되었는지에 대한 부분에 있어서 불투명하기 때문에 다음과 같은 adaptive convolution을 제안함 )
- 이러한 방법들을 적용시킴으로서 two-stage Cascade RPN은 일반적인 RPN방식보다 13.4 AR이 높았으며, 어떠한 다른 방법들보다 높다.
- Fast R-CNN과 Faster R-CNN에 적용하였을 때, 각각 3.1 , 3.5 mAP 향상을 확인할 수 있다.
Introduction
- R-CNN과 비교하였을 때, RPN에 관련된 연구는 굉장히 적다.
- 해당 논문은 기존의 문제점이였던 Anchor에 대해서 굉장히 경험론적(휴리스틱)한 부분에 있는 제한점을 해결하기 위해 RPN 향상에 초점을 맞추었다.
- Anchor는 정답 객체와의 높은 겹침(유사함)을 얻는 긍정 샘플들의 충분한 수를 얻기 위해 다양한 스케일과 종횡비가 필요하다.
- 적당한 스케일과 종횡비를 조절하기 위해서 굉장히 많은 튜닝이 필요로하다.
- 대표적인 방법으로는 K-means clustering과 같은 방법이 존재한다. (YOLO9000에서 사용된 방법)
- 위의 그림을 보면 RPN은 높은 분산의 분포 회기를 학습할 필요가 있다.
- 만약 회기 분포가 완벽히 학습되어졌다면, stage 2에서의 회기 분포는 Dirac Delta 분포와 유사해질 것이다.
- 그러나, stage 1에서 높은-분산 분포를 학습하는 것은 어렵기에 stage 2 회기가 필요하다.
- stage 2 분포는 stage 1에 비해 낮은 분산을 가지기에 학습하기는 쉽지만 Iterative RPN에 있어서는 실패합니다.
- 이러한 실패는 그림1의 b를 보면 알 수 있습니다. (기존의 방법과 큰 성능 차이를 보여주지 못함)
- stage1이후 anchor는 정답과 가깝게되지만, 검출에 있어서 정렬 규칙(alignment rule)은 사라진다.
Abstract에서 언급된 내용 ( 중요 부분 )
- 기존의 RPN의 경우에 anchor에 대한 부분은 굉장히 경험론적인(heuristically) 경향이 있었다. 그렇기에 제한점 또한 명확히 들어나는데 그러한 부분을 체계적으로 해결함으로써 검출 성능과 구역-제안(region-proposal)의 퀄리티를 향상시키는 Cascade Region Proposal Network(Cascade RPN)을 제안한다.
- 첫 째, 다양한 종횡비와 스케일을 가지는 사전에 정의된 여러가지의 anchors을 사용하는 대신, Cascade RPN은 각 위치당 단일 앵커만을 사용한다.
- 둘 째, 정렬(alignment)를 파괴하지 않기 위해 adaptive convolution을 적용한다.
- Cascade RPN은 개념적으로 간단하면서도 사용하기 쉽다.
- 간단하게 기존에 있던 방식에 적용하더라도 성능 향상을 얻을 수 있다. (수치 부분은 abstract에서도 언급함 추후 result를 보여줄 것. )
Related Work
Multi-stage RPN
- 대표적으로 one-stage와 two-stage방식이 존재한다.
- one-stage는 분류과 회기를 동시에 수행하며 계산 효율적이다(conputational efficiency).
- two-stage는 first-stage에서는 회기를 진행하고 second-stage에서 추가적인 회기와 분류를 진행한다. 따라서 one-stage에 비해서 높은 성능을 가지고 있지만 계산 효율적이지는 못한다. ( two-stage로 나눠서 진행하기 때문에 그만큼 hyperparameter의 수 또한 크다. )
- RPN의 성능 향상을 위해서 많은 연구들이 있었다.
- 정확한 위치를 얻을때 까지 반복적으로 다음 stage의 입력으로 현재 stage의 결과값을 주는 방식이 제안되었다.
- 그러나, 이 접근법은 비정렬적인 이미지를 회기하기 때문에, 객체 검출읠 위해 필요한 정렬 규칙을 파괴한다.
- 이러한 문제를 해결하기 위해서 deformable convolution이 제안되었다.
- 그러나 이 방식은 정렬 규칙에 의해 향상이 일어났는지, deformablie convolution의 이점때문에 성능이 좋아졌는지 불투명하다.
Anchor-based vs Anchor-free
- bounding box는 흔히 배경의 상당량을 포함하기 때문에 해당 박스가 정상적인지 비정상적인지 판단하는데 어려움이 있다.
- 이러한 부분을 해결하기위한 대표적인 기준점으로 IoU(Intersection over Union)을 사용하여 비교한 후 판단한다.
- 그러나, 충분한 긍정적인 샘플들을 얻기 위해서는 각 위치당 크기가 다른 스케일과 종횡비를 가진 많은 anchor가 필요로한다.
- 이러한 hyperparameters들은 굉장히 휴리스틱하게 조정되어지고 최종 정확성에 굉장히 큰 비중을 차지한다.
- anchor를 사용하는 대신 객체의 중심 지역과 예측 위치 사이의 거리를 사용하여 비교하는 anchor-free 방식 또한 존재한다.
- 이러한 방법은 간단하며 적은 양의 hyperparameters가 필요하지만 복잡한 장면에 대해서는 제약점들이 존재한다.
Region Proposal Network and Variants
Region Proposal Network
- 이미지 $I$에 대해서 크기 $W{\times}H$기 주어졌을 때 Anchor box ${\mathbb{A}}=\{a_{ij}|0<(i+\frac{1}{2}){\cdot}s<=W,0<(j+\frac{1}{2}){\cdot}s<=H\}$ stride $s$에 대해서 초기화된다.
- 각 anchor box $a$는 4개의 튜플로 표현되어지며 형태는 $a=(a_x,a_y,a_w,a_y)$이며, $(a_x,a_y)$는 anchor의 중심 위치를 의미하며, $(a_w,a_h)$는 anchor의 width와 height를 의미한다.
- $\delta$는 다음과 같이 표현되어진다. 식 (1)
$$\delta_x=(t_x-a_x)/a_w, \delta_y=(t_y-a_y)/a_h$$
$$\delta_w=log(t_w/a_w), \delta_h=log(t_h/a_h)$$
- 여기서 $(t_x,t_y,t_w,t_h)$는 각각 ground truth(정답)의 중심 좌표 x,y 그리고 상자의 width와 height를 의미한다.
- bounding box를 최소화하기 위한 $L$는 다음과 같이 표현된다. 식 (2)
$$L(\hat{\delta},\delta)=\sum_{k\in\{x,y,w.h\}}smooth_{L1}(\hat{\delta}_k-\delta_k)$$
- regressed anchor은 식 (1)을 거꾸로 변환함으로써 다음과 같이 표현할 수 있다.(3)
$$a'_x=\hat{\delta}_xa_w+a_x, a'_y=\hat{\delta}_ya_h+a_y$$
$$a'_w=a_w{\exp(\hat{\delta}_w)},a'_h=a_h{\exp(\hat{\delta}_h)}$$
$$𝛿_𝑥=(𝑡_𝑥−𝑎_𝑥 )/𝑎_𝑤 →𝛿_𝑥⋅𝑎_𝑤=𝑡_𝑥−𝑎_𝑥 →𝑡_𝑥=𝛿_𝑥⋅𝑎_𝑤+𝑎_𝑥 $$
$$𝑡_𝑥=𝛿_𝑥⋅𝑎_𝑤+𝑎_𝑥 →(1) $$
$$𝑎_𝑥^′=𝛿 ̂_𝑥 𝑎_𝑤+𝑎_𝑥 →(3) $$
$$𝛿_𝑤=log(𝑡_𝑤/𝑎_𝑤 ) →exp(𝛿_𝑤 )=𝑡_𝑤/𝑎_𝑤 →𝑡_𝑤=𝑎_𝑤 exp(𝛿_𝑤 ) $$
$$𝑡_𝑤=𝑎_𝑤 exp(𝛿_𝑤 ) →(1) $$
$$ 𝑎_𝑤^′=𝑎_w exp(𝛿 ̂_𝑤 ) →(3) $$
- regressed anchor $\mathbb{A}'=\{a'\}$는 non-maximum-suppression(NMS)를 통해 제안된 박스 $\mathbb{P}$를 얻을 수 있다 식 (5)
$$\mathbb{P}=\text{NMS}(\mathbb{A}',\mathbb{S})$$
- 여기서 $\mathbb{S}$는 분류 bracnh에서 학습된 objectness scores이다.
Iterative RPN and Variants
- Iterative RPN의 경우에는 반복적으로 다음 stage의 입력으로 새로운 $\mathbb{A}'$를 입력으로 반복적으로 사용하여 다듬는다.
- 정확한 위치를 얻을 때까지 식 (1)에서 (3)을 반복적으로 수행한다.
- 그러나 이 방식은 anchor와 각 반복 후 변화하는 anchor의 위치와 모양에 대해 표현된 특징들과 anchor간의 불일치가 존재한다.
- 해당 방법은 해결하기 위해, 최근에 사용되는 방법으로는 deformable convolution이 있다.
- 하지만 해당 방법 또한 정렬 규칙에 의한 것인지 kernel에 의한 것인지에 대한 불투명성이 존재하여 여전히 제약이 존재한다.
- 이러한 방법들 대신 Cascade RPN을 제안하는데 해당 방법은 adaptive convoltuion을 사용함으로써 정렬 규칙을 보장한다.
Cascade RPN - Adaptive Convoltuion
- grid dilation = 1이고 kernel size가 $3\times3$일 경우 $\mathbb{R}={(-1,-1),(-1,0),...,(0,1),(1,1)$과 같이 표현되어 질 수 있다.
- 각 위치 $p$마다 결과 feature $y$는 다음과 같이 표현 된다.
$$y[p]=\sum_{r\in\mathbb{R}}w[r]{\cdot}x[p+r]$$
- adaptive convolution은 $\mathbb{R}$이 offset field $\mathbb{O}$로 대체된다.
$$y[p]=\sum_{o\in\mathbb{O}}w[o]{\cdot}x[p+o]$$
- 오프셋 $o$는 중심 오프셋과 모양 오프셋으로 구성되어져 있다.
$$o = o_{ctr}+o_{shp}$$
- $o_{ctr}=(\bar{a}x-p_x,\bar{a}_y-p_y)$와 같이 표현되고 $o{shp}$은 kernel size가 $3\times3$일 경우 아래와 같이 표현될 수 있다.
$$o_{shp}\in\{(-\frac{\bar{a}_w}{2},-\frac{\bar{a}_h}{2}),(-\frac{\bar{a}_w}{2},0),...,(0,\frac{\bar{a}_h}{2}),(\frac{\bar{a}_w}{2},\frac{\bar{a}_h}{2})\}$$
- 일반적인 Convolution은 dilation이 1일 경우와 동일하다.
- dilated convolution은 dilation값이 증가함에 따라, 의미론적 범위를 향상시킨다.
- deformable convolution은 오프셋을 학습함으로써 공간적인 샘플링 위치를 증가시킨다.
- 반면에 제안된 adaptive convolution은 anchor와 feature사이의 정렬을 보장하면서 샘플링을 수행한다.
- Adaptive convolution은 중심 오프셋들이 0일 경우 dilated convoltuion과 동일하다.
Cascade RPN - Sample Discrimination
- 사전에 정의된 스케일과 종횡비를 가지는 여러가지의 anochor들을 사용하는 대신, Cascade RPN은 위치당 단일 anchor에 의존하며 다중-stage 개선을 수행한다.
- 그러나, 이러한 의존은 anchor-free 또는 anchor-based의 사용을 통하여 학습 샘플이 정상인지 비정상인지 결정하는데 새로운 문제를 발생시킨다.
- anchor-free로 시작하여 anchor-based 매트릭으로 사용하여 점진적으로 강화한다.
- 특히, first-stage에서 만약 객체의 중심 지역안에 중심이 있다면 긍정 샘플로 판단한다.
- 다음 따라오는 stage에서, anchor는 IoU 임계점보다 높을 경우 긍정 샘플로 판단한다.
- two-stage Cascade RPN은 그림 2e에서 볼 수 있다.
- 알고리즘은 다음과 같이 진행된다.
- Cascade RPN의 loss는 다음과 같이 표현한다.
$$L = \lambda\sum^T_{\tau=1}a^{\tau}L^{\tau}{reg}+L^{\tau}{cls}$$
- $L^{\tau}{reg}$ 는 stage $\tau$에서 회기 손실을 의미하며 $L^{\tau}{cls}$는 분류 손실을 나타낸다.
- 두 loss의 균형은 $\lambda$를 통해 맞춘다.
- 분류와 회기 손실에 각각 BCL(binary cross entropy)와 IoU를 사용한다.
Experiments
- COCO 2017데이터셋을 사용하였다.
- backbone으로는 ResNet50-FPN을 사용하였으며 two-stage이다.
- 각 위치당 단일 anchor의 크기는 $32^2,64^2,128^2,256^2$, 그리고 $512^2$를 각 feature levels $𝐶_2,𝐶_3,𝐶_4,𝐶_5$,그리고 $𝐶_6$, 각각 일치하게 사용하였다.
- 각 단계에 존재하는 무시하는 임계값 $\sigma_{ctr},\sigma_{ign}$는 각각 0.2 0.5를 사용한다.
- second-stage의 anchor-based 매트릭에서의 IoU 임계값은 0.7을 사용한다.
- 균형을 맞추기 위한 $\lambda=10$을 사용한다.
- NMS 임계값은 0.8로 설정한다.