약초의 숲으로 놀러오세요

RefineDet 논문(Single-Shot Refinement Neural Network for Object Detection) 리뷰 본문

Computer Vision/Object Detection

RefineDet 논문(Single-Shot Refinement Neural Network for Object Detection) 리뷰

herbwood 2021. 3. 22. 22:02

이번 포스팅에서는 RefineDet(Single-Shot Refinement Neural Network for Object Detection) 논문을 읽고 리뷰해도록 하겠습니다. 논문에서는 two-stage detector의 3가지 특징을 설명합니다. 첫 번째로, two-stage 구조와 더불어 sampling heuristic을 사용하여 class imbalance 문제가 one-stage detector에 비해 상대적으로 덜 심각합니다. 두 번째로, 예측된 box의 파라미터를 최적화하기 위해 two-stage cascade를 사용한다는 점입니다. 마지막으로, 객체를 표현하기 위해 two-stage feature를 사용합니다. 두 번째, 세 번째 특징을 통해 객체에 대한 보다 정교한 예측이 가능해집니다. 논문의 저자는 위에서 언급한 two-stage detector의 장점을 모두 살릴 수 있는 one-stage detector인 RefineDet을 소개합니다. 


Preview

RefineDet architecture

RefineDet은 서로 연결되어 있는 ARM, ODM 모듈로 구성되어 있습니다. ARM(Anchor Refinement Module)은 backbone network에서 추출한 다양한 scale의 feature map을 입력 받아 negative anchor를 제거하고 anchor의 크기와 위치를 대략적으로 조정(refine)하여 ODM에 제공합니다. ODM(Object Detection Module)은 refined anchor를 기반으로 객체에 대한 정확한 위치와 class label을 예측합니다. 이 때 ODM에서 사용하기 위해 ARM에서 출력된 feature map을 변환시켜 주는 블록인 TCB(Transfer Connection Block)이 있습니다. 

Main Ideas

Network Architecture

Anchor Refinement Module

RefineDet은 서로 연결되어 있는 ARM, ODM이라는 2개의 모듈로 구성되어 있습니다. 먼저 ARM(Anchor Refinement Module)은 생성된 anchor box 중에서 적절한 sample을 골라내고 이를 조정(refine)하는 역할을 합니다. anchor의 위치와 크기를 대략적으로(coarsely) 조정하여, 연결되어 있는 후속 모듈에 초기화가 잘 된 anchor를 제공합니다. ARM은 two-stage detector에서 사용하는 Region Proposal Network와 같은 기능을 수행한다고 볼 수 있습니다. 

 

 

ARM은 backbone network의 지정한 layer에서 feature map을 추출한 후 해당 layer에 대하여 conv 연산을 추가한 구조입니다. 이를 통해 조정(refined)된 anchor box의 위치 정보를 담고 있는 feature map과, 해당 anchor box의 foregraound/background label에 대한 정보를 담고 있는 feature map을 얻을 수 있습니다. 

 

 

Object detction module

ODM(Object Detection Module)은 ARM으로부터 refined anchor에 대한 정보를 입력 받아, 객체에 대한 정확한 위치와 class label을 예측하는 역할을 합니다. 이 때 ARM의 feature map을 ODM에서 사용하기 위해 변환해주는 블록인 TCB(Transfer Connection Block) 거치게 됩니다. 이에 대해서는 바로 뒤에서 살펴보도록 하겠습니다. 

 

ODM은 TCB에서 출력된 feature map에 conv 연산을 적용하여 객체의 세밀한 위치와 class label에 대한 정보를 담고 있는 feature map을 출력합니다. 

*Two-step Cascaded Regression

One-stage detector는 작은 객체를 포착하지 못하는 문제가 자주 발생합니다. RefineDet은 이러한 문제를 해결하기 위해 Two-step Cascaded Regression 방법을 사용합니다. 별다른 내용은 아니고 위에서 살펴본 바와 같이 ARM이 anchor의 크기와 위치를 조정하는 과정을 거친 후, ODM에서 세밀한 bounding box regression을 수행한다는 내용입니다. 

 

ARM을 사용하지 않아 Two-step Cascaded Regression을 수행하지 않을 경우, mAP 값이 2.2% 하락했다고 합니다.

Transfer Connection Block

Transfer Connection Block

TCB(Transfer Connection Block)은 ARM과 ODM을 연결시키기 위해서 ARM의 서로 다른 layer로부터 비롯된 feature를 ODM이 요구하는 형태에 맞게 변환시켜주는 역할을 하며, 이를 통해 ODM은 ARM과 feature를 공유할 수 있게 됩니다. 참고로, anchor와 관련된 feature map에 대해서만 TCB를 사용한다(positive/negative label에 대한 정보를 함축한 feature map은 TCB에 입력하지 않습니다).

 

TCB는 feature map 1과 feature map 2를 입력받습니다. feature map1은 ARM으로부터 anchor와 관련된 feature map입니다. feature map 1을 일련의 conv layer(conv-relu-conv)를 거쳐 feature map의 channel 수를 256으로 맞춰줍니다. 

Transfer Connection Block

feature map 2는 backbone network의 후속 layer에서 추출한 feature map을 ARM, 그리고 TCB의 conv layer에 입력시켜 얻은 결과입니다. feature map2은 backbone network의 더 깊은 layer에서 추출했기 때문에 크기가 feature map 1에 비해 작습니다. feature map 2에 대하여 deconvoltution 연산을 적용한 후 feature map 1과 element-wise하게 더해줍니다. 이후 합쳐진 feature map을 conv layer(conv-relu-conv)에 입력하여 얻은 결과를 ODM에 전달합니다. 

 

