Anchor-Free Detectors
アンカーフリー検出器は、事前設定済みのアンカーボックスを使わず、点やキーポイントからボックスを予測します。FCOS、CenterNet、最新のYOLOモデルが物体を検出する仕組みを解説します。
アンカーフリー検出器は、事前定義されたアンカーボックスを使わず、特徴マップ上の点、または物体の角や中心などのキーポイントから各バウンディングボックスを直接予測する物体検出モデルです。物体付近の位置から物体の4辺までの距離を予測するか、ヒートマップのピークで物体の中心を示し、ネットワークが幅と高さを回帰します。これにより、アンカーベース検出器がデータセットごとに調整する必要のあるアンカーサイズ、アスペクト比、アンカーマッチングのしきい値が不要になります。アンカーフリーヘッドは、リアルタイム検出の標準的な設計になっています。
アンカーフリー検出の仕組み#
アンカーフリー検出器は、次の2種類に大別されます。
- FCOSなどの点ベース検出器:すべての特徴マップレベルの各セルが候補になります。FCOS(2019)は、物体の内側にある各位置でクラススコアと左・上・右・下の各辺までの4つの距離を予測し、さらに物体の中心から遠い点で予測されたボックスの重みを下げるセンターネススコアを予測します。
- CornerNetやCenterNetなどのキーポイントベース検出器:CornerNet(2018)は左上隅と右下隅のヒートマップを予測し、学習済みの埋め込みを使って同じ物体に属する角を対応付けます。CenterNetは物体の中心のヒートマップを予測し、各ピークで幅と高さを回帰します。ピークの抽出には3 × 3の最大プーリング演算を使うため、IoUベースの非最大抑制 (NMS)は必要ありません。
アンカーフリー予測は、YOLO系列ではアンカーよりも前から使われています。YOLOv1は2015年に、各物体の中心を含むグリッドセルからボックスを直接予測しました。YOLOv2でアンカーボックスを追加すると、0.3ポイントのmAP低下と引き換えに再現率が81%から88%に向上しました。YOLOXは2021年に高密度な点ベース設計をYOLOに再導入し、Ultralyticsは2023年のYOLOv8でYOLOv5のアンカーをアンカーフリーヘッドに置き換えました。そのため、カスタムデータセットではアンカー適合の工程が不要になり、YOLO26もこの設計を引き継いでいます。
高密度なアンカーフリー予測をデコードするには、セルの位置と予測された4つの距離だけで十分です。
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)は、幅56ピクセル、高さ120ピクセルのボックス(136, 48, 192, 168)になります。高密度ヘッドはすべてのピラミッドレベルの各セルでこのデコードを適用するため、各セルから1つの候補ボックスが得られます。
各物体をどの点に学習させるかの選択#
アンカーとラベル付きボックスをIntersection over Union (IoU)で比較できないため、アンカーフリー検出器には、どの点を正例の学習サンプルとするかを決める別のルールが必要です。FCOSは位置とサイズを使います。点がラベル付きボックスの内側にあり、そのボックスの辺までの最大距離が点のピラミッドレベルの範囲内にあれば正例です。ストライド8のレベルでは0~64ピクセル、ストライド16では64~128ピクセルというように、ストライド128まで続きます。
後続の検出器は適応的に正例を選択します。ATSSは、アンカーベースのRetinaNetとアンカーフリーのFCOSの精度差は、主に正例と負例の定義方法の違いによるものであり、同じサンプリングルールを使えば、位置ごとに複数のアンカーを配置しても効果がないことを示しました。TOODが導入し、PP-YOLOEや多くの後続リアルタイム検出器が採用したタスク整合型割り当てでは、各物体内の点を予測されたクラススコアとボックスIoUの加重積で順位付けし、上位の数点を正例として選びます。
アンカーフリー検出器とアンカーベース検出器の比較#
- ハイパーパラメーターの削減:アンカーサイズ、アスペクト比、IoUマッチングのしきい値をデータセットごとに適合させる必要がありません。アンカーベース検出器では、学習ボックスに対するk-meansクラスタリングを用いてこの工程を処理することがよくあります。
- 形状への柔軟性:点ベースの割り当ては物体の位置だけに依存するため、細長いパイプのようにアンカー形状に似ていない物体でも、正例の学習サンプルが得られます。
- 共通の用語:多くのアンカーフリーのコードベースでも、サイズやアスペクト比を持たない位置を指して、グリッド点を「アンカーポイント」と呼びます。
- 予測数の削減:各位置でアンカー形状ごとではなく1つのボックスを予測するため、デコードとNMSで処理する候補数が数分の一になります。RetinaNetでは位置あたり9個のアンカーを使うため、画像あたり約100,000個の候補になります。










