논문 읽기/Object Detection

[논문 읽기] FCOS(2019), Fully Convolutional One-Stage Object Detection

AI 꿈나무 2021. 5. 11. 17:16
반응형

 안녕하세요, 오늘 읽은 논문은 FCOS, Fully Convolutional One-Stage Object Detection 입니다.

 

 FCOS는 앵커 박스를 사용하지 않는 one-stage detector 입니다. 바운딩 박스의 4면으로부터 중심점 까지의 거리(l, t, r, b)를 예측하고, FPN의 각 level마다 거리 (l,t,r,b)를 제한하여 multi-level prediction을 합니다. 또한 낮은 퀄리티의 바운딩 박스를 제거하기 위해 center-ness를 제안합니다.

 

anchor-based detector의 단점

 FCOS는 anchor-based detector에서 발생하는 단점을 개선하기 위해 제안되었습니다.

 

 (1) 디텍션 성능이 앵커 박스의 크기, 종횡비, 개수에 예민합니다. 앵커 박스를 어떻게 설계하느냐에 따라 모델의 성능에 영향을 미칩니다.

 

 (2) pre-defined anchor는 모델의 일반화 성능을 해칩니다. anchor box 크기와 다른 ground-truth를 검출하기가 어렵습니다.

 

 (3) high recall을 위해 많은 수의 anchor box를 사용해야 합니다. 또한 많은 수의 anchor box가 negative로 할당되므로 class imbaliance 문제가 발생합니다.

 

 (4) anchor box와 ground-truth와의 iou를 계산해야 하므로 복잡한 계산과정이 필요합니다.

 

FCOS

 FCOS는 (1) 중심점에서 바운딩 박스의 경계까지의 거리를 예측, (2) multi-lebel prediction with FPN, (3) center-ness 를 제안합니다.

 

(1) Fully Convolutional One-Stage Object Detection

 

 anchor-based detector은 anchor box와의 offset을 예측하지만, FCOS은 중심점(x,y)부터 예측한 바운딩 박스의 경계까지의 거리를 예측합니다.

 

 

 만약 (x,y)가 gt(ground-truth) 범위 안에 존재하고, class가 동일하면 positive로 간주합니다. 그리고 (x,y)를 기준으로 바운딩 박스 경계 까지의 거리를 regress 합니다. 만약 (x,y)가 여러 gt안에 존재한다면 ambiguous sample로 간주합니다. ambiguous sample은 뒤에서 설명할 multi-level prediction with FPN에서 처리합니다.

 

 anchor 박스가 존재하지 않으므로 9배나 적은 출력값을 갖습니다.

 

(2) Loss Function

 

 L_cls는 focal loss를 사용하고, L_reg는 IOU loss를 사용합니다. 논문에서 람다 가중치는 1로 설정합니다.

 L_reg 앞에 1 기호는 class > 0인 경우 1, 그렇지 않으면 0을 의미합니다.

 

(3) Multi-Level Prediction with FPN for FCOS

 

 anchor-based detector은 FPN의 각 level 마다 서로 다른 크기, 종횡비의 anchor box를 할당했습니다. FCOS는 bounding box regression의 범위를 제한합니다.

 

 FPN에 의해 5개의 feature map이 생성됩니다. P3, P4, P5, P6, P7 = {m3=64, m4=128, m5=256, m6=512, m7=무한} 으로 바운딩 박스 regression 범위를 제한합니다. 각 feature map에서 bounding box regression 범위가 m_i > max(l, t, r, b) > m_i-1 를 벗어나면 negative sample로 할당합니다.

 

 

 이를 통해서 위 그림 처럼 바운딩 박스가 overlab 된 경우, 작은 박스는 p3, 큰 박스는 p6에서 검출됩니다.

 

(4) Center-ness

 

 Center-ness는 low-quility predicted bounding box를 제거하기 위해 사용합니다.

 

 

 center-ness는 중심점과의 거리를 정규화합니다. 만약 중심점과 가깝다면 1에 가까운 값, 중심점과 멀리 존재한다면 0에 가까운 값을 갖습니다. 

 

 center-ness는 class score와 곱하여 사용합니다. 중심점과 멀리 떨어진 바운딩 박스는 class score 값이 낮아지기 때문에 nms에서 걸러지게 됩니다.

 

 

Performance


참고자료

[1] arxiv.org/pdf/1904.01355.pdf

반응형