[Object detection] FCOS: Fully Convolutional One-Stage Object Detection Review

3 분 소요


FCOS: Fully Convolutional One-Stage Object Detection

title

0. Abstract

  • 지금까지의 Object detector는 대부분 Anchor-based detector였다.

  • Anchor-based detector는 IoU 계산량이 많고, Detection performance에 큰 영향을 미치는 Anchor의 Hyper-parameter를 미리 규정해야하는 등의 한계점이 있다.

  • 우리는 NMS(Non-Maximum-Suppression)만 사용해서, AP를 44.7%까지 끌어올려서 SOTA를 달성했다.

1. Introduction

  • Object detection에서는 주로 Anchor-based approach를 사용해왔다.

  • 1.1 Anchor box

    1. anchor box가 어떻게 define되느냐에 따라 성능이 크게 달라진다.

    2. Anchor box가 pre-define 되어 있으므로, 변화에 강건하지 못하다. 특히, 작은 오브젝트를 찾을 때 (작은 오브젝트 일수록 변화를 분별하기가 쉽지 않기 때문에.)

    • 즉, 명확히 보이는 특징들만 잘 잡아낸다고 생각하면 편할 듯.
    1. Recall을 높이기 위해서 Anchor를 dense하게 배치해야하고, 이는 class-imbalance problem을 초래한다.

    2. IoU를 계산하는데, 너무 많은 계산량이 발생한다.

  • Fully convolutional network (FCN)은 Depth-estimation, keypoint-detection, counting 등에서 좋은 효과를 보였지만, Anchor-box 때문에 object detection에서는 큰 효과를 보지 못했다.

  • 그렇다면 per-pixel prediction 방법으로 object detection을 한다면 어떨까?

  • 우리는 기존의 per-pixel prediction 방법을 보완하기 위해서 FPN(Feature Pyramid Network)를 적용했고, 애매하게 생성되는 bounding box를 잡기 위해서, Center-ness라는 방법을 1 layer로 구현하여 효과를 보았다.

  • 이 방법을 통해 기존의 FCN을 이용할 때와 같은 Settings를 이용하면서도, 효과적으로 acc를 올릴 수 있었다.

2. Approach

