Upgrade to Pro — share decks privately, control downloads, hide ads and more …

End-to-End Object Detection with Transformers

Be0f86176276318b4b9775d795278f7e?s=47 Yoshitaka Ushiku
December 11, 2020

End-to-End Object Detection with Transformers

第五回 全日本コンピュータビジョン勉強会 ECCV2020読み会で「End-to-End Object Detection with Transformers」を読みました。

副題として「~長年の苦労は一瞬にして無駄になるのか」という危機感を煽るフレーズを付けています。Transformerは諸分野でその有用性が急速に認められていますが、CVでもTransformerさえあれば他には何もいらないのでしょうか?(Transformer is all you need なのか)

結論は…?

Transformerの適用事例集や、Transformer自体の丁寧な説明にも腐心しているので、Transformerよく分からん!という人もご覧ください。

コロナ禍における遠隔授業録画の徒rいやTipsもありますよ。

Be0f86176276318b4b9775d795278f7e?s=128

Yoshitaka Ushiku

December 11, 2020
Tweet

Transcript

  1. 第五回 全日本コンピュータビジョン勉強会 ECCV2020読み会 End-to-End Object Detection with Transformers ~長年の苦労は一瞬にして無駄になるのか 牛久

    祥孝 losnuevetoros
  2. 自己紹介 2013.6~2013.8 Microsoft Research Intern 2014.3 博士(情報理工学)、東京大学 2014.4~2016.3 NTT CS研

    研究員 2016.4~2018.9 東京大学 講師 (原田牛久研究室) 2016.9~ 産業技術総合研究所 協力研究員 2016.12~2018.9 国立国語研究所 共同研究員 2018.10~ オムロンサイニックエックス株式会社 Principal Investigator 2019.1~ 株式会社 Ridge-i 取締役 Chief Research Officer 2020.4~ 津田塾大学 非常勤講師 所属学会 ACM、IEEE、電子情報通信学会、情報処理学会、日本ロボット学会、人工知能学会、 応用物理学会、建築情報学会 [Ushiku+, ACMMM 2012] [Ushiku+, ICCV 2015] 画像キャプション生成 動画の特定区間と キャプションの相互検索 [Yamaguchi+, ICCV 2017] A guy is skiing with no shirt on and yellow snow pants. A yellow train on the tracks near a train station.
  3. 自己紹介 2013.6~2013.8 Microsoft Research Intern 2014.3 博士(情報理工学)、東京大学 2014.4~2016.3 NTT CS研

    研究員 2016.4~2018.9 東京大学 講師 (原田牛久研究室) 2016.9~ 産業技術総合研究所 協力研究員 2016.12~2018.9 国立国語研究所 共同研究員 2018.10~ オムロンサイニックエックス株式会社 Principal Investigator 2019.1~ 株式会社 Ridge-i 取締役 Chief Research Officer 2020.4~ 津田塾大学 非常勤講師 所属学会 ACM、IEEE、電子情報通信学会、情報処理学会、日本ロボット学会、人工知能学会、 応用物理学会、建築情報学会 [Ushiku+, ACMMM 2012] [Ushiku+, ICCV 2015] 画像キャプション生成 動画の特定区間と キャプションの相互検索 [Yamaguchi+, ICCV 2017] A guy is skiing with no shirt on and yellow snow pants. A yellow train on the tracks near a train station.
  4. コロナなのでオンライン授業です

  5. 過去の反省 Ridge-iのインターン向けに同じ 内容の講義をやって録画した結果 ビデオカメラで録画したが: • スライド部分が小さい • ホームビデオ画質 • 照明の反射が邪魔

    ビデオにマイク付けて録音したが: • 他業務中の人たちの声が入る • ゴミ収集の音が入る(やばい) 字幕の編集は面倒くさい
  6. 妄想 でっかいスライド ジェスチャーや ポインティングを 組み合わせて説明 AIっぽい背景

  7. トライ&エラーの例:講演者の収録 固定カメラなら 講演者だけ抜き出せるん じゃね? →ホワイトボードが 光って抜けない 光沢のない背景なら? →そもそも静止画からの 差分では綺麗に 抜けない

    グリーンバックなら? →照明によってはok
  8. 工夫の数々 自前の一眼レフで 講演者をマシな画質で 撮るぞ スライド自体はパワポで タイミングを記録して 動画に変換するぞ 家の中で暗いので 照明を用意するぞ

  9. 工夫の数々 照明は複数(3つ) 置いて明るくしながら 影も消すぞ グリーンバック使うぞ 環境音を拾わないように ピンマイク付けるぞ モニタ回してカンペに するぞ バミリ貼って立ち位置

    間違えないようにするぞ
  10. 収録手順 1. グリーンバックと照明とカメラのスタンドは一定期間置きっぱなしであるこ とが前提 2. 電池を充電(カメラ、ワイヤレスピンマイク、照明3つ) 3. カンペにするモニタを移動 4. ずっと立つのでコルセットを装着・ピンマイクを装着

    5. ピンマイクとカメラの電源をON 6. 講義のスライドを表示してタイミングの記録を開始 7. カメラの録画を開始 8. 講義(1.5時間) 9. カメラの録画を終了 10. 記録されたタイミングを用いて講義のスライドを動画に変換 11. カメラ録画ファイルからAdobe After Effectsでグリーンバック消去 12. Adobe Premiere Proでスライド動画とカメラ動画を統合 13. 適切な長さ(20分前後)の動画に分けてエンコード (字幕などは手間がすごいので、最初から付けるつもりは無い)
  11. 収録手順 1. グリーンバックと照明とカメラのスタンドは一定期間置きっぱなしであるこ とが前提 2. 電池を充電(カメラ、ワイヤレスピンマイク、照明3つ) 3. カンペにするモニタを移動 4. ずっと立つのでコルセットを装着・ピンマイクを装着

    5. ピンマイクとカメラの電源をON 6. 講義のスライドを表示してタイミングの記録を開始 7. カメラの録画を開始 8. 講義(1.5時間) 9. カメラの録画を終了 10. 記録されたタイミングを用いて講義のスライドを動画に変換 11. カメラ録画ファイルからAdobe After Effectsでグリーンバック消去 12. Adobe Premiere Proでスライド動画とカメラ動画を統合 13. 適切な長さ(20分前後)の動画に分けてエンコード (字幕などは手間がすごいので、最初から付けるつもりは無い) 動画の撮り方が 決まった!
  12. 収録手順 1. グリーンバックと照明とカメラのスタンドは一定期間置きっぱなしであるこ とが前提 2. 電池を充電(カメラ、ワイヤレスピンマイク、照明3つ) 3. カンペにするモニタを移動 4. ずっと立つのでコルセットを装着・ピンマイクを装着

    5. ピンマイクとカメラの電源をON 6. 講義のスライドを表示してタイミングの記録を開始 7. カメラの録画を開始 8. 講義(1.5時間) 9. カメラの録画を終了 10. 記録されたタイミングを用いて講義のスライドを動画に変換 11. カメラ録画ファイルからAdobe After Effectsでグリーンバック消去 12. Adobe Premiere Proでスライド動画とカメラ動画を統合 13. 適切な長さ(20分前後)の動画に分けてエンコード (字幕などは手間がすごいので、最初から付けるつもりは無い) ・・・
  13. 収録手順 1. グリーンバックと照明とカメラのスタンドは一定期間置きっぱなしであるこ とが前提 2. 電池を充電(カメラ、ワイヤレスピンマイク、照明3つ) 3. カンペにするモニタを移動 4. ずっと立つのでコルセットを装着・ピンマイクを装着

    5. ピンマイクとカメラの電源をON 6. 講義のスライドを表示してタイミングの記録を開始 7. カメラの録画を開始 8. 講義(1.5時間) 9. カメラの録画を終了 10. 記録されたタイミングを用いて講義のスライドを動画に変換 11. カメラ録画ファイルからAdobe After Effectsでグリーンバック消去 12. Adobe Premiere Proでスライド動画とカメラ動画を統合 13. 適切な長さ(20分前後)の動画に分けてエンコード (字幕などは手間がすごいので、最初から付けるつもりは無い) 面倒くささが ヤバイ
  14. 収録手順 1. グリーンバックと照明とカメラのスタンドは一定期間置きっぱなしであるこ とが前提 2. 電池を充電(カメラ、ワイヤレスピンマイク、照明3つ) 3. カンペにするモニタを移動 4. ずっと立つのでコルセットを装着・ピンマイクを装着

    5. ピンマイクとカメラの電源をON 6. 講義のスライドを表示してタイミングの記録を開始 7. カメラの録画を開始 8. 講義(1.5時間) 9. カメラの録画を終了 10. 記録されたタイミングを用いて講義のスライドを動画に変換 11. カメラ録画ファイルからAdobe After Effectsでグリーンバック消去 12. Adobe Premiere Proでスライド動画とカメラ動画を統合 13. 適切な長さ(20分前後)の動画に分けてエンコード (字幕などは手間がすごいので、最初から付けるつもりは無い) 待てよ・・・ アレでいけるん じゃね?
  15. 顧客が本当に必要だったもの 1. 一人でZoom会議を立ち上げる(マイク・カメラON) 2. Zoomのローカル録画開始 3. スライドを画面共有して座りながら喋る(1.5時間) 4. Zoom会議終了 5.

    Adobe Premiere Proでカットのみやる
  16. 顧客が本当に必要だったもの 1. 一人でZoom会議を立ち上げる(マイク・カメラON) 2. Zoomのローカル録画開始 3. スライドを画面共有して座りながら喋る(1.5時間) 4. Zoom会議終了 5.

    Adobe Premiere Proでカットのみやる Zoomが音声も 動画合成も ぜんぶやってくれる ポインティングは パワポの機能でok ジェスチャーは このくらいで充分
  17. 長い余談のTL;DR 撮影のために色々な工夫を検討してきたが 必要なのはZoomだけだった 結局

  18. 今日の論文で考えたいこと 画像認識のために色々な工夫を検討してきたが 必要なのはTransformerだけだった…? Non-Maximum Suppression [Felzenszwalb+, PAMI’10] [Hosang+, CVPR’17]… Feature

    Pyramid (Net) [Lin+, CVPR’17] [Kirillov+, CVPR’19]… Network Architecture [He+, CVPR’16] [Hu+, CVPR’18]… [Carion+, ECCV’20] 結局
  19. 本日読む論文 Transformerを用いた物体検出の研究

  20. Transformer旋風

  21. Computer Vision以外 • 自然言語処理 – 翻訳かつ原著 [Vaswani+, NIPS’17] – 言語モデル

    BERT [Devlin+, NAACL-HLT’19], GPT-2/3 [Radford+, 2019][Brown+, NeurIPS’20] • 音声処理・信号処理 – 音声認識 [Lüscher+, INTERSPEECH’19] – 音楽生成 [Huang+, ICLR’19][Choi+, ICML’20] – 時系列予測 [Li+, NeurIPS’19][Wu+, NeurIPS’20] • Bio/Chem-informatics – 分子構造解析 [Fuchs+, NeurIPS’20][Rong+, NeurIPS’20] • エージェント・ロボティクス – マルチエージェント通信 [Inala+, NeurIPS’20] – 長期タスクを学習するエージェント [Fang+, CVPR’19] – One Shotで模倣学習 [Dasari+Guputa, CoRL’20] Computer Vision系の話題でも…
  22. Vision & Language 表現学習 VideoBERT [Sun+, ICCV’19] LXMERT [Tan+Bansal, EMNLP’19]

    ViLBERT [Lu+, NeurIPS’19] VL-BERT [Su+, ICLR’20] UNITER [Chen+, ECCV’20] OSCAR [Li+, ECCV’20] Voken [Tan+Bansal, EMNLP’20] COOT [Ging+, NeurIPS’20] キャプション生成 [Zhou+, CVPR’18] [Li+, ICCV’19] [Cornia+, CVPR’20] TextVQA [Kant+, ECCV’20] 動画検索 [Gabeur+, ECCV’20] [Tan+Bansal, EMNLP’20] [Li+, ICCV’19] [Cornia+, CVPR’20] He starts his motorbike Then walks away.
  23. 姿勢推定系 手話の認識 [Saunders+, ECCV’20] Proposed 手の姿勢 [Huang+, ECCV’20]

  24. 領域分割系 Proposed Panopitc Segmentation [Kirillov+, ECCV’20] Semantic Segmentation にも Instance

    Segmentation にも [Zhang+, ECCV’20]
  25. 動画像理解 動作認識 [Girdhar+, ECCV’20] 経路予測 [Yu+, ECCV’20]

  26. その他の例 スケッチで検索 [Ribeiro+, CVPR’20] 特定物体検索 Fine-grained識別 [Kim+, ECCV’20] 画像生成モデル 超解像+補完

    [Parmar+, ICML’18] 超解像 [Yang+, CVPR’20]
  27. この論文では 物体検出(左)と追加学習でPanoptic Segmentation(右) 物体検出は[Chi+, NeurIPS’20]も提案

  28. そもそもTransformerって?

  29. Transformer系論文でよく見る図

  30. Transformer系論文でよく見る図 綺麗な図だし 分かりやすく見える けど分かりにくい ※個人の感想です

  31. Transformerとは 任意の個数のベクトルを任意の個数のベクトルに変換する ネットワーク 一旦無視

  32. Transformerとは 任意の個数のベクトルを任意の個数のベクトルに変換する ネットワーク 一旦無視 入力: 任意の個数のベクトル 出力: 任意の個数のベクトル Positional Encoding?

  33. Positional Encoder 入力ベクトルの位置と出力ベクトルの位置を表すベクトル • 単語の分散表現なら「文中の何単語目?」 • 画像の特徴量なら「画像内のどこの座標?」 • 時系列の特徴量なら「何秒時点の情報?」 RNNやCNNは各特徴量の位置情報を知っている

    • 「RNNもCNNも各要素の相対位置を知っている」 [Shaw+, NAACL-HLT’18][Dai+, ACL’19] • 「CNNは各要素の絶対位置を学習している」[Islam+, ICLR’20] 画像の顕著性推定で、画像全体を入力 vs. 一部の画像を入力→それぞれ”画像の中央”は顕著性が大きい [Vaswani+, NIPS’17]では単語の位置を サイン・コサインでベクトル化 →波のマークはサイン・コサインの意味
  34. Autoregressive vs. Non-autoregressive 出力のベクトルを… • Autoregressive= 1個ずつ推定する – 入力のベクトル群と出力済みのベクトル群を用いて 新たなベクトルを出力

    – 「終わり」を意味する単語が出るまで繰り返す – 元のTransformer [Vaswani+, NIPS’17] はAutoregressive – 精度は良いが遅い • Non-autoregressive=全部一気に推定する – 何らかの方法で複数個の出力ベクトル用の 「タネ」となるベクトルを入力[Gu+, ICLR’18][Guo+, AAAI’19] • 並列で1回で計算できるので速いが、精度が低下 – 一気に推定するのを繰り返して単語数を調整 [Ghazvininejad+, EMNLP’19][Gu+, NeurIPS’19] 一旦無視 個の出力済み ベクトル + 個目の 出力ベクトル 一旦無視 個の「タネ」 ベクトル 個の 出力ベクトル
  35. きっとここまではok 一旦無視

  36. 次は無視していた部分の中身 という図はここの Multi-Head Attentionを説明 するための図 ここは • Residual接続 • 各ベクトルにMLPを適用

    =1x1 conv と等価
  37. 次は無視していた部分の中身 という図はここの Multi-Head Attentionを説明 するための図 という図はここの Scaled Dot-Product Attention を説明するための図

    ここは • Residual接続 • 各ベクトルにMLPを適用 =1x1 conv と等価
  38. Multi-head Attention おさらい: 扱うのは任意の個数のベクトル • 自然言語処理であれば単語の分散表現の系列+位置情報 • 画像認識であればタテ×ヨコにチャネル数分の 次元のベクトル(局所特徴量)が 並んだ数列+タテ・ヨコの位置情報

    Ougai , 鷗外さん♂ you look like the cat that ate the canary .
  39. Multi-head Attention おさらい: 扱うのは任意の個数のベクトル • 自然言語処理であれば単語の分散表現の系列+位置情報 • 画像認識であればタテ×ヨコにチャネル数分の 次元のベクトル(局所特徴量)が 並んだ数列+タテ・ヨコの位置情報

    Ougai , 鷗外さん♂ you look like the cat that ate the canary .
  40. このベクトル に注目して考える 1. 他のベクトルを「検索」するためのクエリ = を計算 =

  41. このベクトル に注目して考える 2. 「類似検索」対象としての各ベクトルのキー = を計算

  42. このベクトル に注目して考える 3. クエリとキーの内積を次元数とsoftmaxで正規化した「類似度」 = softmax ⊤/ を計算 = =

    = = = = = = = = = =
  43. このベクトル に注目して考える 4. 各ベクトルの代表値 = を計算

  44. このベクトル に注目して考える 5. 類似度で重みづけした和∑を計算→ベクトル に加算(residual接続有) ⋅ ⋅ ⋅ ⋅ ⋅

    ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 更新後のベクトル
  45. Scaled Dot-Product Attention 手順1~5をすべてのベクトルに対して実行する という図に該当

  46. Multi-head Attentionでは 行列, , をℎ個用意し、それぞれを用いながら 手順1~5をすべてのベクトルに対して実行する という図に該当

  47. Transformer まとめ 任意の個数のベクトルを 形式で変形する技術 Encoder-Decoder N回繰り返す 例えばGPT-3では • 96回繰り返す •

    各回96-headsの Attention(128次元)
  48. (Attentionの無い)CNNやRNNとの違い CNN Transformerは… 全個のベクトルから全個のベクトルへのアテンションを計算 (2)だが一番広域に情報がロス無く伝達可能 CNNは… 3つなど、全体からすれば少数の ベクトルだけの畳込み計算を走査 だが情報が伝わるのは近隣だけ RNNは…

    ベクトルを一つずつ走査しながら 内部のセルに変数(記憶)を保存 だが長い系列は不得手 RNN
  49. DETR (DEtection TRansformer)

  50. DETRの概要 • 素直にTransformerを利用 – 特徴量部分はResNet 50/101 – Decoderの入力(object queries)はpositional encodings

    – Non-autoregressiveに(クラスラベル、位置(2次元)、サイズ(2次元)) の集合を推定 • 損失部分で集合 (set) 生成としての損失関数を設計(今から説明)
  51. 集合生成のための損失関数 • 集合構造をDecodeする研究はあまりない – Set Transformer [Lee+, ICML’19] は点群などの集合をEncodeする研究 •

    PointNet [Qi+, CVPR’17] などの点群深層学習系は集合のEncoderともみなせる – マルチクラス分類は、離散値集合の推定ともみなせるが、今は連続値も含む – 固定サイズの集合を出力するなら全結合のNNでもできるが、高コスト • 物体検出での実施例 [Erhan+, CVPR’14] – 可変サイズの集合を出力するためにやりがちなのが、autoregressiveな方法 • 自然言語処理でLSTMを用いた実施例 [Vinyals+, ICLR’16] • 本研究:順番不変な損失を用いた Non-autoregressiveな集合推定 「Non-Maximum Suppression (NMS) や anchor生成といった手動設計の後処理を 省略できるよ!」
  52. 順番不変な損失:2部グラフマッチング損失 • =1 :真の(クラス、座標、サイズ)の集合 • � =1 : > 個の推定した集合

    → =+1 をクラス∅(物体無し)としてpadding やりたいこと: と� が対応している保証は全くない →対応するように� の順番を入れ替える を獲得したい(2部グラフマッチング) • 2部グラフマッチング – ハンガリアン法というアルゴリズムで解ける! • ハンガリアンロス(提案) – 「ℒmatch の第1項を対数尤度にして第2項とスケールを合わせた。実験的にも精度が良い」 同じクラスの 物体かどうか 座標・サイズのL1損失 と一般化IoUの組合せ [Rezatofighi+, CVPR’19] じゃあどっちも ℒHungarian で良いのでは
  53. 物体検出の実験結果 MS COCOを使用し、種々のAPで評価 • AP無印:IoU=0.5~0.95 (0.05刻み)でのAPの平均 • AP50/75 :IoU=0.5または0.75のときのAP •

    APS/M/L :32px四方と96px四方を閾値としたサイズ別AP 一般化IoUを損失関数と して上より9倍長く学習 有名どころの 物体検出手法 提案手法 ・無印: ResNet50 ・DC5: conv 5でdilate ・R101: ResNet101
  54. 物体検出の実験結果 MS COCOを使用し、種々のAPで評価 • AP無印:IoU=0.5~0.95 (0.05刻み)でのAPの平均 • AP50/75 :IoU=0.5または0.75のときのAP •

    APS/M/L :32px四方と96px四方を閾値としたサイズ別AP 一般化IoUを損失関数と して上より9倍長く学習 有名どころの 物体検出手法 提案手法 ・無印: ResNet50 ・DC5: conv 5でdilate ・R101: ResNet101 最高精度を出そうとすると ・Faster RCNN系では20FPS ・DETR系では10FPS サイズの比較では • 提案手法は小物体に弱い • 「今後はFPN [Lin+, CVPR’17] 等の工夫で頑張って」
  55. その他の議論 • EncoderのAttentionの可視化:牛さん毎に分かれてる • NMSは要らない子 – Decoderの層数が増えるとNMSの効果が減る – AP50 ではNMSも一定の効果アリ

    (IoUが0.5と比較的小さい時)
  56. その他の議論 • 訓練画像には居ないくらい大量の物体も識別できるよ! – キリンは訓練データには同時に13体までしかいない – 人工的なOut of distributionのデータを作って入れてみた •

    提案手法はpytorchで簡単に 実装できるよ! resnetやtransformerが既にあるので
  57. Panoptic Segmentationの実装 • Panoptic Segmentation = Semantic + Instance Segmentation

    [Kirillov+, CVPR’19] • DETRで物体検出を学習させ、maskを出力するmask headを追加 – Faster R-CNNをMask R-CNNに拡張するノリと同じ – Mask head学習にはDICE/F-1損失[Milletari+, 3DV’16]とFocal損失[Lin+, ICCV’17]を利用
  58. Panoptic Segmentationの実験結果 • Panoptic Segmentation [Kirillov+, CVPR’19] で提案されている評価指標を利用 – Segmentation

    Quality (SQ):IoUによる分割の精度 – Recognition Quality (RQ):クラス分類の精度 – Panoptic Quality:SQとRQの積 • さらに数えられるthings (th)と不定形なstuff (st)という クラス群それぞれで評価 – Things:ヒトとか動物とか道具とか – Stuff:芝生、空、道路など
  59. Panoptic Segmentationの実験結果 • Panoptic Segmentation [Kirillov+, CVPR’19] で提案されている評価指標を利用 – Segmentation

    Quality (SQ):IoUによる分割の精度 – Recognition Quality (RQ):クラス分類の精度 – Panoptic Quality:SQとRQの積 • さらに数えられるthings (th)と不定形なstuff (st)という クラス群それぞれで評価 – Things:ヒトとか動物とか道具とか – Stuff:芝生、空、道路など 提案手法は特にstuffで強み 「Encoderがself-attention で広域にreasoningできるか らでは」
  60. 必要なのはTransformerだけなのか • DETRではCNNも必要だったが… • Vision Transformer (ViT) [Dosovitskiy+, たぶんICLR’21] –

    画像のパッチから全てTransformer – 画像分類でSoTA超えた ただし: • Transformerは大量のデータが必要 – ViT は3億枚の画像で学習 • 精度の向上幅はCNN初登場の前後よりは緩やか • Attentionの計算量がベクトル数の2乗オーダー – LSHやスパースなAttention、CNNとの組合せなどで改善する研究も多くある [Kitaev+, ICLR’20][Gulati, INTERSPEECH’20][Yun+, NeurIPS’20][Zabeer+, NeurIPS’20] すぐ悲観することは無いけど注視は必要