Object Detection Architectures
物体検出アーキテクチャは、ピクセルをボックスとラベルに変換するネットワーク設計です。バックボーン、ネック、ヘッド、主な検出器の系統を解説します。
物体検出アーキテクチャとは、画像をバウンディングボックス、クラスラベル、信頼度スコアのリストに変換するネットワーク設計です。現代のほぼすべての検出器はバックボーン、ネック、ヘッドで構成され、設計の主な違いは、領域提案、密なグリッド、学習済みクエリのいずれから候補ボックスを生成するか、また非最大抑制(NMS)または一対一マッチングのどちらで重複する予測を除去するかにあります。こうした選択によって、検出器の精度や速度、エッジハードウェアへのデプロイのしやすさが決まります。物体検出はタスクの名称であり、検出ヘッドはアーキテクチャの一部です。
バックボーン、ネック、ヘッド#
バックボーンは特徴を抽出します。ResNetやCSPDarknetなどの畳み込みニューラルネットワーク、またはビジョントランスフォーマーで構成され、ImageNetの分類データで事前学習されていることがよくあります。段階的に画像をダウンサンプリングするため、深くなるにつれて特徴マップの解像度は下がり、意味的な情報は増えます。通常、ネックは追加のボトムアップ経路を備えた特徴ピラミッドネットワーク(FPN)であり、PANetのように深いマップと浅いマップを統合して、各出力スケールに細部とコンテキストの両方を持たせます。ヘッドは各スケールの各位置でボックスとクラススコアを予測し、通常はストライド8、16、32を使用するため、最も細かいマップは小さな物体を、最も粗いマップは大きな物体を検出します。実際の検出器の3つの部分は、モデル定義から確認できます。
from ultralytics import YOLO
# YOLO26nを読み込み、モデルのYAMLと同じ方法でレイヤーを分割します
model = YOLO("yolo26n.pt")
layers = model.model.model
n_backbone = len(model.model.yaml["backbone"])
# バックボーンが特徴を抽出し、ネックがスケールを融合し、最後のレイヤーがヘッドです
print("Backbone:", [type(m).__name__ for m in layers[:n_backbone]])
print("Neck:", [type(m).__name__ for m in layers[n_backbone:-1]])
print("Head:", type(layers[-1]).__name__, "at strides", model.model.stride.tolist())バックボーンのリストには、ストライド付きのConvレイヤーとC3k2ブロックがあり、SPPFプーリングとC2PSAアテンションブロックで終わります。ネックではUpsample、Concat、C3k2レイヤーがトップダウンに実行され、ストライド付きのConv、Concat、C3k2レイヤーが再び上方向に実行されます。Detectヘッドはストライド8、16、32で予測します。
検出器の系統#
- 2段階検出器: Faster R-CNN(2015)やMask R-CNN(2017)のように、領域提案ネットワークが数百個の候補領域を提示し、第2のヘッドが各領域を分類して位置を調整します。
- アンカーベースの1段階検出器: SSD(2016)、YOLOv2からYOLOv5、RetinaNet(2017)は、1回の処理で各グリッドセルにおける事前定義済みアンカーボックスからのオフセットを予測します。
- アンカーフリー検出器: FCOS(2019)とYOLOv8(2023)は、ある点からボックスの4辺までの距離を予測します。CenterNet(2019)はヒートマップのピークとしてボックスの中心を予測し、各中心の幅と高さも予測します。YOLOX(2021)はYOLOファミリーをアンカーフリー予測に戻したため、いずれもアンカー調整が不要です。
- DETR方式のTransformer検出器: DETR(2020)は、学習済みオブジェクトクエリの固定セットをデコードし、ラベル付きオブジェクトと一対一で対応付けるため、出力にNMSは不要です。Deformable DETRは学習エポックを10分の1にして精度を向上させ、RT-DETRは2023年にこの設計をリアルタイム化しました。
- NMSフリーCNN検出器: YOLOv10(2024)は、一対一ヘッドと一対多ヘッドを併用して学習し、推論時には一対一ヘッドのみを実行するため、ボックスにNMSは不要です。
- オープンボキャブラリー検出器: Grounding DINOとYOLO-Worldは、固定の分類レイヤーをテキスト埋め込みに置き換えているため、推論時に指定されたクラスを検出できます。
アーキテクチャの選択#
COCOのmean average precision (mAP)などのベンチマークで精度を比較できますが、通常は対象ハードウェアと画像内のオブジェクトが設計を左右します。YOLO26は、2種類のヘッドを備えたアンカーフリーの1段階CNNです。デフォルトではワン・ツー・メニーブランチにNMSを適用し、nms=Falseを指定するとワン・ツー・ワンブランチに切り替わります。また、モデルYAMLにはストライド4またはストライド64の出力を追加するP2およびP6バリアントがあります。
- エッジおよびリアルタイム動画: 小型CNN検出器はTensorRTやOpenVINOなどのランタイム向けにコンパイルしやすく、NMSフリーヘッドは候補数に応じてコストが増える後処理を省けます。
- 小さなオブジェクト: 航空画像や検査画像では、ストライド4など、より細かい出力レベルが必要です。または、重なり合うクロップに対して検出器を実行するタイル推論を使用します。
- 変化する商品カタログ: オープンボキャブラリー検出器は、その商品のラベル付き画像がなくても、テキストプロンプトから新商品を検出します。
- 回転した物体: 衛星画像に写る船舶、車両、建物は、ヘッドに角度出力を追加した方向付きボックスで、より適切に表現できます。