title

  • Per-pixel prediction fashion, improvement of recall by using FPN, center-ness branch에 관해 설명한다.

  • 2.1. Fully Convolutional One-Stage Object Detector

    • Anchor-based method는 각 cell을 object의 중심으로 생각하고 bounding box를 regression 한다.

    • 반면에, FCN에서는 각 cell을 object의 중심으로 여기지 않고 regression 하는 차이점이 있다. 여기서 regression은 location으로부터 각 bounding box의 모서리까지의 거리이다.

    • 다시 말하자면, FCN에서는 Location을 하나의 training sample로 본다. 즉, channel별로 anchor를 생성하는게 아닌, 하나의 location에서 결과 값을 predict 한다.

    • 한 location이 어떤 특정 ground-truth box에 속해있다면, 그 location은 하나의 positive sample로 본다.

    • 즉, anchor-based 방식이 GT와 일정 Threshold 이상 겹치지 않으면 Negative-sample로 보았던 것과는 다르게 GT에 속하는 Location이면 Positive로 본다는 것이다.

    • GT에 속하지 않는 Location들이 Negative sample이 된다.

    • 만약, location이 multiple-GT에 속한다면, 그것은 Ambiguous sample로 특정한다. 이럴 경우에 GT는 Regression 해야할 값이 적은 곳으로 할당한다. (이 부분은 다음 챕터인 multi-level prediction에서 다룬다.)

    • 앞서도 언급했듯이, Anchor-based method가 GT와 IoU가 높은 cell만 positive-sample로 할당한 반면에, FCN은 location이 GT와 같으면 모두 Positive sample이 된다. 그러므로, positive sample이 많아서 효과적일 수 있다. (positive:negative의 비율만 따지면 이 말이 맞겠지만, 절대적인 수로는 그렇지 않을 수도 있다고 생각한다. 왜냐하면 anchor-based 방식은 channel도 고려하니까. 한 channel에 얼마나 많은 positive sample이 있는지를 생각해보는 것도 좋을 듯.)

    • output 중 classification의 output은 COCO Dataset의 class 개수인 80개, regression은 4개이고, regression target은 항상 양수이므로 exponetial 함수를 value에 사용하였다.

    • Anchor를 사용하지 않는 만큼, FCOS의 output은 일반적으로 anchor-based보다 9배 적다. (ahchor-based 방법은 한 cell마다 보통 9개의 anchor를 사용한다. 3(size) * 3(aspect_ratio))

    • Loss는 아래와 같다.

    title

    • loss는 평범하게 classification + regression loss로 구성되어 있다.

    • $L_{cls}$는 Focal loss를 의미하고, regression loss 앞에는 조절자인 $\lambda$가 붙어있다.

    • Inference는 straight-forward하게 진행된다. classification score가 0.05 이상인 sample만 positive-sample로 분류하고, regression을 진행한다.

  • 2.2. Multi-level Prediction with FPN for FCOS

    • Large stride를 가지는 CNN Layer (IN last layer)는 상대적으로 recall이 낮다.

    • Anchor-based의 경우 IoU threshold를 낮추는 것으로 이를 해결할 수 있다.

    • FCOS는 처음 볼 때는 Large stride를 사용할 때는 recall이 낮은 것으로 생각할 수 있지만, 실제로는 RetinaNet의 BPR(Best Possible Recall)이 높았다.

    • 또한 FPN의 사용으로 FCOS 역시 Anchor-based method의 BPR만큼 도달할 수 있었다. (??)

    • Ambiguity는 multi-level prediction으로 해소될 수 있다.

    • Anchor-based method가 feature level에 따라 anchor scale을 조절하는 것과는 다르게, FCOS에서는 바로 bounding box의 limitation을 조절한다.

    • limitation은 0, 64, 128, 256, 512로 설정했으며, 이는 FPN의 5개의 Output에 차등적으로 적용된다.

    • 적용 방식은, 해당 limitation보다 크면 안되고, 그 전 단계의 limitation보다 작아도 안된다.

    • 설정 범위에 속하지 않을 경우에는 negative sample로 분류한다.

    • 이런 negative sample로 지정하기 때문에, 잘못 분류된 애매한 박스들을 제거할 수 있고, 따라서 ambiguity를 완화시킬 수 있다고 한 것 같다.

    • 또한 multi-level에 대해서 head를 공유하는데, 이는 parameter를 줄이는 것 뿐만 아니라, detection performance를 높이는 수단이 되기도 하기 때문에 이렇게 설정한 것이라고 한다.

    • 하지만, multi-level에 따라서 regression의 range를 limit 해둔 상황에서, 같은 head를 공유하는 것은 잘못된 결과를 초래할 수 있다.. 따라서, 여기서는 regression output에 씌우는 exponential 함수에 차등적 scalar값을 곱해주어서 range를 조절했다고 한다.

  • 2.3. Center-ness for FCOS

    • Multi-level prediction을 사용했어도, Anchor-based method와의 performance gap은 여전히 있었다.

    • FCOS에서 Performance를 낮추는 주된 요인은, object 중심에서 크게 벗어나 있는 low-quality의 object들이었다.

    • 따라서, 이를 해결하기 위해서 single layer로 구성된 Center-ness branch를 만들었다.

    • centerness의 규정 방법은 아래와 같다.

    title

    • center-ness의 decay를 느리게 하기 위해서, sqrt를 적용했다.

    • Normalized 된 값을 비교하므로, BCE를 사용했다.

    • final_score은 classification_score과 center-ness score의 곱으로 완성된다.

    • 따라서, ambigious한 bounding box는 NMS과정에서 많이 걸러지게된다.

3. Experiments

  • 본 포스트에서는 FCOS의 주된 개념 분석이 목적이므로, Experiments를 포함한 이후의 부분은 다루지 않겠습니다.

댓글남기기