LabHub

ブログ

SOTA セグメンテーション・検出モデル分析 — SAM と DETR、YOLO の系譜

한국어English日本語中文

はじめに

コンピュータビジョンで「何がどこにあるか」に答える二つの軸が、物体検出(object detection)と画像セグメンテーション(segmentation)です。検出は物体を矩形ボックスで囲んで位置とクラスを示し、セグメンテーションはピクセル単位で物体の境界を描きます。本記事では、両分野の代表的なモデルがどのようなアイデアの系譜をたどって発展してきたかを、アーキテクチャの原理を中心に整理します。

先に一つ前提を述べておきます。ビジョンの SOTA は非常に速く変わり、特定ベンチマークの順位や数値はバージョンや設定によって変わります。したがって本記事は、具体的なリーダーボード順位よりも、各モデルが導入した中核概念と、それが後続研究に残した影響に注目します。確かでない最新スペックは断定せず、系統レベルで説明します。

物体検出の系譜

2 段階検出: R-CNN 系

検出の初期の深層学習アプローチは、「まず物体がありそうな候補領域を抽出し、次に各候補を分類する」という 2 段階構造でした。R-CNN がこの流れを開き、その後、速度と精度を改善しながら発展しました。

2 段階系は精度が高い一方、候補生成と判定を分ける構造ゆえに、リアルタイム推論には比較的重いものでした。

1 段階検出: YOLO と SSD

1 段階検出は候補領域生成の段階をなくし、画像を格子に分けて各位置でボックスとクラスを一度に予測します。「You Only Look Once」の名の通り、一度の順伝播で検出を終えます。

1 段階系は速度と精度のバランスをとり、実務で広く使われてきました。特に YOLO はその後、複数のバージョンを経て、バックボーン、特徴融合(neck)、損失関数、学習手法を継続的に改善してきました。バージョンごとに詳細構造と性能は異なるため、ここでは「1 段階・アンカーベースから出発し、アンカーフリーやエンドツーエンドの要素を取り込みながらリアルタイム検出の代表系統になった」という系統の流れだけを整理します。

アンカーと NMS という二つのつまみ

伝統的な検出器は、人が設計した二つの要素に依存していました。

この二つはうまく機能しましたが、ハイパーパラメータ調整が必要で、パイプラインを「完全なエンドツーエンド」にできない障害でもありました。次に登場する DETR は、まさにこの点を狙います。

トランスフォーマー検出: DETR

DETR(DEtection TRansformer, arXiv 2005.12872)は、検出を集合予測(set prediction)問題として再定義しました。格子・アンカー・NMS の代わりに、トランスフォーマーが物体の集合を直接出力するようにしたのが核心です。

基本的なアイデアは次の通りです。

        DETR 検出パイプライン(概念)

  画像
    |
  [CNN バックボーン]  --> 特徴マップ
    |
  [トランスフォーマーエンコーダ]  (全域 self-attention)
    |
  [トランスフォーマーデコーダ] <-- オブジェクトクエリ集合 (例: N 個)
    |
  各クエリ -> (ボックス座標, クラス または "no object")
    |
  ハンガリアンマッチングで正解と 1:1 対応させ学習
    |
  結果: NMS なしで物体の集合を直接出力

DETR は概念的には優雅ですが、初期版は収束が遅く小さな物体に弱いという限界がありました。その後の研究がこの問題を狙いました。

まとめると、検出の大きな流れは「2 段階(正確だが重い)→ 1 段階(速い、リアルタイム)→ トランスフォーマー集合予測(エンドツーエンド、後処理の除去)」へと続き、実務では今も三つの系統が目的に応じて共存しています。

検出系統の比較

系統代表候補生成後処理特徴
2 段階Faster R-CNNRPNNMS高精度、比較的重い
1 段階YOLO, SSDなし(直接予測)NMS速い、リアルタイム向き
トランスフォーマーDETR 系オブジェクトクエリ不要(集合予測)エンドツーエンド、概念的に単純

表の精度・速度は絶対的な順位ではなく、系統の一般的な傾向として理解するのが安全です。実際の値はバックボーン、入力解像度、学習データ、バージョンによって大きく変わります。

画像セグメンテーションの三つの課題

セグメンテーションは「何がどこにあるか」をピクセル単位で答えます。目標に応じて三つに分かれます。

   同じシーン、三つのセグメンテーションの見方

  セマンティック: [人][人][人]  -> すべて「人」一色
  インスタンス:   [人1][人2][人3] -> 個体ごとのマスク
  パノプティック: things(人1,2,3) + stuff(道路, 空) 統合

