논문 읽기/Object Detection

[논문 읽기] RefineDet(2018), Single-Shot Refinement Neural Network for Object Detection

AI 꿈나무 2021. 5. 4. 17:05
반응형

 안녕하세요! 오늘 읽은 논문은 RefineDet, Single-Shot Refinement Neural Network for Object Detection 입니다.

 

 RefineDet은 1-stage 모델과 2-stage 모델의 장점을 모두 활용한 모델입니다. 실제 모델 구조를 보면, 1-stage 로 식별해야 할지 2-stage로 식별해야 할지 상당히 애매한 구조를 갖고 있습니다. 논문 저자는 1-stage 모델이라고 표현하네요. 대신에 Two-Step Cascaded Regression이라는 표현을 사용합니다.

 

RefineDet

 RefineDet은 2가지 모듈로 구성되어 있으며, 이 두 모듈을 연결해줄 block이 존재합니다. 첫 번째 모듈은 ARM(anchor refinement module)이며 ARM에서 anchor박스를 정제하고, negative anchor를 filter 하는 역할을 합니다.

 

 두 번째 모듈은 ODM(object detection module)입니다. ARM에서 정제된 anchor을 입력받아, anchor의 multi class를 예측하며 좌표를 regression 합니다.

 

 두 모듈을 연결할 block은 TCB(transfer connection block)입니다. TCB는 ARM에서 생성한 anchor를 ODM으로 전달하는 역할을 수행합니다.

 

 RefindeDet이 좋은 성능을 낼 수 있는 이유는, (1) ARM에서 negative anchor을 filter하여 class imbalance 개선 효과가 있습니다. (2) ARM에서 정제된 anchor로 ODM가 예측을 수행하므로 좀 더 정확한 예측을 수행합니다. (3) TCB가 FPN과 비슷하게 multi-scale prediction 역할을 수행합니다. TCB는 서로 다른 크기의 피쳐맵 정보를 활용하도록 도와주는 역할을 수행합니다.

 

 

ARM(anchor refinement module)

  • 각 피쳐맵의 cell에 사전에 설정한 anchor 박스의 수를 할당합니다.
  • anchor 박스에 positive, negative를 할당하며, ground truth와의 offset을 계산합니다.
  • negetive anchor를 제거하여, positive:negative = 1:3으로 조절합니다.
  • ARM에 대한 손실을 계산하기 때문에, 매 학습마다 offset이 변경되어 anchor가 refinement되는 효과도 존재합니다. 

T

TCB(transfer connection block)

 

  • ARM에서 생성한 refined anchor을 ODM에 전달합니다. FPM의 Top down, lateral connection과 비슷하다고 생각되네요.
  • 이전 피쳐맵을 deconv 연산으로 upsample하여 다음 피쳐맵으로 전달하므로, multi-scale detection이 가능합니다. 이는 object detection에서 고질적인 문제인 작은 물체를 탐지하기 위함입니다.

ODM(object detection module)

  • ARM에서 생성한 refined anchor을 입력받아 multi-class prediction과 좌표 regress를 수행합니다.
  • 좀 더 정확한 anchor에 대해 예측을 수행하므로 정확도가 향상됩니다.
  • class prediction과 좌표 regress는 3x3 convolution을 사용합니다.
  • ARM에서 negative anchor가 제거되므로, class imbalance 문제가 완화됩니다.

Loss function

 ARM, ODM 각각에서 loss를 계산합니다.

 

 localization loss는 faster r-cnn과 동일하게 smooth l1 loss를 사용합니다.

 classification loss는 arm에서 cross-entropy loss를 사용하고, odm에서는 softmax loss를 사용합니다.

 

Performance

 

 얼핏 2-stage 같아 보이는 refinedet을 1-stage로 분류하는 이유는 아마 생성된 RoI를 RoI pooling로 결합하는 과정이 없어서 그런것 같네요...ㅎㅎ 2-stage는 Roi Pooling으로 생성된 피쳐맵에서 anchor 박스 예측을 수행하는데, 1-stage는 image로부터 추출된 feature map에서 anchor 박스 예측을 수행하는 것으로 생각해볼 수 있는것 같습니다!

 


출처

[1] arxiv.org/abs/1711.06897

반응형