YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

アンカーボックス

アンカーボックスがobject detectionの参照テンプレートとしてどのように機能するかを学びましょう。それらがどのように精度を向上させるか、そしてUltralytics YOLO26のようなモデルがアンカーフリー設計をどのように利用するかを発見しましょう。

アンカーボックスは、object detectionモデルがオブジェクトの位置を特定し、classifyするのを支援するために、特定のアスペクト比とスケールで画像全体に配置される事前定義された参照矩形です。オブジェクトの形状が非常に多様であるため不安定になりがちな、オブジェクトの正確なサイズと位置をニューラルネットワークにゼロから予測させるのではなく、モデルはこれらの固定テンプレートを起点として使用します。これらの初期ボックスをグラウンドトゥルースに適合させるために、どれだけ調整(「回帰」)するかを予測することを学習することで、システムはより速い収束と高い精度を達成できます。この技術は、複雑な位置特定タスクをより管理しやすい最適化問題に単純化することで、コンピュータビジョン(CV)の分野を根本的に変革しました。

アンカーボックスのメカニズム

古典的なアンカーベースの検出器では、入力画像はセルのグリッドに分割されます。各セル位置で、ネットワークは異なる形状を持つ複数のアンカーボックスを生成します。例えば、背の高い歩行者と幅の広い車を同時にdetectするために、モデルは同じ中心点に背の高い狭いボックスと背の低い広いボックスを提案するかもしれません。

モデルトレーニング中、これらのアンカーは、Intersection over Union (IoU)と呼ばれる指標を使用して実際のオブジェクトと照合されます。ラベル付けされたオブジェクトと大幅に重なるアンカーは、「正」のサンプルとして指定されます。その後、ネットワークは2つの並行タスクを学習します。

  1. 分類: アンカーに確率スコアを割り当て、それが特定のクラス(例:「犬」や「自転車」)を含む可能性を示します。これは、交差エントロピー損失のような標準的な教師あり学習の目的関数を使用します。
  2. ボックス回帰: これは、一般的なアンカーをぴったりとフィットするバウンディングボックスに変換するために必要な正確なオフセット値(座標シフトとスケーリングファクター)を計算します。

このアプローチにより、モデルは互いに近くに位置する異なるサイズの複数の物体を処理できます。各物体がその形状に最もよく一致するアンカーに割り当てられるためです。

実際のアプリケーション

新しいアーキテクチャはアンカーフリー設計へと移行していますが、アンカーボックスは、オブジェクトの特性が予測可能な多くの確立された生産システムにおいて依然として不可欠です。

  • 小売および在庫管理: AI駆動型小売ソリューションでは、カメラが棚の在庫を監視します。シリアルボックスやソーダ缶のような製品は標準化された寸法を持つため、アンカーボックスをこれらの特定の縦横比に調整できます。この事前知識は、モデルが混雑した環境でも高いrecallを維持するのに役立ちます。
  • 自動運転: 自律走行車の知覚スタックは、歩行者、車両、交通標識をdetectすることに依存しています。遠くから見た車は道路と比較して比較的安定した形状プロファイルを持っているため、これらの形状に合わせたアンカーを使用することで、堅牢なobject trackingと距離推定が保証されます。

アンカーベースとアンカーフリー

従来のアンカーベース手法と最新のアンカーフリー検出器を区別することが重要です。

  • アンカーベース: オリジナルのFaster R-CNNや初期のYOLOバージョン(例:YOLOv5)のようなモデルは、これらの事前定義されたテンプレートを使用します。これらは堅牢ですが、新しいデータセットに適応させるためには、ハイパーパラメータ(アンカーサイズ/比率)の手動調整や、k-meansクラスタリングのようなクラスタリングアルゴリズムが必要となることがよくあります。
  • アンカーフリー: YOLO26を含む高度なモデルは、しばしばアンカーフリーまたはエンドツーエンドのアプローチを採用します。これらのネットワークは、物体の中心やキーポイントを直接予測するため、手動でのアンカー設定が不要になります。これによりアーキテクチャが簡素化され、数千もの空の背景アンカーを処理するために必要な計算が不要になるため、推論が高速化されます。

例:アンカー情報へのアクセス

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のみが残るようにします。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。