Object Detection
物体検出は、画像内のすべての物体を特定し、それぞれのバウンディングボックス、クラスラベル、信頼度スコアを返します。検出器の仕組みと評価方法を解説します。
物体検出とは、画像または動画フレーム内で既知のクラスに属するすべての物体を見つけ、それぞれの位置を示すコンピュータービジョンタスクです。各物体について、バウンディングボックス、クラスラベル、信頼度スコアを返すため、街の写真は車、人、信号機ごとに1つずつラベル付きボックスを並べたリストになります。このリストは、カウント、計測、追跡、ロボット制御の入力になります。
検出器が返す情報#
各検出結果は3つの要素で構成されます。ボックスは、角の座標(x1、y1、x2、y2)か、中心点と幅・高さで保存され、単位はピクセルまたは画像サイズに対する正規化値です。クラスはモデルのラベルセット内のインデックスで、COCOデータセットの80カテゴリなどが該当します。0から1までのスコアは、そのボックスにそのクラスが含まれる可能性を示します。アプリケーションでは、信頼度しきい値を超える検出結果だけを残し、見逃しと誤検知のバランスを取ります。
from ultralytics import YOLO
# Load a YOLO26 nano detector pretrained on the 80 COCO classes
model = YOLO("yolo26n.pt")
# Run detection on one image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Each detection carries a class, a confidence score, and a box in pixels
for box in result.boxes:
name = result.names[int(box.cls)]
corners = box.xyxy[0].int().tolist()
print(f"{name} {box.conf.item():.2f} {corners}")出力される各行は1つの検出された物体を表し、クラス名、信頼度、左上と右下の角のピクセル座標が示されます。
物体検出器の仕組み#
最新の検出器は、3つの段階からなるニューラルネットワークです。バックボーンは通常、畳み込みネットワークまたはビジョントランスフォーマーで、画像を特徴マップに変換します。特徴ピラミッドネットワークなどのネックは、異なるスケールの特徴マップを統合し、小さな物体と大きな物体の両方を表現できるようにします。次に検出ヘッドが、数千の位置でクラススコアとボックス座標を予測します。隣接する位置が同じ物体に反応するため、生の出力には多数の重複候補が含まれます。そこで多くのパイプラインでは、スコアの低いボックスを除外し、非極大値抑制(NMS)を実行して物体ごとに1つのボックスを残します。エンドツーエンド検出器のDETRなどは、物体ごとに予測を1つだけ出力するように学習されるため、この処理を省略します。
検出器の設計は、候補を見つける方法によって異なります。2段階検出器のFaster R-CNNなどは、まず物体が含まれていそうな領域を提案し、その後、それぞれを分類して調整します。2015年に登場したYOLOなどの1段階検出器は、1回の処理ですべてのボックスとクラスを予測するため、リアルタイム検出が実用化されました。初期の1段階モデルは、あらかじめ定義されたアンカーボックスからのオフセットを回帰していましたが、アンカーフリー検出器はグリッド点からボックスの4辺までの距離を直接予測します。YOLO26は1段階のアンカーフリー検出器で、デフォルトではNMSを適用します。nms=Falseを渡すと、最終ボックスをNMSなしで出力する1対1ヘッドに切り替わります。
学習と評価#
検出器は、すべての物体にボックスとクラスが付いた画像から学習します。学習中のラベル割り当てステップで、各ラベル付き物体をどの予測が担当するかを決定し、損失は分類項とボックス回帰項を組み合わせます。ボックス回帰項は通常、予測ボックスとラベル付きボックスの重なりを表す交差領域比 (IoU)に基づきます。評価でもIoUを使います。クラスが一致し、ラベル付きボックスとのIoUがしきい値に達した場合、その検出は正解とみなされます。平均適合率 (mAP)は、すべての信頼度レベルとクラスにわたる適合率と再現率を要約します。COCOはIoU 0.5で評価するmAP50を報告し、主要指標として、0.50から0.95まで10段階のIoUしきい値で平均したmAP50-95を使います。VLM Leaderboardでは、クラス名だけから物体を検出する視覚言語モデルを比較するためにmAP50を使います。Ultralytics PlatformはYOLO26の学習前に、このようなモデルで検出データセットを自動アノテーションします。
実際のアプリケーション#
- 自動運転: 運転支援システムや自動運転システムは、各カメラフレームで車両、歩行者、自転車、交通標識を検出し、追跡と動作計画はそのボックスに基づいて処理します。
- 小売: 棚カメラは商品や空の陳列スペースを検出して在庫切れを知らせ、セルフレジシステムはレジに置かれた商品を検出します。
- 製造検査: ラインカメラは傷、へこみ、部品の欠落を検出し、不良部品が通過する際に排除できるようにします。
物体検出と関連タスクの比較#
- 画像分類は画像全体に1つのラベルを付け、位置は示しません。
- インスタンスセグメンテーションは、検出された各物体の正確な形状に沿ったピクセルマスクで輪郭を示します。
- 回転バウンディングボックスは各ボックスに回転角度を加え、航空画像内の船や車両など、傾いた物体に合わせます。
- 物体追跡は動画フレーム間で同じ物体の検出結果を関連付け、それぞれに永続的なIDを付与します。
- 3D物体検出は、中心、メートル単位の長さ・幅・高さ、方位角で表される3D空間内のボックスを予測します。