セグメンテーションアーキテクチャの流れ

Segment Anything: プロンプト可能セグメンテーション

発想の転換

Segment Anything(SAM, arXiv 2304.02643)は、セグメンテーションの見方を変えました。従来のモデルは概ね「決まったクラス集合」をピクセルに付与するよう特定データセットに合わせて学習していました。SAM は代わりにプロンプト可能セグメンテーション(promptable segmentation)という課題を提案します。点、ボックス、大まかなマスクといったプロンプトを与えると、そのプロンプトが指す対象をクラス名なしでも分割します。

構造

SAM は大きく三つの部分から構成されます。

        SAM 構造(概念)

  画像 --> [画像エンコーダ(重い, 1 回計算)] --> 画像埋め込み
                                                  |
  プロンプト(点/ボックス/マスク) --> [プロンプトエンコーダ] --> プロンプト埋め込み
                                                  |
                                                  v
                        [軽量マスクデコーダ] --> マスク(複数)
                                                  |
                        曖昧なとき: 複数候補マスク + 信頼度スコア

データエンジン

SAM でよく強調されるもう一つの軸は、大規模なマスクデータを作った方法です。モデルと人が交互にマスクを生成・検査する反復過程を通じて、人が直接描くのが難しい規模のマスクデータを構築しました。「多くの種類の物体をプロンプトで分離する」という汎化能力の相当部分が、この大規模で多様なデータから来ています。

SAM の意味と限界

オープンボキャブラリ検出・セグメンテーション

伝統的な検出器は、学習時に見た固定のクラス一覧しか認識しません。オープンボキャブラリ(open-vocabulary)アプローチは、この制約をゆるめようとする流れです。テキストと画像を一緒に学習した表現(例: 画像とテキストを同じ空間に整列させる対照学習系)を活用すれば、学習時に明示的にラベル付けしなかったクラスもテキスト説明で指示して見つけられます。

SAM 系のプロンプト可能セグメンテーションとオープンボキャブラリ検出を組み合わせれば、「テキストで何を探すかを指示し、その対象をピクセルマスクで分離する」というパイプラインを構成できます。検出・セグメンテーション・言語整列表現が部品のように結合するのが近年の流れの特徴です。

バックボーンの進化: 何が特徴を抽出するか

検出・セグメンテーションモデルは概ね「バックボーン(backbone)+ ネック(neck)+ ヘッド(head)」の三つに分けて見られます。このうちバックボーンは画像から特徴を抽出する核心部品であり、バックボーンの発展が検出・セグメンテーション性能の相当部分を牽引してきました。

   検出・セグメンテーションモデルの 3 段構成(概念)

  画像
    |
  [バックボーン]  --> 様々な解像度の特徴マップ
    |
  [ネック(FPN など)]  --> スケール間の特徴融合
    |
  [ヘッド]  --> ボックス/クラス または マスク予測

バックボーン選択は精度と速度の大きなつまみです。重いバックボーンは正確だが遅く、軽量バックボーンは速いが難しいシーンで損をします。実務では目標遅延・精度に合わせてバックボーンを選び、必要なら事前学習済みの重みから始めます。

評価指標: mAP と IoU

検出・セグメンテーション結果をどう「良い/悪い」と判定するかを理解すると、ベンチマーク数値をはるかに正確に読めます。

   IoU 概念(ボックス例)

  IoU = 交集合の面積 / 和集合の面積

  よく合う: 予測と正解が大きく重なる --> IoU 高い
  外れ:     重なり小さい --> IoU 低い

  通常 IoU 閾値(例: 0.5)以上なら「正しい検出」として数える

注意すべきは、mAP 一つでモデルを並べにくいことです。同じ mAP でも小さな物体・大きな物体・特定クラスでの強弱が異なりえます。またベンチマークデータセットの特性(都市の道路、屋内、航空など)によって順位が入れ替わることもあります。数値は「どのデータセットで、どの IoU 基準で」測ったものかを一緒に見て初めて意味があります。

損失関数の観点

検出・セグメンテーションモデルは複数の損失を合わせて学習します。各損失が何を教えるかを知ればモデルの振る舞いを理解しやすくなります。

損失設計はしばしば精度と安定性を左右します。例えば背景不均衡をうまく扱えないと、モデルが「すべて背景」と予測する方へ偏ることがあります。

