Anchor-Free Detectors
앵커 프리 검출기는 사전 정의된 앵커 박스 없이 포인트나 키포인트를 기준으로 박스를 예측합니다. FCOS, CenterNet, 최신 YOLO 모델의 객체 탐지 방식을 다룹니다.
앵커 프리 감지기는 사전 정의된 앵커 박스 세트 없이 특징 맵의 한 지점이나 객체의 모서리 또는 중심과 같은 키포인트에서 각 바운딩 박스를 직접 예측하는 객체 감지 모델입니다. 객체 근처의 위치는 해당 위치에서 객체의 네 모서리까지의 거리를 예측하거나, 히트맵의 피크로 객체 중심을 표시하고 네트워크가 너비와 높이를 회귀합니다. 이 방식은 앵커 기반 감지기가 데이터 세트마다 조정해야 하는 앵커 크기, 종횡비, 앵커 매칭 임계값을 제거하며, 앵커 프리 헤드는 실시간 감지의 표준 설계가 되었습니다.
앵커 프리 감지 작동 방식#
앵커 프리 감지기는 두 가지 계열로 나뉩니다.
- FCOS와 같은 포인트 기반 감지기: 모든 특징 맵 레벨의 모든 셀이 후보입니다. FCOS(2019)는 객체 내부의 각 위치에서 클래스 점수와 왼쪽, 위쪽, 오른쪽, 아래쪽 모서리까지의 거리 네 개를 예측하며, 객체 중심에서 멀리 떨어진 지점에서 예측된 박스의 가중치를 낮추는 중심성 점수도 예측합니다.
- CornerNet과 CenterNet과 같은 키포인트 기반 감지기: CornerNet(2018)은 왼쪽 위와 오른쪽 아래 모서리의 히트맵을 예측하고, 학습된 임베딩으로 같은 객체에 속하는 두 모서리를 짝짓습니다. CenterNet은 객체 중심의 히트맵을 예측하고 각 피크에서 너비와 높이를 회귀합니다. 3 × 3 최대 풀링 연산으로 피크를 추출하므로 IoU 기반 비최대 억제(NMS)가 필요하지 않습니다.
YOLO 계열에서는 앵커보다 앵커 프리 예측이 먼저 사용되었습니다. 2015년 YOLOv1은 각 객체의 중심이 포함된 그리드 셀에서 박스를 직접 예측했으며, YOLOv2에서 앵커 박스를 추가하자 mAP가 0.3포인트 낮아지는 대신 재현율이 81%에서 88%로 높아졌습니다. YOLOX는 2021년에 조밀한 포인트 기반 설계를 YOLO에 다시 도입했습니다. 2023년 Ultralytics는 YOLOv5의 앵커를 앵커 프리 헤드로 교체한 YOLOv8을 출시해 사용자 지정 데이터 세트에 앵커 적합화 단계를 거칠 필요가 없도록 했습니다. YOLO26도 이 설계를 유지합니다.
조밀한 앵커 프리 예측을 디코딩하는 데는 셀의 위치와 예측된 거리 네 개만 필요합니다.
import torch
# Center of the grid cell at column 10, row 6 of a stride-16 feature map, in image pixels
stride = 16
point = (torch.tensor([10.0, 6.0]) + 0.5) * stride
# Distances the head predicts from that point to the left, top, right, and bottom box edges, in strides
ltrb = torch.tensor([2.0, 3.5, 1.5, 4.0]) * stride
# Anchor-free decoding: no template box, only the point and four distances
x1, y1 = point - ltrb[:2]
x2, y2 = point + ltrb[2:]
print(f"point {point.tolist()} -> box ({x1:.0f}, {y1:.0f}, {x2:.0f}, {y2:.0f})")(168, 104) 지점은 (136, 48, 192, 168) 박스가 되며, 너비는 56픽셀이고 높이는 120픽셀입니다. 조밀한 헤드는 모든 피라미드 레벨의 모든 셀에서 이 디코딩을 수행하므로 셀마다 후보 박스 하나가 생성됩니다.
각 객체를 학습할 지점 선택#
앵커 프리 감지기는 레이블이 지정된 박스와 교집합 대비 합집합(IoU)을 비교할 앵커가 없으므로, 양성 학습 샘플로 간주할 지점을 정하는 다른 규칙이 필요합니다. FCOS는 위치와 크기를 기준으로 삼습니다. 지점이 레이블이 지정된 박스 안에 있고 해당 박스 모서리까지의 최대 거리가 지점의 피라미드 레벨 범위에 들어오면 양성으로 처리합니다. 스트라이드 8 레벨의 범위는 0~64픽셀이고, 스트라이드 16에서는 64~128픽셀이 되며 스트라이드 128까지 이어집니다.
이후 감지기에서는 양성 샘플을 적응적으로 선택합니다. ATSS는 앵커 기반 RetinaNet과 앵커 프리 FCOS의 정확도 격차가 주로 양성 및 음성 샘플을 정의하는 방식에서 비롯되며, 동일한 샘플링 규칙을 사용하면 위치마다 여러 앵커를 배치해도 이점이 없음을 보였습니다. TOOD에서 도입하고 PP-YOLOE 및 이후의 여러 실시간 감지기에서 채택한 작업 정렬 할당은 각 객체 내부의 지점을 예측된 클래스 점수와 박스 IoU의 가중 곱으로 순위를 매기고 상위 몇 개를 양성으로 선택합니다.
앵커 프리 감지기와 앵커 기반 감지기 비교#
- 하이퍼파라미터 감소: 데이터 세트마다 앵커 크기, 종횡비 또는 IoU 매칭 임계값을 적합화할 필요가 없습니다. 앵커 기반 감지기는 학습 박스에 k-means 클러스터링을 적용해 이러한 값을 설정하는 경우가 많습니다.
- 형태 유연성: 포인트 기반 할당은 객체의 위치에만 의존하므로, 길고 가는 파이프처럼 어떤 앵커와도 형태가 비슷하지 않은 객체에도 양성 샘플이 할당됩니다.
- 공통 용어: 앵커 프리 코드베이스 중 다수는 그리드 지점을 여전히 "앵커 포인트"라고 부르지만, 여기서 앵커 포인트는 크기나 종횡비가 없는 위치를 뜻합니다.
- 예측 수 감소: 각 위치에서 앵커 형태마다 하나씩 예측하는 대신 박스 하나를 예측하므로 디코딩과 NMS가 처리하는 후보 수가 몇 배 줄어듭니다. RetinaNet은 위치마다 앵커 9개를 사용해 이미지당 후보가 약 100,000개에 이릅니다.










