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

Vision Transformer講座 / Vision Transformer Presentation

shun74
November 09, 2022

Vision Transformer講座 / Vision Transformer Presentation

Vision Transformer講座です。
Vision Transformerについて解説しました。

shun74

November 09, 2022
Tweet

More Decks by shun74

Other Decks in Programming

Transcript

  1. VisionTransformer 講座
    B4 shun sato

    View Slide

  2. 目次
    ● Vision Transformerとは
    ● Vision Transformerのアーキテクチャ
    ● Multi-Head Self Attentionについて
    ● Vision Transformerの分析
    ● Vision Transformerの派生研究

    View Slide

  3. Vision Transformerとは

    View Slide

  4. Vision Transformerとは
    An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale.
    Alexey Dosovitskiy他. ICLR 2021. (https://openreview.net/forum?id=YicbFdNTTy)
    ● Googleの研究者グループが発表した最新の画像分類モデル
    ● 言語モデルのTransformer(NIPS 2017)をほぼそのまま画像タスクに転用した
    ● CNNなどの既存の画像分類モデルを上回る精度を達成
    ● 従来の画像系モデルの常識を大きく変えた

    View Slide

  5. Vision Transformerとは
    ● 画像を時系列データのように処理
    ● 畳み込みなしで画像から情報を抽出
    ● Multi-Head Self Attentionという特徴的なモジュール
    ● Vision Transformerの概要(論文より)
    ● 画像のベクトル化と全結合層で情報を
    取り出す

    View Slide

  6. Vision Transformerのアーキテクチャ

    View Slide

  7. Visnion Transformerのアーキテクチャ
    ● Vision Transformerは以下の順番で画像を処理
    1. 画像のベクトル(トークン)化 ⇢ Embedding
    2. ベクトルの情報抽出&集約 ⇢ Encoder
    3. 特徴量からクラス分類 ⇢ Head

    View Slide

  8. Vision Transformerのアーキテクチャ
    Embedding
    ● 画像をパッチに分割してベクトル化
    ● 画像パッチの位置を表すPosition embeddingも行う
    ● 画像をパッチ分割(1パッチ16*16)
    ● パッチを平坦化して線形変換
    ● 各パッチにPosition Embeddingと
    Clsトークンを追加

    View Slide

  9. Vision Transformerのアーキテクチャ
    Encoder
    ● Embeddingされたベクトルを全結合層で処理
    ● 全結合層の処理と並んでAttentionによる情報選択を行う
    ● LayerNormによるバッチ正規化
    ● ViT Blockの概要図
    ● LayerNorm⇢Attention⇢LayerNorm⇢MLP
    ● Skip-Connectionも使われている

    View Slide

  10. Vision Transformerのアーキテクチャ
    Head
    ● Encoderの出力(clsトークン)を全結合層で処理してクラス信頼度にマッピング
    ● Headを取り換えると様々な問題に対応可能
    ● Encoderの出力をHeadが受け取る
    ● Headの出力がViT全体の出力となる
    ● クラス分類では各クラスの信頼度を出
    力⇢Softmaxで確率化

    View Slide

  11. Multi-Head Self Attentionについて

    View Slide

  12. Multi-Head Self Attentionについて
    ● 各ベクトルの重要度を計算して集約の手助けをする
    ● ベクトルの内積を計算してAttentionマスクを生成
    ● Q, K, Vにベクトルを変換してから計算 (Scaled dot-product)
    ● Scaled dot-productの概要図
    ● Vに対してQ, Kの内積から計算された Attentionマスクを
    適用

    View Slide

  13. Multi-Head Self Attentionについて
    Scaled dot-product
    ● Q, K, Vから計算を行う
    1. Q, K, Vはそれぞれ同じ入力に異なる全結合層を適用して生成
    2. QとKのそれぞれのベクトル積(内積)を計算
    3. Q,Kの内積をベクトル長で割ったものをSoftmaxで正規化(Attentionマスク)
    4. VにAttentionマスクを適用して全結合層を適用

    View Slide

  14. Multi-Head Self Attentionについて
    Multi-Head Self Attention
    ● Scaled dot-productの計算をヘッドごとに分割してパターンを増やす
    ● QとKのベクトル積がより軽量に
    ● 多様なマスクが生成可能
    ⇢ 表現力の増加

    View Slide

  15. Multi-Head Self Attentionについて
    Q. ベクトル積でなぜ注目度が測れるのか?
    A. ベクトルの類似度を計算しているから
    ⇢ 類似度の高いベクトルを合成してより効率的な特徴量を生成
    学習が進むと物体のある
    箇所に重み付けが集中す
    るようになる!

    View Slide

  16. Vision Transformerの分析

    View Slide

  17. Position Embeddingとは
    ● ViTはベクトル化によって画像の位置関係を最初に捨てている
    ⇢ 位置に関する情報をベクトルに埋め込むことで位置関係を把握
    ● 基本的にはトレーニング可能なパラメータをベクトルに足すことで解決
    ● トレーニング可能パラメータがベクトルの元の位置を学習している
    ● 他にもsin, cosで固定の値を埋め込む形式やパッチ間の相対位置を埋
    め込む形式もある

    View Slide

  18. MLPレイヤーの特性
    ● MLPレイヤーは2層の全結合層を持つ
    ● 全結合層間にgeluなどのアクティベーションをはさむ
    ● 万能近似定理(Universal Approximation Theorem)より2層で表現能力は十分
    ● MLPレイヤーのforward関数(いい感じなフロー図がなかったため )
    ● 言語モデルではfc1が特定の単語に反応し fc2がそれを元に次の単語の
    確率を制御している
    ● fcをconvに置き換えて実験をしたという研究もある※
    ※Incorporating Convolution Designs into Visual Transformers. Yuan他. ICCV2021. https://arxiv.org/abs/2103.11816

    View Slide

  19. Multi-Head Self Attentionの特性
    ● 実はデータのスムージングを行っているだけ?
    ● MHSAをPoolingに置き換えても学習できる?
    ● PoolFormerで提案されたアーキテクチャ
    ● MHSAの代わりにAveragePoolingを行ってベクトルを混ぜている
    ● 単純なPoolingだが元モデルの精度を超えた
    ● MetaFormerという構造がViTの鍵となっていることを主張
    ● 後半の層ではMHSAを使うことでより精度が向上
    ⇢ 前半の層はスムージングだけだが後半の層にはそれ以外の役割も?
    MetaFormer Is Actually What You Need for Vision. Yu他. CVPR 2022. https://arxiv.org/abs/2111.11418

    View Slide

  20. LayerNorm vs BatchNorm
    ● ViTではTransformerを継いでLayerNormが使われている
    ● LayerNormは平均分散を入力ごとに計算するためベクトル長の変化に強い
    ● BatchNormはあらかじめ平均分散を用意してから計算するため高速
    ⇢ 入力のサイズが一定の画像モデルならBatchNormでもいいのでは?
    LayerNormをBatchNormに置き換えて実験を行った研究※
    ● そのまま置き換えると学習中に勾配が爆発して学習不可(MLPのスケール問題)
    ⇢ しかしMLPのfc間にBatchNormを入れればLayerNormの時と同様に学習ができた
    ※Leveraging Batch Normalization for Vision Transformers. Yao他. ICCVW 2021.
    https://patrick-llgc.github.io/Learning-Deep-Learning/paper_notes/bn_ffn_bn.html

    View Slide

  21. ViTとCNNの特徴の捉え方の違い
    ● CNNは物体のテクスチャ、ViTは物体の形をそれぞれ見ている
    ● テクスチャを張り替えた画像に対してViTの方がロバストに検出
    ● 猫の画像を象のテクスチャで置き換えたもの
    ● CNNでは象と認識されてしまう
    ⇢ テクスチャを見ている
    ● ViTでは猫と認識される!
    ⇢ 形を見ている
    Are Convolutional Neural Networks or Transformers more like human vision? Tuli他. CogSci 2021.
    https://arxiv.org/abs/2105.07197

    View Slide

  22. ViTのグローバル情報処理能力
    ● ViTはCNNに比べて手前の層からグローバル情報を保持している
    ● 層の表現の類似度をCKAという方式で計算して可視化したもの
    ● ViTの方がCNNよりも層全体の表現に類似度がある
    ● ネットワークの層の途中で表現を抽出したところViTの方がCNNより精度よく分類
    ができた⇢CNNには受容野という制約がある
    Do Vision Transformers See Like Convolutional Neural Networks? Raghu他. https://arxiv.org/abs/2108.08810

    View Slide

  23. ViTはCNNよりもロバストなのか?
    ● 敵対的攻撃(画像にノイズを混ぜる)に対してはViTもCNNも大差がない
    ● 分布外データに対してはViTの方がCNNよりもロバスト
    ⇢ ViTの方がぼんやりと物体を見ている
    ● CNNでは高い信頼度で認識を誤ることが多々ある
    ● ViTは頻度の低いデータにもロバストに検出ができる
    Natural Adversarial Examples. Hendrycks他. CVPR 2021. https://arxiv.org/abs/1907.07174
    Intriguing Properties of Vision Transformers. Naseer他. NeurIPS 2021. https://arxiv.org/abs/2105.10497

    View Slide

  24. Vision Transformerの派生研究

    View Slide

  25. Swin Transformer (Liu他 ICCV 2021 Best paper)
    ● Sifted Windowを活用したQVベクトル積の効率化&軽量化 ⇢ SoTAも達成
    ● ViTの画像系タスクBackboneとしてのスタンダードに
    Attentionを行う領域を制限
    ⇢ CNNのような局所的情報集約
    BlockごとにWindowをずらしてWindow間の
    情報が共有されるように
    ⇢ グローバルな情報集約



    https://arxiv.org/abs/2103.14030

    View Slide

  26. Deformable Attention Transformer (Xia他 CVPR 2022)
    ● Attentionを行う場所をDeformable(変形可能)に ⇢ 物体の形に柔軟に適応
    ● AttentionのAttentionを行っている?!
    Attentionを行うPointにOffsetを適用して座標をずらす
    ⇢ Bilinear補間で近傍からパッチを計算 Attentionの参照点が物体の中に集まっている!
    https://arxiv.org/abs/2201.00520

    View Slide

  27. Depth Former (Li他 Arxiv 2022)
    ● 単眼深度推定タスクでViTとCNNをうまく組み合わせた
    ⇢ ViTだけでは解決が難しかった問題を解決!
    ● ViTとCNNの強みを発揮
    Depth Formerのアーキテクチャ
    HAHI ModuleがViTとCNNを結合する重要な部分
    (Deformable Attentionを使用)
    https://arxiv.org/abs/2203.14211

    View Slide

  28. Depth Former (Li他 Arxiv 2022)
    ● BTS&AdabinsはViTのみを使ったモデル
    ● 深度推定でカーペットの模様が出てしまっているのはおかしい
    ● DepthFormer(Ours)ではCNNがカーペットのテクスチャ情報を処理
    ● 画像分類では問題にならなかった細かい部分を見る能力
    ⇢ ViTが一概に画像タスク最強とは言えない? CNNが得意な部分もある!

    View Slide

  29. CLIP (Radford他 OpenAI 2021)
    ● 画像分類の高精度なZero-shot化に成功
    ● 言語ベクトル空間に画像をマッピングすることで未知の画像に対応
    画像に対する言語ベクトルは文章から生成
    同じ構文の名詞の部分を変更してベクトルの類似度から答えを算出
    https://arxiv.org/abs/2103.00020

    View Slide

  30. MLP Mixer (Tolstikhin他 Arxiv 2021)
    ● ViTと似ているがAttentionを明確に省いている
    https://arxiv.org/abs/2105.01601
    ● MLPをPatch方向に適用することで
    Attentionを代用
    ● Channel方向のMLPはViTと同じ
    ● 計算コストを大幅に削減しながら
    ViTと同程度の精度を出した

    View Slide

  31. まとめ

    View Slide

  32. まとめ
    ● ViTはCNNの常識を覆すアーキテクチャと性能を兼ね備えている
    ● ViTのアーキテクチャ研究はまだまだこれから
    ● ViTの研究からCNNの理解がより深まることも
    ● 今後画像系タスクのbackboneとしてViTの採用が増えていくかも
    ● ViTの今後に期待!

    View Slide

  33. 参考文献
    「Vision Transformer入門」 技術評論社
    山本晋太郎、徳永匡臣、箕浦大晃、邱玥、品川政太朗 著
    片岡裕雄 監修
    ● 様々なジャンルでVision Transformerの解説をしていて非常に面白かったです
    https://gihyo.jp/book/2022/978-4-297-13058-9

    View Slide