ここで覚えておくべきは、複数の損失の重みの均衡がモデルの性向を変えることです。ボックス回帰に大きな重みを与えると位置は正確になりますが分類が揺れることがあり、逆もまた然りです。難しい例を強調する損失は稀な物体をよく捉えさせますが、ラベル雑音が多いとかえって雑音を学習する危険があります。損失は「何をより重要と見るか」をモデルに伝える言語だと考えると理解しやすいです。

実務パイプラインとよくある失敗

実際の検出・セグメンテーションシステムを作るとき繰り返し出会う点を整理します。

   典型的な検出パイプライン(概念)

  データ収集/ラベリング
    |
  前処理・拡張 (クロップ, 色変形, モザイクなど)
    |
  事前学習バックボーンで学習
    |
  検証セットで mAP 測定 + 閾値チューニング
    |
  配備環境データで微調整
    |
  軽量化(量子化など)後に配備
    |
  運用中の誤検出/見逃しを収集 -> データにフィードバック

最もよくある失敗は「ベンチマーク数値が良いから自分の問題もうまく解けるだろう」と仮定することです。ベンチマークと実際のドメインの差を常に検証し、自分のデータで測り直す習慣が重要です。

検出とセグメンテーションの結合

近年の流れの大きな特徴の一つは、検出とセグメンテーションと言語が互いに部品のように結合することです。代表的な組み合わせを整理します。

こうした組み合わせは、各部品が独立に発展しつつも標準的なインターフェース(ボックス、マスク、テキスト埋め込み)でつながるから可能です。系譜を理解するとは、これらの部品をどう組み立てられるかを知ることと同じです。

リアルタイム検出の観点

実務では検出がしばしば遅延時間を核心的な制約とします。リアルタイム検出を左右する要素はおおよそ次の通りです。

YOLO 系が長くリアルタイム検出の代表として言及されてきた理由は、精度を大きく犠牲にせずこれらの要素をバランスよく扱ってきたからです。ただしどのバージョンが「最良か」は、目標遅延、精度要求、配備ハードウェアによって変わるので、絶対的な結論は避けるほうが安全です。

強みと限界のまとめ

アプローチ強み限界
Faster R-CNN安定した高精度リアルタイムには比較的重い
YOLO/SSD速いリアルタイム推論極小物体・密集シーンで難しい場合
DETR 系エンドツーエンド、NMS 不要初期版の遅い収束(後続版が改善)
Mask R-CNN検出+インスタンス分割の統合重いパイプライン
SAMクラス非依存の汎用セグメンテーション意味ラベルなし、重いエンコーダ
オープンボキャブラリ自由テキストで指示ドメイン・表現ごとの精度差

系譜を一目で

ここまでの流れを時間順の発展系譜として整理すると次の通りです。各段階が前の段階の何を学習で吸収したかに注目すると、大きな絵が見えます。

   検出・セグメンテーションの発展系譜(概念)

  [検出]
  R-CNN --> Fast R-CNN --> Faster R-CNN   (候補生成を RPN に吸収)
       \--> YOLO / SSD                    (候補生成の除去, 1 段階)
            \--> DETR                     (アンカー・NMS 除去, 集合予測)
                 \--> Deformable/DINO など (収束・小物体の改善)

  [セグメンテーション]
  FCN --> U-Net                           (エンコーダ-デコーダ, スキップ)
       \--> Mask R-CNN                    (検出+インスタンス分割)
            \--> マスクトランスフォーマー系 (統合マスク集合予測)

  [汎用化]
  SAM (プロンプト可能セグメンテーション)
  + オープンボキャブラリ (テキストで指示)
  = 部品組み立て型ビジョンシステム

この系譜で繰り返されるパターンは「人が手でチューニングしていた要素を学習可能な部品に置き換える」ことです。この観点を持てば、新しく登場するモデルが系譜のどの位置に置かれるかを速く把握できます。

一つ付け加えると、この系譜は「新しいものが古いものを完全に置き換える」という話ではありません。Faster R-CNN のような 2 段階検出器は精度が重要な場所で今も使われ、YOLO 系はリアルタイムの標準として残り、DETR 系は後処理のない優雅さで場所を広げていきます。各系統は異なる相反点の上にあり、実務はその相反のどこに立ちたいかによって選びます。

どの状況に何を選ぶか

正解は一つではなく、多くは複数の部品を組み合わせて目標に合わせます。これが系譜を理解する実用的な理由です。

おわりに

