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

End-to-End Object Detection with Transformers

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もありますよ。

Yoshitaka Ushiku

December 11, 2020
Tweet

More Decks by Yoshitaka Ushiku

Other Decks in Research

Transcript

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

    ビデオにマイク付けて録音したが: • 他業務中の人たちの声が入る • ゴミ収集の音が入る(やばい) 字幕の編集は面倒くさい
  4. 収録手順 1. グリーンバックと照明とカメラのスタンドは一定期間置きっぱなしであるこ とが前提 2. 電池を充電(カメラ、ワイヤレスピンマイク、照明3つ) 3. カンペにするモニタを移動 4. ずっと立つのでコルセットを装着・ピンマイクを装着

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

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

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

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

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

    Adobe Premiere Proでカットのみやる Zoomが音声も 動画合成も ぜんぶやってくれる ポインティングは パワポの機能でok ジェスチャーは このくらいで充分
  10. 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系の話題でも…
  11. 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.
  12. Positional Encoder 入力ベクトルの位置と出力ベクトルの位置を表すベクトル • 単語の分散表現なら「文中の何単語目?」 • 画像の特徴量なら「画像内のどこの座標?」 • 時系列の特徴量なら「何秒時点の情報?」 RNNやCNNは各特徴量の位置情報を知っている

    • 「RNNもCNNも各要素の相対位置を知っている」 [Shaw+, NAACL-HLT’18][Dai+, ACL’19] • 「CNNは各要素の絶対位置を学習している」[Islam+, ICLR’20] 画像の顕著性推定で、画像全体を入力 vs. 一部の画像を入力→それぞれ”画像の中央”は顕著性が大きい [Vaswani+, NIPS’17]では単語の位置を サイン・コサインでベクトル化 →波のマークはサイン・コサインの意味
  13. 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] 一旦無視 個の出力済み ベクトル + 個目の 出力ベクトル 一旦無視 個の「タネ」 ベクトル 個の 出力ベクトル
  14. DETRの概要 • 素直にTransformerを利用 – 特徴量部分はResNet 50/101 – Decoderの入力(object queries)はpositional encodings

    – Non-autoregressiveに(クラスラベル、位置(2次元)、サイズ(2次元)) の集合を推定 • 損失部分で集合 (set) 生成としての損失関数を設計(今から説明)
  15. 集合生成のための損失関数 • 集合構造を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生成といった手動設計の後処理を 省略できるよ!」
  16. 順番不変な損失:2部グラフマッチング損失 • =1 :真の(クラス、座標、サイズ)の集合 • � =1 : > 個の推定した集合

    → =+1 をクラス∅(物体無し)としてpadding やりたいこと: と� が対応している保証は全くない →対応するように� の順番を入れ替える を獲得したい(2部グラフマッチング) • 2部グラフマッチング – ハンガリアン法というアルゴリズムで解ける! • ハンガリアンロス(提案) – 「ℒmatch の第1項を対数尤度にして第2項とスケールを合わせた。実験的にも精度が良い」 同じクラスの 物体かどうか 座標・サイズのL1損失 と一般化IoUの組合せ [Rezatofighi+, CVPR’19] じゃあどっちも ℒHungarian で良いのでは
  17. 物体検出の実験結果 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
  18. 物体検出の実験結果 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] 等の工夫で頑張って」
  19. 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]を利用
  20. Panoptic Segmentationの実験結果 • Panoptic Segmentation [Kirillov+, CVPR’19] で提案されている評価指標を利用 – Segmentation

    Quality (SQ):IoUによる分割の精度 – Recognition Quality (RQ):クラス分類の精度 – Panoptic Quality:SQとRQの積 • さらに数えられるthings (th)と不定形なstuff (st)という クラス群それぞれで評価 – Things:ヒトとか動物とか道具とか – Stuff:芝生、空、道路など
  21. 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できるか らでは」
  22. 必要なのは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] すぐ悲観することは無いけど注視は必要