Detection Head
検知ヘッド (detection head) がどのようにリアルタイムのオブジェクト検出を可能にするかを学びましょう。Ultralytics YOLO26において、バウンディングボックスとラベルを高精度に予測する役割を解説します。
**検出ヘッド(detection head)**は、オブジェクト検出ニューラルネットワークアーキテクチャにおいて、最終的な意思決定を行うレイヤーとして機能します。モデルの前段のレイヤーが画像内の形状、テクスチャ、特徴の理解を担うのに対し、検出ヘッドは、この情報を解釈して正確にどのオブジェクトが存在し、どこに位置しているかを予測する特定のコンポーネントです。特徴抽出器によって生成された抽象的で高レベルなデータを実用的な結果へと変換し、通常は特定されたオブジェクトを囲むバウンディングボックスと、それに対応するクラスラベルおよび信頼度スコアのセットを出力します。
BackboneとNeckとHeadの区別#
検出ヘッドの機能を完全に理解するために、最新のデテクターがコンピュータビジョン(CV)パイプラインにおいてそれぞれ異なる目的を持つ3つの主要なステージで構成されていると捉えると分かりやすいでしょう:
- バックボーン(Backbone): これはネットワークの初期部分であり、多くの場合ResNetやCSPNetのような畳み込みニューラルネットワーク(CNN)です。生の入力画像を処理して、視覚的パターンを表す特徴マップを作成します。
- ネック(Neck): バックボーンとヘッドの間に位置し、ネックは異なるスケールの特徴を洗練し、結合します。特徴ピラミッドネットワーク(FPN)のようなアーキテクチャにより、コンテキストを集約することでモデルがさまざまなサイズのオブジェクトを確実に検出できるようにします。
- Head: Neckから精緻化された特徴を受け取る最終コンポーネントです。分類(それは何か?)と回帰(それはどこにあるか?)という実際のタスクを実行します。
進化:Anchor-BasedとAnchor-Free#
検出ヘッドの設計は、特に従来の手法から現代のリアルタイム推論モデルへの移行に伴い、速度と精度を向上させるために大幅に進化してきました。
- アンカーベースヘッド(Anchor-Based Heads): 従来の1ステージオブジェクトデテクターは、さまざまなサイズの固定参照形状である事前定義されたアンカーボックスに依存していました。ヘッドは、オブジェクトに適合するようにこれらのアンカーをどれだけ引き延ばすか、またはシフトさせるかを予測します。このアプローチについては、Faster R-CNNに関する基礎的な研究で詳しく説明されています。
- アンカーフリーヘッド(Anchor-Free Heads): 最新のYOLO26を含む最先端モデルは、アンカーフリーデテクターを活用しています。これらのヘッドは、特徴マップ内のピクセルから直接オブジェクトの中心と寸法を予測し、手動でのアンカー調整の必要性を排除します。これにより、アーキテクチャが簡素化され、新しいオブジェクト形状に対するモデルの汎化能力が向上します。この技術は、しばしばFully Convolutional One-Stage Object Detection(FCOS)に関連付けられます。
実社会での応用#
検出ヘッドの精度は、安全性が重視される環境や産業環境において人工知能(AI)をデプロイするために不可欠です。ユーザーは、Ultralytics Platformを使用して、データに簡単にアノテーションを付け、これらの特殊なヘッドをトレーニングすることができます。
- 自動運転: 自動運転向けAIにおいて、検出ヘッドは歩行者、信号機、その他の車両をリアルタイムで識別する役割を担います。高度に最適化されたヘッドにより、車両が即座に反応するために推論レイテンシが十分に低く保たれます。
- 医療診断: 医用画像解析において、検出ヘッドはMRIスキャン内の腫瘍などの異常を特定できるように微調整されます。回帰ブランチは、病変の正確な境界線を描定するために極めて正確でなければならず、ヘルスケアソリューションにおいて医師を支援します。
コード例#
次の例は、YOLO26モデルをロードし、その検出ヘッドの出力を検査する方法を示しています。推論が実行されると、ヘッドが画像を処理し、座標とクラスIDを含む最終的な boxes を返します。
from ultralytics import YOLO
# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")
# Run inference on an image to utilize the detection head
results = model("https://ultralytics.com/images/bus.jpg")
# The detection head outputs are stored in results[0].boxes
for box in results[0].boxes:
# Print the bounding box coordinates and the predicted class
print(f"Class: {int(box.cls)}, Coordinates: {box.xywh.numpy()}")この相互作用は、検出ヘッドが複雑なニューラルネットワークの活性化を、開発者がオブジェクトトラッキングやカウントなどのダウンストリームタスクに使用できる読み取り可能なデータにどのように変換するかを浮き彫りにしています。






