アンカーボックスがobject detectionの参照テンプレートとしてどのように機能するかを学びましょう。それらがどのように精度を向上させるか、そしてUltralytics YOLO26のようなモデルがアンカーフリー設計をどのように利用するかを発見しましょう。
アンカーボックスは、object detectionモデルがオブジェクトの位置を特定し、classifyするのを支援するために、特定のアスペクト比とスケールで画像全体に配置される事前定義された参照矩形です。オブジェクトの形状が非常に多様であるため不安定になりがちな、オブジェクトの正確なサイズと位置をニューラルネットワークにゼロから予測させるのではなく、モデルはこれらの固定テンプレートを起点として使用します。これらの初期ボックスをグラウンドトゥルースに適合させるために、どれだけ調整(「回帰」)するかを予測することを学習することで、システムはより速い収束と高い精度を達成できます。この技術は、複雑な位置特定タスクをより管理しやすい最適化問題に単純化することで、コンピュータビジョン(CV)の分野を根本的に変革しました。
古典的なアンカーベースの検出器では、入力画像はセルのグリッドに分割されます。各セル位置で、ネットワークは異なる形状を持つ複数のアンカーボックスを生成します。例えば、背の高い歩行者と幅の広い車を同時にdetectするために、モデルは同じ中心点に背の高い狭いボックスと背の低い広いボックスを提案するかもしれません。
モデルトレーニング中、これらのアンカーは、Intersection over Union (IoU)と呼ばれる指標を使用して実際のオブジェクトと照合されます。ラベル付けされたオブジェクトと大幅に重なるアンカーは、「正」のサンプルとして指定されます。その後、ネットワークは2つの並行タスクを学習します。
このアプローチにより、モデルは互いに近くに位置する異なるサイズの複数の物体を処理できます。各物体がその形状に最もよく一致するアンカーに割り当てられるためです。
新しいアーキテクチャはアンカーフリー設計へと移行していますが、アンカーボックスは、オブジェクトの特性が予測可能な多くの確立された生産システムにおいて依然として不可欠です。
従来のアンカーベース手法と最新のアンカーフリー検出器を区別することが重要です。
Ultralytics Platformのような現代の高レベルAPIはトレーニング中にこれらの詳細を抽象化しますが、アンカーを理解することは、古いモデルアーキテクチャを扱ったり、モデル設定ファイルを分析したりする際に役立ちます。以下のスニペットは、モデルをロードし、その設定(アンカー設定が存在する場合)を検査する方法を示しています。
from ultralytics import YOLO
# Load a pre-trained YOLO model (YOLO26 is anchor-free, but legacy configs act similarly)
model = YOLO("yolo26n.pt")
# Inspect the model's stride, which relates to grid cell sizing in detection
print(f"Model strides: {model.model.stride}")
# For older anchor-based models, anchors might be stored in the model's attributes
# Modern anchor-free models calculate targets dynamically without fixed boxes
if hasattr(model.model, "anchors"):
print(f"Anchors: {model.model.anchors}")
else:
print("This model architecture is anchor-free.")
アンカーボックスは効果的である一方で、複雑さを導入します。生成される膨大な数のアンカー(しばしば画像あたり数万個)は、ほとんどのアンカーが背景のみをカバーするため、クラス不均衡問題を引き起こします。Focal Lossのような技術は、簡単な背景例の重みを下げることでこれを軽減するために使用されます。さらに、最終出力では通常、冗長な重複ボックスを除去するためにNon-Maximum Suppression (NMS)が必要となり、各オブジェクトに対して最も確信度の高いdetectのみが残るようにします。
未来の機械学習で、新たな一歩を踏み出しましょう。