1.はじめに
最近,ChatGPTなど大規模言語モデルにおける推論時にハルシネーション抑制や生成品質を向上させるために使用されるRAGですが,CVPR2025にてこのRAGの考え方を物体検出タスクに応用することで希少クラスにおける検出精度を大幅に向上させた検出フレームワークであるSearchDetが発表されました.CVPR2025ではRAG × 物体検出に関連したような論文が散見されましたが,その中でもZero-Shotで検出精度向上を実現したSearchDetが個人的に面白いなと思ったため,共有します.
目次
1.はじめに
2.背景
3.課題
4.手法の肝であるRAGについて
5.提案手法
6.評価
7.考察
8.おわりに
9.参考文献
2.背景
近年,オープンボキャブラリ物体検出(Open-Vocabulary Object Detection; OVD)が注目されています.OVDでは,学習時に未観測のカテゴリでもテキストプロンプトを用いて名称を与えるだけで検出することが可能です.OVDにおける代表的な検出器としては CLIP(分類器/スコアリングとしての活用),Grounding DINO,GLIP,OWL-ViT,Detic/RegionCLIP などが挙げられます.これにより,従来のクローズドセット検出器と比べて未見・長尾カテゴリ(ロングテール分布)への一般化と語彙拡張性に優れた柔軟な検出を実現しています.一方で,同一分布の既知カテゴリに限ると従来法が勝る場合もあり,プロンプト設計や語彙の曖昧性への対処が課題として残っています.
3. 課題
オープンボキャブラリ検出では高精度な検出ができる一方,いくつかの課題が残ります.それがロングテール問題と新規クラス検出です.以下ではこの二つについて説明します.
3.1 ロングテール問題
クラス不均衡なデータセットにおいて頻出頻度の高いクラスの検出精度は向上し,頻出頻度の低い希少なクラス(ロングテール分布下)では検出精度が低下してしまう現象です.これはモデルが該当するデータセットを学習する際のサンプル数が影響しており,サンプル数が多い高頻度なクラスの学習機会は多く得られますが,サンプル数の少ない希少なクラスの学習機会はあまり得られないといったことが原因として挙げられます.ロングテールの有無におけるデータセットの分布を表した図1を見ると,オレンジ(ロングテール分布でない)ではクラス間でサンプル数に差があるものの,クラスう数が100未満であるため,学習時のサンプルとしてサンプル数の少ないクラスでも学習される機械を得られます.しかし,ロングテール分布では,多くのクラスを含み,かつクラス間でのサンプル数に差があるため,学習時における希少クラスの学習機会が少なくなってしまい,モデルがそのクラスに関して十分に学習できなくなってしまいます.
このような問題を解決するために,モデルの学習時におけるサンプルの選択方法を改善する手法や,データセット内の各カテゴリーのサンプル数を変化する(例:オーバーサンプリング,アンダーサンプリング)ことで,ロングテール問題を解決するアプローチもあります.
3.2 新規クラス検出
続いて新規クラス検出です.近年では背景でも挙げたようなオープンボキャブラリ検出など,物体検出モデルの発展により,Zero-Shotでの物体検出も実現されています.しかし,依然としてその精度は低く高精度な検出を可能とするには,Few-Shot(そのドメインにおける事前学習)が必要とされます.このような,事前学習では多大な訓練データが必要となり,またその学習に多くのメモリや時間を要します.そのため,
4. 手法の肝であるRAGについて
上記で挙げた2つの課題を解決するための考え方の肝となる RAG(Retrieval-Augmented Generation)について説明します.RAGとは,LLMの出力における品質を向上させる際に用られる手法であり,簡単に言うと「答えに関係の在りそうなものを事前に検索して,その情報を参考に回答を作成する」みたいなものです.OpenAIやGoogleが提供しているような従来のサービスでは,ユーザが入力した質問(クエリ文)をLLMにそのまま入力していました.しかし,RAGを使った生成では,ユーザが入力した質問のみだけでなく,それに類似したデータをインターネット上や独自に組み立てたデータベース上から検索し,その検索結果も併せてLLMに入力します.そのため,RAGを用いた生成では,特定の命令のみだけでなくそれに付随した情報を付加し生成時の参照データを増強することができるため,LLMの回答の質を向上させることができます.この考え方を応用すると,事前学習を挟まずとも特定ドメインのデータを質問に注入することができるため,Zero-Shotであってもそのドメインでの精度向上も実現することができます.
5.提案手法
3.で挙げた課題を解決するための手法として,RAGの考え方を検出タスクに応用したフレームワークであるSearchDet(図3)が提案されました.この手法では,検出対象の候補となるマスク等を作成する SAM Proposal と SAM Proposal で出力されたマスク等の情報を基に対象物のヒートマップを作成する Heatmap Generation の二つを基に構成されています.以下ではこの2つの処理について詳しく説明します.
5.1 SAM Proposal
このモジュールは入力された画像内において,対象物の候補を網羅的に挙げ,候補となった対象物の中から,テキストプロンプトとして入力された検出対象に近いもののみを選別することを目的としています.以下は,入力,出力,フローの要点をまとめたものです.
入力
- 画像 I
- テキストプロンプト(概念ラベル)
出力
- 選別済み SAM マスク集合 {(M_i, s_i)}
- 調整クエリ埋め込み
q_adj
と適応閾値τ
やっていること(要点)
- SAM で候補マスクを大量生成
- LLM で正例/負例クエリを作り,Web 画像を取得
- 画像を DINOv2 で埋め込み化し,
q_adj = A_pos − A_neg
を作成 - 各マスクの埋め込み
f_i
とq_adj
の類似度s_i
を計算し,適応閾値τ
でフィルタ
詳細フロー(論文準拠・式あり)
-
候補生成:SAM(HQ を含む)で入力画像から領域マスクを多数生成する.各マスクは後で埋め込みを取り,照合に用いる.
-
クエリ生成:正例(対象概念)と負例(共起・背景)を Web から取得する.負例語は Microsoft Phi-3-mini-4k-instruct を用いて生成する.各クエリについて上位10枚を採用し、 DINOv2 に通して埋め込みを得る.
-
埋め込み化と注意重み:入力画像の埋め込みを
q∈ℝ^d
、正例集合をE_pos={e_pos,i}
、負例集合をE_neg={e_neg,i}
とおく.まずコサイン類似度
$$
S_{\text{pos},i}=\frac{q\cdot e_{\text{pos},i}}{|q||e_{\text{pos},i}|},\quad
S_{\text{neg},i}=\frac{q\cdot e_{\text{neg},i}}{|q||e_{\text{neg},i}|}\tag{1}
$$
からソフトマックス重み
$$
\alpha_{\text{pos},i}=\frac{e^{S_{\text{pos},i}}}{\sum_{j}e^{S_{\text{pos},j}}},\quad
\alpha_{\text{neg},i}=\frac{e^{S_{\text{neg},i}}}{\sum_{j}e^{S_{\text{neg},j}}}\tag{2}
$$
を計算し,加重和
$$
A_{\text{pos}}=\sum_i \alpha_{\text{pos},i} e_{\text{pos},i},\quad
A_{\text{neg}}=\sum_i \alpha_{\text{neg},i} e_{\text{neg},i}\tag{3}
$$
を得る.調整クエリは
$$
q_{\text{adjusted}}=A_{\text{pos}}-A_{\text{neg}}\tag{4}
$$
と定義する. -
SAMマスク選別(頻度ベース自動しきい値):SAMで得た各マスクの領域埋め込みと,(4) の調整クエリ(あるいはペア差分で得た調整クエリ集合
Q
)とのユークリッド距離D_{ij}
を計算し,距離全体を昇順に並べてn
個のビンに等分割する.各ビン内でどのマスクが最頻かを集計し,そのビンの 80% を超える頻度を占めたマスクだけを候補として選ぶ(経験的に 0.8 が安定).さらに参照距離分布R
との平均差が3σ_R
を超えるものは棄却する.
5.2 Heatmap Generation
目的:画像全体の「概念らしさ」をヒートマップで推定し,5.1 で選別された SAM マスクを精密化する.
入力
- 画像 I
-
q_adj
,選別済み SAM マスク {(M_i, s_i)} - 必要に応じて
A_pos
,A_neg
出力
- 類似度ヒートマップ H(および二値版 Ĥ)
- 最終マスク/外接 BBox(スコア付き)
やっていること(要点)
- DINOv2 で空間特徴マップ
F
を抽出 - テンプレート
T = A_pos − A_neg
(またはq_adj
)を用意 - 各位置で
F
とT
の類似度からヒートマップH
を作成 -
H
を正規化・二値化してĤ
を得る -
Ĥ
と選別済み SAM マスクを AND して最終領域を確定
詳細フロー(論文準拠・式あり)
-
特徴抽出:入力画像 I を DINOv2 に通し,空間特徴
F(x,y) ∈ ℝ^d
を得る. -
テンプレート:正例・負例からのプロトタイプ差分を
T = A_pos − A_neg
とする(またはT = q_adj
). -
類似度ヒートマップ:各位置のコサイン類似度で
$$
H(x,y)=\frac{F(x,y)\cdot T}{|F(x,y)|,|T|}.
$$ -
二値化:データ依存のしきい値
θ
により
$$
\hat{H}(x,y)=\mathbf{1}{,H(x,y)\ge \theta,}.
$$ -
統合:選別済みマスク
M_i
と画素単位 AND を取り
$$
R_i=\hat{H}\land M_i,
$$
必要に応じて小領域除去や連結処理を行い,R_i
から最終マスクと外接 BBox を得る(スコアは類似度情報とs_i
を用いて付与).
6.提案手法の評価
評価項目の内,検出精度の大きな改善の在ったもののみについて,以下に触れます.(より詳しく知りたい方は,元論文を参照ください)
-
Zero-shot で,主要データセットの既存手法をいずれも5pt以上上回った.(COCO +7.1pt ,ODinW-35 +5.3pt,Roboflow100 +9.4pt)
-
ロングテール分布の希少クラス(LVIS-rare)で,既存手法を +12.1pt 上回った.
-
Few-Shot 条件(COCO 10-shot)でも追加学習なしで,既存手法を +8.5pt 以上上回った.(学習あり手法の最高値に対しても +27.3pt)
7.論文内での考察
論文内の考察の内,興味深かったものについて,以下に触れます.(こちらも同様に,より詳しく知りたい方は,元論文を参照ください)
- 負例が効く(必須要素):負例なしで 59.3 → 45.8 mAP(−13.5pt).背景/共起による誤検出を抑制.
- ヒートマップ統合が効く:SAMのみだと −8.3pt.マスク×類似度の二段構えが有効.
- クエリの具体化が効く:曖昧ラベルを文脈付きにするだけで 約+3〜4pt(ODinW).
8.おわりに
今回はRAGを検出タスクに応用した検出フレームワークであるSearchDetについて紹介しました.あくまでも,SearchDet は“完成品の検出器”ではなく,外部検索を取り込んで推論時に対象を絞り込むためのフレームワークであるといった点で,さらなる発展が見込まれるのではないかと思いました.例えば,得られたマスク+埋め込みを少量の教師データで微調整することで,ドメイン適応用の軽量アダプタの作成の可能性があるかもしれせん.また,Web 検索依存によるレイテンシは検索に多くの処理時間を要してしまうため,リアルタイム性を重視したような検出には不向きかもしれません.しかし,実運用では、検索結果のキャッシュ/事前収集のローカル化/並列化(バッチ処理・埋め込みの先計算)によりレイテンシを抑えることが鍵になるのではとも思いました.
9.参考文献
元論文
RAGとは