AI

DetectoRS: 재귀적 특징 피라미드와 교환가능한 Atrous Convolution 을 이용한 객체 검출

아인샴 2020. 7. 29. 02:53

DetectoRS: Detecting Objects with Recursive Feature Pyramid
and Switchable Atrous Convolution

Siyuan Qiao1 Liang-Chieh Chen2 Alan Yuille1
1Johns Hopkins University
2Google Research

arxiv.org/abs/2006.02334

 

 

  * Object Detection 을 객체 검출이라 정의한다.

  * 밑줄 친 개념은 설명이 필요한 부분인데, 나중에 추가적으로 게시할 예정

  * '우리'라는 것은 논문의 'our', 'we'의 표현

 

 

0. Abstract

  • 많은 최신 객체 검출기들이 (Looking thinking twice)'보고(looking) 생각(thinking) twice' 하는 메커니즘을 이용하여 뛰어난 성능을 보여준다.
  • 본 논문에서, 우리는 객체검출을 위해 이 메커니즘을 Backbone에서 탐구한다.
  • 거시적으로는, 재귀적 특징 피라미드(Recuresive Feature Pyramid;RFP)를 제안한다. 이 RFP는 Feature Pyramid network의 extra feedback connection을 상향식 backbone 층에 통합시켰다.
  • 미시적인 관점으로는, 교환가능한 구멍(atrous)의 Convolution, 즉 Switchable atrous Convolution(SAC)을 제안한다. 이 SAC는feature 들을 각기 다른 atrous rate 로 Convolution하고, switch function을 사용해 집계한 결과를 합쳤다. (문어로 예시된 그림을 보면 알 수 있음)
  • 이들을 합쳐서 나온게 DetectoRS로, 객체출의 성능을 의미심장하게 높였다.
  • CoCo test-dev에 따르면, DetectoRS가 최신으로 객체검출에서는 54.7%의 박스 일치율을 얻었고 instance segmentation 에서는 47.1%의 mask 일치율을 얻었다. 그리고 49.6%의 PQ(panoptic Quality)를 얻었다. 이 코드는 공개적으로 사용가능하다. (github.com/joe-siyuan-qiao/DetectoRS)

1. Introduction (소개)

  • 객체를 검출하기 위해서 인간의 시각적 인지(능력)은 선별적으로 강화했고, 뉴런의 활성화(activation)를 억제시켰다.
  • 억제하는 방식은 high level의 semantic한 information들이 feedback connections를 통과함에 따라 이뤄졌다.
  • 인간의 시각적 시스템에 영감을 받아, 'Looking and thinking twice'는 컴퓨터 비전에서의 뛰어난 예시와 성능을 보여왔다.
  • Faster R-CNN 같은 다수의 유명한 two-stage 검출기들은 결과에 대한 제안들을 우선 내놓는다. 일단 feature들이 어디에 있는지 기반한 다음 객체 검출로 추출된다.  Cascade R-CNN 은 다중-stage 검출기를 발전시켰다, 후속주자의  검출기는 좀더 선택적인 예시들로 detector 앞부분(header)이 학습되엇는데,cascade가 이런 검출기들을 발전시켰다.
  • 이 설계철학의 성공이 우리로 하여금 객체 검출을 위한 신경망 back bone 디자인을 탐험하도록 동기를 줬다.

-- 여기서부터 정리가 아니라 논문 번역이라는 생각이 들어 정리 진행 

 

