Two-Stage Object Detectors
リージョン提案と分類に焦点を当てた、2ステージ物体検出器のメカニズムを探ります。なぜUltralytics YOLO26のような最新モデルが現在リードしているのかを学びましょう。
2段階物体検出器(two-stage object detectors)は、画像内のアイテムを特定および位置特定するためにコンピュータビジョンで使用される、洗練されたクラスの ディープラーニング(DL) アーキテクチャです。1回で検出を実行する1段階のモデルとは異なり、これらのモデルはタスクを領域提案と物体分類という2つの明確なフェーズに分割します。この二分されたアプローチは、高い位置特定精度を優先するために開拓され、人工知能(AI) の進化においてこれらの検出器を歴史的に重要なものにしました。「どこにあるか」と「何であるか」を分離することにより、2段階検出器は、特に小型またはオクルージョンされた物体において、優れた精度を実現することが多くなりますが、これは通常、計算リソースの増加と 推論遅延 の増大を代償とします。
2ステージプロセス#
2ステージ検出器のアーキテクチャは、人間がシーンを注意深く精査する様子を模倣した順次的なワークフローに依存しています。
-
領域提案: 最初のステージで、モデルは入力画像をスキャンし、物体が存在する可能性のある領域を特定します。領域提案ネットワーク(RPN) として知られるコンポーネントは、関心領域(RoI)と呼ばれることの多い、候補ボックスのスパースなセットを生成します。このステージは背景の大半を除去し、ネットワークが関連領域に処理能力を集中できるようにします。
-
分類と洗練: 2番目のステージで、モデルは 畳み込みニューラルネットワーク(CNN) を使用してこれらの候補領域から特徴を抽出します。次に、各領域に特定のクラスラベル(例:「人物」、「車両」など)を割り当て、バウンディングボックス の座標を洗練して物体をしっかりと囲みます。
このアーキテクチャの著名な例には、R-CNN ファミリー、具体的には Faster R-CNN および Mask R-CNN があり、これらは数年間にわたり学術的ベンチマークの標準を確立しました。
1ステージ検出器との比較#
2段階モデルを、Single Shot MultiBox Detector(SSD)や Ultralytics YOLO シリーズのような 1段階物体検出器 と区別することは有益です。2段階モデルが領域を個別に処理することで 精度 を優先する一方で、1段階モデルは検出を単一の回帰問題として捉え、画像ピクセルをバウンディングボックスの座標とクラス確率に直接マッピングします。
歴史的に、これによりトレードオフが生じました。2段階モデルはより正確であるものの遅く、1段階モデルは速いものの精度が低かったのです。しかし、現代の進歩はこの境界を曖昧にしました。YOLO26 のような最先端モデルは、リアルタイム推論 に必要な速度を維持しながら、2段階検出器の精度に匹敵するエンドツーエンドアーキテクチャを現在利用しています。
実社会での応用#
精度(precision) と 再現率(recall) が重視されるため、安全性と詳細さが生の処理速度よりも重要となるシナリオでは、2段階検出器が好まれることがよくあります。
- 医療診断画像: ヘルスケア分野におけるAI の領域では、診断の見落としが致命的となる場合があります。2段階アーキテクチャは、X線やMRIスキャンにおける腫瘍などの異常を検出するために 医療画像分析 で頻繁に使用されます。この多段階のプロセスにより、複雑な組織背景に対して小さな病変が見落とされないようになり、放射線科医に信頼性の高い自動化支援を提供します。
- 高精度な産業検査: スマートマニュファクチャリング において、自動外観検査システムはこれらのモデルを使用して組立ライン上の微小な欠陥を特定します。たとえば、タービンブレードのヘアラインクラック(微小亀裂)を検出するには、2段階検出器が提供する高い Intersection over Union(IoU) 精度が必要となり、欠陥のないコンポーネントのみが次の製造ステージに進むことが保証されます。
モダンな検出の実装#
2段階検出器が高精度ビジョンの基礎を築いた一方で、現代の開発者は、大幅に容易なデプロイワークフローで同等のパフォーマンスを提供する高度な1段階モデルを頻繁に利用しています。Ultralytics プラットフォーム は、これらのモデルのトレーニングとデプロイを簡素化し、データセットと計算リソースを効率的に管理します。
次の Python の例は、ultralytics を使用した最新の物体検出ワークフローを用いて、ロードして推論を実行する方法を示しており、従来のアプローチと同様の高精度な結果をより高い効率で実現します。
from ultralytics import YOLO
# Load the YOLO26 model, a modern high-accuracy detector
model = YOLO("yolo26n.pt")
# Run inference on an image to detect objects
results = model("https://ultralytics.com/images/bus.jpg")
# Process results (bounding boxes, classes, and confidence scores)
for result in results:
result.show() # Display the detection outcomes
print(result.boxes.conf) # Print confidence scores





