Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 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.

Slide 3

Slide 3 text

自己紹介 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.

Slide 4

Slide 4 text

コロナなのでオンライン授業です

Slide 5

Slide 5 text

過去の反省 Ridge-iのインターン向けに同じ 内容の講義をやって録画した結果 ビデオカメラで録画したが: • スライド部分が小さい • ホームビデオ画質 • 照明の反射が邪魔 ビデオにマイク付けて録音したが: • 他業務中の人たちの声が入る • ゴミ収集の音が入る(やばい) 字幕の編集は面倒くさい

Slide 6

Slide 6 text

妄想 でっかいスライド ジェスチャーや ポインティングを 組み合わせて説明 AIっぽい背景

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

顧客が本当に必要だったもの 1. 一人でZoom会議を立ち上げる(マイク・カメラON) 2. Zoomのローカル録画開始 3. スライドを画面共有して座りながら喋る(1.5時間) 4. Zoom会議終了 5. Adobe Premiere Proでカットのみやる Zoomが音声も 動画合成も ぜんぶやってくれる ポインティングは パワポの機能でok ジェスチャーは このくらいで充分

Slide 17

Slide 17 text

長い余談のTL;DR 撮影のために色々な工夫を検討してきたが 必要なのはZoomだけだった 結局

Slide 18

Slide 18 text

今日の論文で考えたいこと 画像認識のために色々な工夫を検討してきたが 必要なのは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] 結局

Slide 19

Slide 19 text

本日読む論文 Transformerを用いた物体検出の研究

Slide 20

Slide 20 text

Transformer旋風

Slide 21

Slide 21 text

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系の話題でも…

Slide 22

Slide 22 text

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.

Slide 23

Slide 23 text

姿勢推定系 手話の認識 [Saunders+, ECCV’20] Proposed 手の姿勢 [Huang+, ECCV’20]

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

動画像理解 動作認識 [Girdhar+, ECCV’20] 経路予測 [Yu+, ECCV’20]

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

この論文では 物体検出(左)と追加学習でPanoptic Segmentation(右) 物体検出は[Chi+, NeurIPS’20]も提案

Slide 28

Slide 28 text

そもそもTransformerって?

Slide 29

Slide 29 text

Transformer系論文でよく見る図

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Positional Encoder 入力ベクトルの位置と出力ベクトルの位置を表すベクトル • 単語の分散表現なら「文中の何単語目?」 • 画像の特徴量なら「画像内のどこの座標?」 • 時系列の特徴量なら「何秒時点の情報?」 RNNやCNNは各特徴量の位置情報を知っている • 「RNNもCNNも各要素の相対位置を知っている」 [Shaw+, NAACL-HLT’18][Dai+, ACL’19] • 「CNNは各要素の絶対位置を学習している」[Islam+, ICLR’20] 画像の顕著性推定で、画像全体を入力 vs. 一部の画像を入力→それぞれ”画像の中央”は顕著性が大きい [Vaswani+, NIPS’17]では単語の位置を サイン・コサインでベクトル化 →波のマークはサイン・コサインの意味

Slide 34

Slide 34 text

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] 一旦無視 個の出力済み ベクトル + 個目の 出力ベクトル 一旦無視 個の「タネ」 ベクトル 個の 出力ベクトル

Slide 35

Slide 35 text

きっとここまではok 一旦無視

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

次は無視していた部分の中身 という図はここの Multi-Head Attentionを説明 するための図 という図はここの Scaled Dot-Product Attention を説明するための図 ここは • Residual接続 • 各ベクトルにMLPを適用 =1x1 conv と等価

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

このベクトル に注目して考える 1. 他のベクトルを「検索」するためのクエリ = を計算 =

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

Transformer まとめ 任意の個数のベクトルを 形式で変形する技術 Encoder-Decoder N回繰り返す 例えばGPT-3では • 96回繰り返す • 各回96-headsの Attention(128次元)

Slide 48

Slide 48 text

(Attentionの無い)CNNやRNNとの違い CNN Transformerは… 全個のベクトルから全個のベクトルへのアテンションを計算 (2)だが一番広域に情報がロス無く伝達可能 CNNは… 3つなど、全体からすれば少数の ベクトルだけの畳込み計算を走査 だが情報が伝わるのは近隣だけ RNNは… ベクトルを一つずつ走査しながら 内部のセルに変数(記憶)を保存 だが長い系列は不得手 RNN

Slide 49

Slide 49 text

DETR (DEtection TRansformer)

Slide 50

Slide 50 text

DETRの概要 • 素直にTransformerを利用 – 特徴量部分はResNet 50/101 – Decoderの入力(object queries)はpositional encodings – Non-autoregressiveに(クラスラベル、位置(2次元)、サイズ(2次元)) の集合を推定 • 損失部分で集合 (set) 生成としての損失関数を設計(今から説明)

Slide 51

Slide 51 text

集合生成のための損失関数 • 集合構造を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生成といった手動設計の後処理を 省略できるよ!」

Slide 52

Slide 52 text

順番不変な損失:2部グラフマッチング損失 • =1 :真の(クラス、座標、サイズ)の集合 • � =1 : > 個の推定した集合 → =+1 をクラス∅(物体無し)としてpadding やりたいこと: と� が対応している保証は全くない →対応するように� の順番を入れ替える を獲得したい(2部グラフマッチング) • 2部グラフマッチング – ハンガリアン法というアルゴリズムで解ける! • ハンガリアンロス(提案) – 「ℒmatch の第1項を対数尤度にして第2項とスケールを合わせた。実験的にも精度が良い」 同じクラスの 物体かどうか 座標・サイズのL1損失 と一般化IoUの組合せ [Rezatofighi+, CVPR’19] じゃあどっちも ℒHungarian で良いのでは

Slide 53

Slide 53 text

物体検出の実験結果 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

Slide 54

Slide 54 text

物体検出の実験結果 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] 等の工夫で頑張って」

Slide 55

Slide 55 text

その他の議論 • EncoderのAttentionの可視化:牛さん毎に分かれてる • NMSは要らない子 – Decoderの層数が増えるとNMSの効果が減る – AP50 ではNMSも一定の効果アリ (IoUが0.5と比較的小さい時)

Slide 56

Slide 56 text

その他の議論 • 訓練画像には居ないくらい大量の物体も識別できるよ! – キリンは訓練データには同時に13体までしかいない – 人工的なOut of distributionのデータを作って入れてみた • 提案手法はpytorchで簡単に 実装できるよ! resnetやtransformerが既にあるので

Slide 57

Slide 57 text

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]を利用

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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できるか らでは」

Slide 60

Slide 60 text

必要なのは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] すぐ悲観することは無いけど注視は必要