2. Related Works 

  • Object Detection : 1-stage와 multi-stage method 가 있다. multi-stage detector가 보통 좀더 유연하고 정확하지만 전자보다 복잡하다.(자원소모도 크다) 이 논문에서는 multi-stage인 HTC를 baseline으로 잡아서 양쪽의 비교를 진행할 것이다.
  • Multi-sclae Featrues : 우리 RFP(재귀 특징 피라미드)는 FPN을 기반으로, multi-scale의 특징들을 이용하기 위한  효율적인 객체 검출 시스템이다. 이전에 다른 객체 검출기들이 backbone에서 바로 추출한 multi-scale feature를 이용했는데, FPN은 다른 scale에서의 feature들을 sequentially 하게 '조합'한다. FPN이 top-down path를 통합시키는 것이 이를 위함이다. (다른 네트워크들 많지만) 우리의  'RFP'는 bottom-up backbone을 반복적으로 통과하여 FPN의 높은 성능을 끌어냈다. 여기 FPN에다 특징들을 끌어내기 위해 Astrouus Spatial Pyramid pooling(천공 피라미드 풀링)도 추가했다. 
  • Recursive Convolutional Network : 다수의 재귀 방법론이 여러 타입의 컴퓨터 비전 문제를 해결하려 했다. 최근에 CBNet이  multiple bakbone을 타고 내려오며 FPN이 인풋이 되었는데, 우리의 RFP는 제안한 ASPP-enriched FPN을 포함한 퓨전 모듈들도 재귀연산을 수행한다. 
  • Conditional Convolution 조건적 convolutional networks들은 동적 커널, width, depth 등을 적용했다. 이와 달리 우리가 제안하는 SAC(교환 천공 컨벌루젼) 은  표준 컨벌루젼부터 조건 컨벌루젼까지 pre_trained model의 변경 없이도 효과적이다. SAC는 그래서 다수의 pretrained bakbone에게 plug-and-play 모듈이다.  더욱이 SAC는 global context inforamation 과 novel weight locking mechanism을 쓰는데 이는 (pretrain_model을) 더욱 효과적으로 만든다.

--여기까지도 아직 번역생각이 들어 요약진행

 

3. Recursive Feature Pyramid

  3.1 Feature Pyramid Networks 

     이 부분은 FPN의 background를 제공한다. 

  • B_i : bottom-up backbone의 i-번째 stage (그림 2-a 왼쪽 사각형)
  • F_i : top-down FPN의 i-번째 연산  (그림 2-a 오른쪽 사각형)
  • f_i : FPN을 이용한 backbone이 내놓는 output인 i번째 feature sets (오른쪽 predict 화살표) 
  • S : stage의 수 
  • x_0~n : (통과하는 입력값들; x_0: 입력 이미지; )

(f_s+1 = 0)

S= 3일때, 그 결과인 feature_i는 그림 2-a와 같다.   

RFP 구조도 (a) 기본적인 FPN (b) FPN에 feedback connection 을 추가했다.  (c) 그 feed back 에 ASPP를 붙였다. 펼친것과 같아서 unrolled라 함

 

3.2 Recursive Featrue Pyramid 

    제안하는 RFP는 FPN에다 feedback connection 을 추가한 것이다. R_i라고 부르며, 이는 bottom-up 백본에게 재연결 하기전의 feature transforamtion 을 의미하는데 (2-b)에 강조된 영역(연결한 화살표)이다. R_i을 bottom-up 백본으로 되돌아가는 과정을 거치기 전인 feature transfomation 을 의미한다고 해보자. 그럼 모든 i=1,.., S, 에서 RFP의 특징 f_i output은 이렇게 정의된다. 

이것이 RFP를 재귀적 연산으로 만드는 것이다. 우린 이걸 풀어서(unroll) sequential network 로 만들었다. 그래서 모든 i는 1,...S,이고 t=1,...T 인 식으로 말이다. 이렇게!

S를 stage의 수라고 하면 T는 unroll iteration 의 수 이다. 아래 기입한 t는 unrolled step t의 (f^0)_i =0 으로 설정했을 때의  연산과 특징을 의미한다.

T를 unroll을 반복적으로 수행한 횟수(iteration)이라고 하자, 그리고 t는 unroll step t에서의 연산과 특징들을 설명할때 쓸 테다. 횟수 0의 featrue_i 는 0으로 세팅했다. 

수행 할때, F_i^t 와 R_i^t 가 다른 스텝에서 서로 공유 된다.  

우리는   shared and different B_i^t 를 T값 들에 따라 달라지는 퍼포먼스에서도 볼 수 있고 ablation study Section.5에서 보여줬다. 우리 실험에서, 우리는 다른 B_i^t를 쓰고 T=2로 정했다.  실험에서  T=2의diffent B_i^t를 썼다. 따로 명시되지 않았다면 그렇다.

 

*Ablation study는 모델이나 알고리즘을 구성하는 다양한 구성요소(component) 중 어떠한 “feature”를 제거할 때, 성능(performance)에 어떠한 영향을 미치는지 파악하는 방법을 말한다.   

 


이거 마지막으로 하던게 2년 전인데 그냥 썩히느니 대충 마무리를 짓고자 한다. -220713

