DETR(End-to-End Object Detection)徹底解説:NMSフリーのエンドツーエンド物体検出をTransformerで実現!
こんにちは、ゆずかきです。
ここからは、「End-to-End Object Detection with Transformers (DETR)」 と呼ばれる手法について、論文「End-to-End Object Detection with Transformers(Nicolas Carion ら)」をもとに解説してみたいと思います。
DETR は、その名のとおりオブジェクト検出(Object Detection)をエンドツーエンドで実現しようとするアプローチ。CNNバックボーン+Transformer構造、そしてセット予測(Set Prediction)に基づく損失関数を組み合わせ、NMS(Non-Maximum Suppression)などの手作業的なコンポーネントを省略している点が特徴的です。Facebook AI(現 Meta AI)の研究チームが2020年ごろに発表し、大きな注目を集めました。
そんな DETR 論文を、中級者から上級者向けに、できるだけ丁寧&網羅的にお伝えします。
論文URL
👇
End-to-End Object Detection with Transformers
§本記事の構成
- はじめに: DETR とは?
- 論文の背景:なぜ “エンドツーエンド検出” なのか
- セット予測という考え方:重複排除からの開放
- DETRのアーキテクチャ概要
- CNN バックボーン
- Transformer Encoder-Decoder
- Bipartite Matching(ハンガリアン法)&損失設計
- 主要な実験結果&Faster R-CNN との比較
- アブレーションスタディ:エンコーダ層数やポジショナルエンコーディングの影響
- DETR のパンopticセグメンテーション拡張
- 課題:小物体性能や学習スケジュールなど
- まとめ・今後の展望
ポイントは“Transformerを使って N 個のオブジェクトを並列生成”し、そのペアワイズ重複チェックを内部(セット予測)で完結させてしまう、という大胆な発想です。具体的に見ていきましょう。
§はじめに: DETR とは?
論文の正式名称は、
“End-to-End Object Detection with Transformers"
著者は、Nicolas Carion, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, Sergey Zagoruyko(Facebook AI)らです。
DETR は、オブジェクト検出を“一発で”予測するためのフレームワーク。実は、従来の手法では、AnchorやProposal、NMSなど、いわゆる「検出のための手組みロジック」が多々存在していました。しかし本研究は、Transformer Encoder-Decoder + セットベースの損失関数 (Hungarian matching) を用いることで、そうした複雑な “手作業” から解放しようというアプローチです。
学習時はオブジェクトの集合(セット)に対して重複なく予測できるようにコストを定義し、推論時は定数 N 個の “object queries” を用いて並列に予測。各予測を1対1マッチングで整合性を取る、という設計になっています。イメージとしては、“画像内に存在する物体数だけ予測スロットが使われ、余ったスロットは no object として分類” する感じです。
§論文の背景:なぜ “エンドツーエンド検出” なのか
近年の物体検出器(例えば Faster R-CNN, YOLO, RetinaNet, FCOS など)はいずれも事前にアンカーを設定したり、2段階で Proposal を生成したり、最後にNMSで重複バウンディングボックスを除去したり、といった追加プロセスを要していました。
特に NMS は、類似予測がいっぱい出てきたときに統合するための仕組みですが、言い換えると「ネットワークが重複予測をたくさん出すことを前提とした後処理」です。これらは確かに高精度で実用的ですが、“直接セットとして予測できるなら、そもそもそういった後処理は不要では?” という問題意識が生まれます。
本研究では、同様の問題意識を突き詰め、Transformer を活用することで、一発のフォワードパスで N 個のオブジェクトを同時に予測し、相互の整合性をモデル内部で学習させます。これにより、以下のようなメリットを見込んでいます:
- 自動的に重複排除
- Anchor設計やProposal設計が不要
- 新たな汎用的アーキテクチャ(ただし学習にコツは必要)
§セット予測という考え方:重複排除からの開放
DETR では、学習時にセット予測というスタイルを採用します。具体的には、N 個の予測 ({ \hat{y}_1, \dots, \hat{y}_N }) と、M 個の正解ラベル ({ y_1, \dots, y_M })(通常 M ≤ N)を対応付けする際、ハンガリアン法 (Hungarian matching) を用います。
- 予測と正解の組合せによる“マッチングコスト”を最小化するように、1対1で結びつける
- “余分” な予測スロットはすべて “no object” クラス(空)に割り当て
このコストは、クラスロス + バウンディングボックスロス(L1 と generalized IoU)で構成されており、1対1マッチングによって重複予測がペナルティをくらうようになっています。これが “NMS いらず” を可能にする理論的支柱でもあるわけですね。
§DETRのアーキテクチャ概要
ここからが本論文のコア:DETR の構成要素をざっくり俯瞰してみます。
1. CNN バックボーン
まずは普通の CNN(ResNet-50 / ResNet-101など)で特徴マップを抽出します。従来のオブジェクト検出と同様ですが、従来は“Feature Pyramid Network (FPN)” を組み合わせるのが一般的でした。しかし DETR の標準構成では、1つの解像度で Transformer に入力する形にしており、そこもシンプル。
2. Transformer Encoder
CNN で得た特徴マップを flatten(HW 次元を 1次元列にする)して、位置エンコーディング(2D座標を sine/cosine 形式などで埋め込む)を加えます。その列ベクトルを、複数層のマルチヘッドセルフアテンション + FFN でエンコードするのが DETR のエンコーダ部。
これにより、画像全体の文脈(グローバルな特徴)を参照しながら、各ピクセル(あるいはその周囲)をよりリッチに表現していきます。すべてのピクセルが双方向に相互参照できるため、大きい物体などの情報を集約しやすい、と論文では示唆しています。
3. Transformer Decoder
エンコーダの出力を受け取り、次にデコーダが動きます。ここでは、固定数 N の “オブジェクトクエリ (object queries)” というパラメータ群が存在。クエリ自体は学習によって最適化されます。
- N 個の「オブジェクト用埋め込みベクトル」を初期値として持ち、
- それぞれがエンコーダ出力に対するクロスアテンションを行い、最終的にオブジェクトを予測する形
面白いのは、N 個のクエリが並列にデコードされる点(Transformer デコーダは本来 Auto-Regressive ですが、DETR は並列版を使う)。これらクエリが「このスロットには何のオブジェクトがあるか?」を学習的に判断するため、一度に N 個の枠を “バラバラ” に埋めようとします。さらに内部のセルフアテンションによって、お互いのスロット同士で重複を防ぐように情報交換が行われます。
§Bipartite Matching(ハンガリアン法)&損失設計
論文の大きな目玉が、「DETR を支える損失関数をどのように設計するか」 という点です。
- ハンガリアンマッチング
- 予測スロット ( \hat{y}_i ) とアノテーション ( y_j ) を1対1対応づける
- クラスのロス + バウンディングボックスロスの合計で最適な対応関係を決定
- クラスロス (クロスエントロピー)
- ただし、( \hat{y}_i ) のクラスが “no object” か否かで重みづけを少し変えている
- バウンディングボックスロス
- L1 (中心座標 + 幅/高さ の誤差)
- Generalized IoU(拡張 IoU を使ってスケール不変性を担保)
- これらの組合せにより、大きさが異なる物体でも安定して学習が進む
これで、従来のアンカー指定や IOU に基づく割り当てルールなどを使わずに済むわけです。さらにNMSも不要になるのがユニーク。
§主要な実験結果&Faster R-CNN との比較
論文では、COCO 2017 データセットを使って、DETR をFaster R-CNN(FPNあり/なし、ResNet-50/101など)と比較しています。結論として、DETR は大きな物体検出(APL)に強みを持ち、トータルの AP でも最適化をしっかり行えば Faster R-CNN とほぼ同等に到達することが示されました。
しかし、小物体 (APS) はまだ苦手であり、トレーニングに時間がかかる(エポック数を多く回す必要あり)という制約もあります。ここがDETR の今後の課題の一つ。
具体的には、
- APL(大きい物体)で劇的にスコアが高い:Transformer のグローバルアテンションによる恩恵か?
- APS(小さい物体)ではやや苦手:FPN 等のマルチスケール処理が無いから?
- 学習に長いイテレーションを要する(300~500 epoch など)
とのこと。
§アブレーションスタディ:エンコーダ層数やポジショナルエンコーディングの影響
論文には多数のアブレーション実験が載っていますが、代表的なポイントを抜粋します。
- Encoder 層数が増えるほど性能向上
- 特に大きな物体を捉えるのにエンコーダが有効か?
- Encoder が無いと AP が大きく下がる
- Decoder 層ごとに性能が向上
- 最終層に行くにつれ、スロット間で重複を防ぐための調整が進む。
- 1層目は NMS のような後処理を入れると AP が少し上がるが、最終層まで見ると不要。
- Positional Encoding(2次元版 sin/cos)
- 入れないと大幅に性能ダウン
- Learned / Sine どちらも試し、最終的には Sine エンコーディングが良好との結果
加えて、損失関数のバリエーション(L1/GIoU など)や、クエリスロット数についての考察も行われています。いずれにせよ、Transformer と Bipartite Matching がコアであり、そこにポジショナルエンコーディング等をうまく組み合わせると “セット予測” が機能する、というわけですね。
§DETR のパンopticセグメンテーション拡張
この論文後半では、DETR を発展させて Panoptic Segmentation(物体だけでなく“もの(thing)”と“背景(stuff)”を一括で領域分割)に適用した実験も紹介されています。
- 出力スロットそれぞれに対して、“マスクヘッド” を付与
- N 個のクエリに対して、Semantic Label + セグメンテーションマスクを生成
- それらのマスクをピクセルごとに argmaxで決定するだけでパンoptic結果が得られる
ことが示されており、PanopticFPN や UPSNetと比較して良好な性能を示すという結果でした。ポイントとして、“thing” と “stuff” を同じフォーマットで扱うため、非常にシンプルな作りになっています。
§課題:小物体性能や学習スケジュールなど
上述のとおり、DETR はまだ小さい物体検出に課題があるという点が実験からも示唆されています。これはマルチスケール特徴を統合する仕組み(例:FPN)がないのが原因と考えられ、論文中でも「今後の改善が期待される」とまとめられています。
また、学習コストが大きいという問題も指摘されています。Faster R-CNN を始めとする既存フレームワークは、短いスケジュール(例えば 12 epoch や 36 epoch) で十分に収束する設定が多かったのに対し、DETR は300 epoch~500 epoch のようなロングスケジュールが必須。実務への導入を考えると、リソース的にハードルが上がる点は否めません。
加えて、スロット数 N を 100 に固定しているため、「物体数が 100 を超えそうな状況ではどうなるの?」といった疑問もあります(実験上、COCO では 100 個超の物体が登場するケースはまれ)。論文補遺でも、同一クラスが多数登場する極端な画像に対しては性能が落ちる例が示されており、あまりにオフディストリビューションだとさすがに見つけきれない場面もあるようです。
§まとめ・今後の展望
DETR は、「Transformer でオブジェクト検出をエンドツーエンドに行い、NMS などの後処理を排除する」という大きなコンセプトで、2020年代のオブジェクト検出界隈に新しい流れをもたらした手法です。
- 従来アンカーや Proposal、NMS などの手仕込み部分が不要
- Set-based matching によって重複削除を学習ベースで実行
- 大きい物体の検出が得意。小さい物体にはやや苦手傾向
- まだまだ学習コストやスケールへの適応に課題
とはいえ、DETR のコンセプトを元にした改良手法もいろいろ登場しており、Multi-scale Feature の取り込みや 2ステージっぽい仕組みのハイブリッドなど、研究が急速に進んでいます。また、本論文内の Panoptic 拡張からもわかるように、セグメンテーションなど他の視覚タスクへ拡張しやすいのもポイント。
つまり、「Transformer でどこまでやれるか?」を実証した先駆者として意義深い研究といえます。今後も大規模モデルやさらなる工夫によって、より高精度なエンドツーエンド検出が当たり前になる可能性は高いでしょう。
最後までお読みいただき、ありがとうございました!
🔑この記事のポイントまとめ
- DETR (End-to-End Object Detection with Transformers)
- CNN + Transformer エンコーダ・デコーダ構造
- オブジェクト検出を定数 N 個の “object queries” で並列予測
- セット予測 (Hungarian matching) で 1対1マッチング&NMS削除
- COCO ベンチマークで Faster R-CNN と同等以上の性能を示す
- 大きい物体検出が得意、小さい物体はやや苦手
- 学習は長いスケジュールが必須
- Panoptic segmentation にも拡張でき、既存手法と競合する結果
- 今後の課題
- 小物体への対応(FPN 的な多スケール活用?)
- エポック数や計算リソースへの要求が大きい
- スロット数が固定なので、多数の物体がある環境での汎化
§おわりに
DETR は従来の検出器と全く違う視点で設計されています。“後処理いらず” かつ “複雑なアンカー設定不要” というシンプルさと、“セット予測” による理論面の洗練が組み合わさっているため、「Transformer がもつグローバルな自己注意機構とオブジェクト検出の融合」を一気にブレイクスルーさせました。
もちろん、学習効率や小物体への対応といった改善点も明確ですが、論文自体でも “この方式が大枠で将来を切り開く” という期待が示されています。実際、DETR を発展させた派生モデル(Deformable DETR, DN-DETR, DAB-DETR など) が続々提案されており、より実用性の高い形に洗練されつつある現状です。
もしエンドツーエンドの物体検出に興味があれば、本論文は外せない一作。“CNN + Transformer + Bipartite Matching” の組み合わせにより、オブジェクト検出が大きく変わりつつある。その最初の一歩が DETR といえるでしょう。
ディスカッション
コメント一覧
まだ、コメントがありません