One-Stage Object Detectors
一段階物体検出器は、領域提案のステップを介さず、1回のネットワークパスであらゆるボックスとクラスを予測します。仕組み、主要モデル、トレードオフを解説します。
1段階物体検出器は、1つのネットワークの1回のフォワードパスで画像内のすべての物体のバウンディングボックスとクラスラベルを予測する物体検出モデルです。候補位置の密なグリッドを一度に評価します。別個の領域提案処理はありません。2段階物体検出器は、まず物体が含まれている可能性の高い領域を提案し、次に各領域に対して2つ目のヘッドを実行します。この処理をなくしたことで、2015年にベースモデルが毎秒45フレームで動作したYOLOから現在のモデルまで、1段階検出器がリアルタイム検出の基盤となりました。
1段階検出器の仕組み#
バックボーンが画像を特徴マップに変換し、ネックが異なるスケールの特徴マップを統合します。密な検出ヘッドは、各スケールの各位置でクラススコアとボックスを予測します。SSD、YOLOv2、RetinaNetなどの初期の1段階モデルは、各位置に複数のアンカーボックスを置き、そこからのオフセットを予測していました。2019年のFCOS以降、ほとんどのモデルは各位置からボックスの4辺までの距離を予測する、アンカーフリー検出器の設計を採用しています。こうして生成される数千の候補ボックスは、信頼度しきい値と非極大値抑制(NMS)によって物体ごとに1つに絞られます。または、1対1マッチングで学習したヘッドが直接出力します。
1段階検出器は1回呼び出すだけで動作し、処理時間の内訳からネットワークの実行が1回であることが分かります。
from ultralytics import YOLO
# Load YOLO26n, a one-stage detector pretrained on the 80 COCO classes
model = YOLO("yolo26n.pt")
# One forward pass predicts the box and class of every object in the image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
print(f"{len(result.boxes)} objects: {[result.names[int(c)] for c in result.boxes.cls]}")
# Milliseconds for resizing the image, the single network pass, and NMS
print(result.speed)result.speedには前処理、推論、後処理の3つのステップが示され、1回の推論ですべての物体を処理します。
ワンステージ検出器とツーステージ検出器の比較#
どちらの設計もバックボーンとネックを共有します。2段階検出器はその後、数百の候補領域を選ぶ領域提案ネットワークを実行し、各領域の特徴を切り出して、すべての切り出し画像を分類・調整用の2つ目のヘッドに渡します。1段階検出器はこれらの処理を、すべてのグリッド位置に対する単一の密なヘッドに置き換えます。
R-CNNファミリーは長年、検出精度をリードしてきました。Faster R-CNNは画像ごとに約300個の提案領域を調整し、VGG-16バックボーンで5 FPSを達成しました。1段階検出器ははるかに高速でしたが、精度では劣っていました。2017年に登場したRetinaNetは、その差の原因が前景と背景の不均衡にあることを突き止めました。密な検出器は画像ごとに約100,000か所の候補位置を評価しますが、そのほとんどは背景であり、標準的な損失では容易な負例が大きな比重を占めます。RetinaNetのフォーカル損失はその重みを下げ、従来の1段階検出器と同じ速度で、当時の2段階検出器を上回る精度を達成しました。DETRやRT-DETRなどのTransformer検出器も、1つのネットワークとして動作し、1対1マッチングで固定サイズのボックスセットを予測します。
実際のアプリケーション#
- 交通・動画分析: 検出器を各カメラ映像のすべてのフレームで実行して車両を数え、交通量を測定し、物体トラッカーに入力します。
- 製造検査: ラインカメラは、部品がカメラの前を一瞬で通過する間に、欠陥や部品の欠落を検出します。
- ドローンと組み込みデバイス: 小型の単一ネットワークなら、ドローン、スマートフォン、スマートカメラの計算能力と消費電力の制約内で動作します。
最新の1段階検出器を支える考え方#
- 特徴ピラミッドネットワーク(FPN): 複数の解像度で予測することで、解像度の高い特徴マップは小さな物体を、低い特徴マップは大きな物体を検出できます。
- フォーカル損失: 背景候補のうち容易に識別できるものの重みを下げることで、初期の密な検出器の性能を制限していたクラス不均衡を解消しました。
- ラベル割り当て: SimOTAやタスクアラインド割り当てなどの手法は、学習中に予測結果自体を基に、各物体の正例位置を選択します。
- NMSフリーヘッド: 1対1マッチングで学習したヘッドは、物体ごとに1つのボックスを出力するため、候補数に応じてコストが増える後処理を省けます。
YOLO26は、2種類のヘッドを備えた1段階のアンカーフリー検出器です。デフォルトではNMSを適用し、nms=Falseを指定すると1対1ヘッドに切り替わります。YOLO26nは、NMSありでCOCOのmAP50-95が40.9、NMSなしで40.1となり、TensorRTを使用したNVIDIA T4 GPUで画像あたり1.7ミリ秒を達成します。