앞부분에도 추가할 내용은 녹색글자로 추가함


ResNet 백본 (B) 에 x와 Recursive featrue인 R(f) 두개를 입력값으로 받게 하였다. Resnet 은 4 satge인데, 각각 스테이지는 유사한 블럭들 여러개로 구성되어있다. 우리는 여기서 각 스테이지의 첫번 째 블럭을 건드렸다. 

Fig.3 RFP는 백본으로 쓰는 ResNet 에 transformed features을 각stage 첫번 째 블럭에 추가시켰다.

이 블럭들은 3-layer feature를 연산하고 나서 shortcut을 통해 (Resnet에서) 연산된 feature들에 이를 더한다. R(f) 의 feature을 이용하기 위해서, 우리는 또다른 conv layer를(1*1kernel) 추가했다. pretrained checheckpoint를 로드한다면 이 layer의 가중치는 어떤 실제 효과를 갖기 위한게 아니기 때문에 0으로 초기화 된다.

 

모듈 R을 이어붙이기 연결시키기 위해서 우리는 ASPP(Astrous Spatial Pyramid Pooling) 를 썼다. 모듈 R은 f_i^t(tranform 된 i번째 statge의 feature) 를 입력값으로 삼고 이를  RFP feature로 transform 하는 모습이 Fig.3을 보면 알 수 있다. 

이 모듈에서 F_i^t를 input으로 취하는 병렬적인 branch들이 있다.  이 모듈의 output은 채널간으로 concatenate(이어져)서 R의 최종 output이 된다. 그들 중 3개branch는 ReLU 이 붙어있는 Conv Layer가 되고 여기서의 output channel의 수는 input이 가진 것에 비해 1/4이 된다.  마지막 branch는 global average 풀링에 연산된 feature을 넣는다. 이 feature는  1*1 conv 와 ReleLu레이어를 통과하고 1/4-size로 압축된 feature이다. 

마침내, 3branch에서 나온 features는 resize 하고 Concatenate된다. configuration은 다음과 같다. 

 

size = [1,3,3]

astrous rate = [1,3,6]

padding = [0,3,6] 

 

ASPP와 다르게 모듈 R은 dense한 prediction 작업이 되지 않기 때문에 concatenated feature 뒤에는 Conv Layer 가 없다. input featrure 채널보다 1/4이된 4branch의 각  branch는 feautre를 생성합니다. 이 branch는 그들을 concatenate하여 R의 input feature와 똑같은 사이즈의 input을 만듭니다.  섹션 5를 보면, RFP의 성능을 볼 수가 있습니다 ASPP 유무 별로도 성능확인이 가능합니다. 

 

 

3.4 Fusion 모듈을 이용한  Output 갱신 

 

등식(Equation) 3, RFP가 재귀 연산을 하면 값을 unroll 하여 sequential Network에게 전달한다.

등식 3에서 쓰인 t+1 stage의 f_i는 FRP가 f_i^t와 f_i^t+1 의 조합값을 통해 갱신된다. 

-내용 몰라서 일단 독해함

Fig2c를 보다시피 우리의RFP는 추가적으로 f_i^t와 f_i^t+1 을 합쳐서 Equation3에 이용되는 t+1stage의 f_i 의 값을 ㄱ갱신시킨다.  우리가 f_i^t를 데이터의 sequence로 본다면  fusion module 은 RNN과 그 과정이 유사하다. 융합 모듈은 2에서 T까지 펼쳐진 단계에 사용됩니다. 펼쳐진 단계 t + 1(t = 1, ..., T − 1)에서 융합 모듈은 단계 t에서 특성 F()를 취하고 단계 t(+1)에서 FPN에 의해 새로 계산된 특성 Ft를 취합니다. 입력으로.

퓨전 모듈은 f_i^t+1 의 특징을 사용하여 attention map을 연산하고 여기에 Sigmoid를 낀convolution Layer 을 이용합니다.

 

결과로 나오는 attention map은 f_i^t와 f_i^t+1 합의 가충치를 연산하여 f_i를 갱신시킵니다. 이 f_i는 다음 스텝에서 연산을 위한 f_i^t+1로써 사용될 것입니다. 세션 5의 Ablation  study에서 우리가 퓨전모듈의 여부에 관한 RFP퍼포먼스를 보여주겠습니다.