이러한 과정을 통해 더 깊은 layer에서 얻은 high-level feature를 활용하는 것이 가능합니다. TCB는 서로 다른 scale을 가진 feature map을 upsamling한 후 element-wise하게 더해주는 Feature Pyramid Network와 같은 역할을 수행한다고 볼 수 있습니다. 

 

TCB를 사용하지 않을 시 mAP 값이 1.1% 하락합니다.

Negative Anchor Filtering

본 논문에서는 class imbalance 문제를 줄이기 위해서 negative anchor filtering 과정을 추가했습니다. 학습 시, refined anchor box, 즉 ARM이 출력한 결과에 대하여, 만약 negative confidence가 사전에 지정한 threshold보다 높을 경우, ODM에 해당 anchor box를 전달하지 않는 방법입니다. 이는 곧 refined hard negative anchor box, 즉 조정된 hard negative(모델이 예측하기 어려워 하는) sample과, refined positive anchor box만을 ODM에 전달한다는 것을 의미합니다. 

Training RefineDet

RefineDet architecture

1) Multi scale feature extraction from backbone network

RefineDet은 VGG-16 네트워크에 추가적인 layer를 부착한 형태의 backbone network를 사용합니다. backbone network의 지정한 layer에서 feature map을 추출합니다. 

 

  • Input : Image
  • Process : feature extraction
  • Output : multi scale feature maps {v1, v2, v3, v4}

2) Refine anchor boxes by ARM(Anchor Refinement Module)

앞선 과정에서 얻은 multi scale feature maps {v1, v2, v3, v4}를 ARM에 입력하여 각각 두 개의 feature map을 얻습니다.

첫 번째 feature map 은 refined anchor에 대한 정보를 함축하고 있습니다. 두 번째 feature map은 해당 anchor가 객체를 포함하고 있는지, 배경인지 여부, 즉 positive/negative에 대한 정보를 담고 있습니다. 

 

이후 두 번재 feature map에 대하여 negative anchor filtering 과정을 수행하여, 지정한 threshold보다 낮은 confidence score를 가지는 anchor를 학습에서 제외합니다.

 

  • Input : multi scale feature maps {v1, v2, v3, v4}
  • Process : refine anchors(conv layers, negative anchor filtering)
  • Output : refined anchors {(v1r1, v1r2), (v2r1, v2r2), (v3r1, v3r2), (v4r1, v4r2)}

3) Channel by TCB(Transfer Connection Block)

TCB는 ARM이 출력한 두 개의 feature map 중 오직 anchor의 위치에 대한 정보를 함축하고 있는 feature map만 입력받습니다. class에 대한 정보를 함축하고 있는 feature map은 사용하지 않습니다. TCB는 다음과 같은 순서로 동작합니다. 

 

1) ARM에서 얻은 feature map에 conv 연산 적용 후 channel 수 256으로 맞추기

2) high-level feature map에 대하여 deconvolution 연산 적용하여 resolution 키우기

3) 두 feature map을 element-wise하게 더해주기

 

  • Input : refined anchors {v1r1, v2r1, v3r1, v4r1}, high-level features {T(v2r1), T(v3r1), T(v4r1)}
  • Process : transfer ARM features 
  • Output : transfered features {(v1r1 + deconv(T(v2r1))), (v2r1 + deconv(T(v3r1))), (v3r1 + deconv(T(v4r1))), v4r1}

4) Predict bounding box regressor and class label by ODM(Object Detection Module)

ARM에서 얻은 feature map 중 positive/negative 여부에 대한 정보가 담긴 feature map과 TCB에서 얻은 transfered features을 입력받습니다. 각각에 대해 conv 연산을 적용하여 최종 prediction을 수행합니다. 

 

  • Input : pos/neg features {v1r2, v2r2, v3r2, v4r2}, transfered features {(v1r1 + deconv(T(v2r1))), (v2r1 + deconv(T(v3r1))), (v3r1 + deconv(T(v4r1))), v4r1}
  • Process : final prediction
  • Output : bounding box regressors, class scores

RefineDet은 VOC 2007, 2012 데이터셋을 통해 실험한 결과, mAP 값이 각각 85.8%, 86.8%을 보이며, 당시 state-fo-the-art 모델보다 더 높은 정확도를 보였다고 합니다. 또한 MS COCO 데이터셋에서는 mAP 값이 41.8%를 보였습니다. 

 

ARM이 RPN의 역할을 수행하여 anchor box의 위치와 크기를 보다 정교하게 예측할 수 있었으며, TCB가 Feature Pyramid Network와 유사한 기능을 수행하여, high-level feature map의 정보를 활용하여 성능을 향상시킬 수 있었습니다. RefineDet은 two-stage detector에서 주로 사용되던 아이디어를 one-stage detector에 자연스럽게 도입하였다는 점에서 굉장히 흥미로웠습니다. 최근에는 이러한 하이브리드 구조를 가지는 모델들이 자주 등장하고 있는 것 같습니다. 다음 포스팅에서는 M2Det 논문을 읽고 리뷰해보도록 하겠습니다. 

 

Reference

RefineDet 논문(Single-Shot Refinement Neural Network for Object Detection)

RefineDet pytorch 구현 github repository

Comments