Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Anchor Boxes

アンカーボックスとは、固定サイズとアスペクト比を持つ事前設定済みのボックスで、検出器が位置やサイズを調整して物体に合わせます。サイズの決め方、マッチング、利用方法を解説します。

アンカーボックスは、サイズとアスペクト比が固定された事前定義の矩形で、検出器の特徴マップ上の各位置に配置され、物体の位置や形状を推定するための初期値として機能します。アンカーベース検出器は各アンカーについて全クラスのスコアを算出し、物体に合うようアンカーを移動・拡大縮小する小さなオフセットを予測します。この方法は、何もない状態からボックスを予測するよりも学習しやすくなります。Faster R-CNNは各位置に9個のアンカーを配置します。3つの面積(128²、256²、512²ピクセル)と3つのアスペクト比(1:1、1:2、2:1)の組み合わせで、1000 × 600の画像では約20,000個になります。

アンカーの定義方法#

アンカーセットは、特徴マップの各セルに繰り返し配置するサイズとアスペクト比のリストです。そのため、アンカー数はセル数 × セルあたりの形状数になります。特徴ピラミッドネットワーク (FPN)を備えた検出器では、解像度の高い細かなレベルに小さなアンカーを、粗いレベルに大きなアンカーを割り当てます。RetinaNetは5つの各レベルで位置あたり9個、画像あたり約100,000個のアンカーを使用します。SSDではアンカーをデフォルトボックスと呼び、SSD300は8,732個を配置します。

人手で選んだ形状では一部のデータセットにうまく適合しないため、YOLOv2は学習ボックスの幅と高さに対してk-meansクラスタリングを実行し、距離として1 − IoUを使用して、5つのクラスタ中心をアンカーに採用しました。YOLOv3は9個のアンカーをクラスタリングし、3つの出力ストライドに均等に割り当てました。ストライド8のレベルでは10 × 13ピクセル、ストライド32のレベルでは373 × 326ピクセルです。

アンカーと物体のマッチング#

学習中、各アンカーをすべてのラベル付きボックスとIntersection over Union (IoU)で比較します。物体と十分に重なるアンカーは正例となり、その物体のクラスとバウンディングボックスまでのオフセットを学習します。重なりが小さいアンカーは「背景」を学習する負例となり、その中間のアンカーは無視されます。Faster R-CNNの領域提案ネットワークでは、IoUが0.7以上を正例、0.3未満を負例とします。また、各物体に最もよく一致するアンカーも正例にするため、どの物体にも対応するアンカーがない状態を防げます。

import torch
from torchvision.ops import box_iou

# Nine anchors centered on one feature-map cell at (200, 200): 3 sizes x 3 aspect ratios (height / width)
shapes = [(size, ratio) for size in (64, 128, 256) for ratio in (0.5, 1.0, 2.0)]
anchors = []
for size, ratio in shapes:
    w, h = size / ratio**0.5, size * ratio**0.5
    anchors.append([200 - w / 2, 200 - h / 2, 200 + w / 2, 200 + h / 2])

# A labeled pedestrian box (x1, y1, x2, y2): tall and narrow
person = torch.tensor([[160.0, 110.0, 240.0, 290.0]])

# Faster R-CNN RPN rule: IoU >= 0.7 is positive, below 0.3 is negative, anything between is ignored
iou = box_iou(torch.tensor(anchors), person).squeeze(1)
for (size, ratio), value in zip(shapes, iou.tolist()):
    label = "positive" if value >= 0.7 else "negative" if value < 0.3 else "ignored"
    print(f"size {size}, ratio {ratio}: IoU {value:.2f} -> {label}")

縦長の128ピクセルアンカー(比率2.0)だけが歩行者と十分に重なり、IoU 0.88で正例になります。IoUが0.31と0.50の他の128ピクセルアンカー2つは無視され、サイズが合わない6つのアンカーは負例になります。その後、正例アンカーは標準的なパラメーター化によるオフセットを学習します。中心はアンカーの幅と高さに対する割合で移動し、幅と高さは予測値の指数関数によってスケーリングされます。

データセットに適したアンカーサイズの選択#

データセット内の物体形状に合うアンカーを使うと、より多くの物体に正例アンカーが割り当てられ、検出器が達成できる再現率が向上します。UltralyticsのYOLOv5は、9個のYOLOv3アンカーを初期値としてAutoAnchorで学習前に確認します。学習ラベルに対するアンカーの最大再現率を測定し、それが0.98を超えない場合は、k-meansと1,000世代の遺伝的進化を使って再適合させ、再現率が向上した場合にのみ新しいアンカーを採用します。

アンカーの制約とアンカーフリー検出器#

アンカーには3つのコストがあります。画像内の数万個に及ぶアンカーのほぼすべてが背景を覆うため、容易な負例によって損失が圧倒されます。RetinaNetはその重みを下げるために焦点損失を導入しました。隣接する複数のアンカーが同じ物体に適合するため、物体ごとに1つのボックスを残すには非最大抑制 (NMS)が必要です。さらに、サイズ、アスペクト比、IoUのしきい値は、データセットや画像サイズごとに調整が必要なハイパーパラメーターです。

アンカーフリー検出器は、点またはキーポイントからボックスを予測することで、これらのハイパーパラメーターをなくします。2021年のYOLOX以降に公開されたリアルタイム検出器の大半はアンカーフリーです。Faster R-CNN、Mask R-CNN、RetinaNetなどのアンカーベース検出器では、引き続きアンカーが使われています。RetinaNetとアンカーフリーのFCOSを比較したATSSは、両者が同じ方法で正例を選ぶと、位置あたり9個のアンカーを使ったRetinaNetの精度は1個の場合と変わらないことを示しました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

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

機械学習の未来に向けた歩みを始めましょう