検出とセグメンテーションの発展は、「人が設計した部品を一つずつ学習で吸収してきた過程」とまとめられます。候補生成は RPN に、後処理は集合予測に、固定のクラスはテキスト整列表現に置き換えられてきました。SAM はここに「プロンプトで何でもセグメントする」という軸を加えました。

核心は特定モデルの瞬間的な順位ではなく、各モデルが導入した概念が部品のように再結合され、ビジョンシステム全体を柔軟にしてきたという点です。新しい SOTA が現れても、この系譜の考え方を理解していれば、変化をはるかに速く追えます。

最後に実務者の態度を一つ強調したいです。ベンチマークリーダーボードの最上位モデルを無条件に持ってくるより、自分の問題が要求する相反点(遅延対精度、ボックス対マスク、固定クラス対自由指示)をまず明確にするほうがよいです。その相反点が決まれば、本記事で整理した系譜の上で適切な部品を選び組み立てる作業がはるかに容易になります。モデルは変わり続けますが、相反を扱う考え方は長く残ります。

参考資料

クイズ

Q1: 2 段階検出と 1 段階検出の根本的な違いは? 2 段階はまず候補領域を生成してから各候補を分類します(例: Faster R-CNN)。1 段階は候補生成の段階なしに画像からボックスとクラスを一度に予測します(例: YOLO, SSD)。1 段階が普通は速いです。

Q2: DETR が NMS をなくせた理由は? 学習時にハンガリアンマッチングで予測と正解を 1:1 に対応させ、重複予測が生じないよう誘導するからです。集合予測方式なので、重なるボックスを事後に除去する必要がありません。

Q3: セマンティック・インスタンス・パノプティックセグメンテーションの違いは? セマンティックはピクセルごとにクラスのみ付与し個体を区別しません。インスタンスは個々の物体を別々のマスクに分離します。パノプティックは背景(stuff)をセマンティックに、物体(things)をインスタンスとして扱い両者を統合します。

Q4: SAM のいう「プロンプト可能セグメンテーション」とは? 点、ボックス、大まかなマスクといったプロンプトを与えると、クラス名なしでもその対象を分割する方式です。固定のクラス集合に縛られない汎用セグメンテーションを目指します。

Q5: SAM の画像エンコーダとマスクデコーダの計算コストが異なる理由は? 画像エンコーダは重いですが 1 画像あたり一度だけ計算し埋め込みを再利用します。マスクデコーダは軽く、同じ画像で複数のプロンプトを速く処理できます。

Q6: オープンボキャブラリ検出の中核アイデアは? クラスを固定の整数ラベルではなくテキスト埋め込みとして扱い、学習時に明示的にラベル付けしなかった対象も自由テキストで指示して見つけることです。テキスト画像整列表現を活用します。

Q7: SAM の限界を一つ挙げると? SAM はマスクを作るだけで「これは何だ」という意味ラベルを直接付けません。クラス認識には別のモデルが必要で、画像エンコーダが重いためリアルタイム・軽量環境には軽量化が求められます。

Q8: 検出モデル選択時に絶対順位を断定しにくい理由は? 精度と速度がバックボーン、入力解像度、学習データ、バージョン、配備ハードウェアによって大きく変わるからです。目標遅延と精度要求に合わせて系統を選ぶのが現実的です。

Q9: IoU と mAP はそれぞれ何を測るか? IoU は予測領域と正解領域の重なり(交集合/和集合)を測る基本尺度です。mAP は様々な信頼度閾値での精度-再現率曲線の下の面積をクラスごとに平均した値で、検出・インスタンスセグメンテーションの代表指標です。

Q10: 「バックボーン+ネック+ヘッド」構成でネック(FPN など)の役割は? 異なる解像度の特徴マップを融合し、小さな物体(高解像度)と大きな物体(低解像度)を一緒に扱えるよう助ける部分です。多スケール検出の核心部品です。

Q11: 「ベンチマーク mAP が高い」が実際の問題解決を保証しない理由は? ベンチマークデータセットの特性と実際の配備ドメインが異なりうるからです。照明・角度・クラス分布が異なると性能が落ちるので、自分のデータで検証し直すことが重要です。

Q12: 検出器と SAM を組み合わせる典型的な方式は? 検出器で物体ボックスを得て、そのボックスを SAM のプロンプトとして与え精密なピクセルマスクを得ます。「何がどこに」は検出器が、「ピクセル境界」は SAM が担当する役割分担です。

コメント

まだコメントはありません。

ログインするとコメントできます