この頃、バカンスシーズンなのか、ネタ切れなのか、画像向けTransformer論文が一息ついているので、ここでちょっと振り返ってみる。
2017年: そもそもの始まり
Attention Is All You Need
自然言語向けに2017年に出たこのGoogle論文で、Attention構造が自然言語の方であっという間に広がる。
当然ながら、この流れで、計算量がかかるAttention部分がどんどんと違う手法で置き換えられた論文が増えてくる。
2019年: 画像認識にうっすらと浸透
画像認識でもConvolutionの代わりにAttentionが使われ始めたので、論文まとめ
この記事で書いたように、ConvolutionをAttentionに変えようという論文が2019年からチラホラと出てくる。
この頃は、まだおっかなびっくりAttention構造に取り換えてもいけるぞ、とか、精度変わらず計算量少なくぞ、とかそんな感じで、まだまだ流行るかどうかという感じ。
2020年夏: ViTとDETRで世界が変わる
画像認識屋さんのための「はじめてのTransformer」
この記事で書いたように、Transformerがそのまま画像認識に導入されて、人気に火がついた。ViTは9月Googleから、DETRはFAIRから5月。
特にViTの人気がすさまじく、これを調整したSOTA大会開幕。
2021年5月: ViTチームがMLP-mixerを発表
MLP-Mixer: An all-MLP Architecture for Vision
ViTで世界を変えたGoogleのチームがそもそもAttentionなんかいらなくて、MLPで行けるんじゃないか説を唱えてちゃぶ台返し。この段階では、まだSOTAというわけではなくとも、計算のシンプルな感じは尋常じゃなく、後追い論文が大量発生中。
(2021/10/12 追記: で、実際後追いされまくっているので、同時期に出たMLP系の論文構造をまとめる記事を追加した。)
2021年6月以降
毎週のように、全然違うネットワークが出てくるのを細かく追いかけていたので、以下にまとめる。(注意: 2020年夏から2021年夏の間も恐ろしい数の論文が出ているが以下に含んでいない。)
現状、何を指してAttentionかという哲学論争になりそうなほど、いろんな種類のAttentionが提案されている。計算量が大きいため、別のに置き換えるという研究がNLPにおいても多くなされているが、画像の方では、変えたところで、なんら精度が悪くなるわけでもないようなので、じゃあ、そもそもこいつはなんなんだと。そこに来てMLP-mixerが出てきたので、そろそろオリジナルのAttention構造は画像認識からはいなくなるんじゃなかろうか。
ViT系論文
とりまConvと混ぜとくか系
CoAtNet: Marrying Convolution and Attention for All Data Sizes
Google論文。ConvとAttentionのHybridネットワークCoAtNet(コートネットと呼ぶ)を作成。ImageNetで、他のデータなし86.9% top-1、もっとデータを足すと89.8%でSOTA。
CMT: Convolutional Neural Networks Meet Vision Transformers
CNNとTransformerのHybrid。かなり小さくてSOTA。
Early Convolutions Help Transformers See Better
FAIR論文。ViTで、最初からPatchにするんじゃなくて、そこを普通のConvに変える(Transformer1個分と同じサイズ分。なので、Transformerのブロックは一つ減らす)と、精度良くなったし、学習速くなったし、安定するし良いこといっぱい。
Self-supervisedに導入系
DETReg: Unsupervised Pretraining with Region Priors for Object Detection
self-supervised pretraining + DETR
BEIT: BERT Pre-Training of Image Transformers
Microsoft論文。Self-supervisedの手法で、ViTを良くする。
Efficient Self-supervised Vision Transformers for Representation Learning
Transformerを使ったself-supervised learningのEsViTを開発。DINOとかMoCo-v3に似てる。
Self-Supervised Learning with Swin Transformers
マイクロソフト論文。Self-supervised learningのMoCo V2とBYOLにTransformerのバックボーンを入れたMoBYをTuning。MoCo V3とDINO(バックボーンがDeiT)よりちょっと良い。
Multi-Stream Transformers
TransformerベースのEncorder-Decorderで、Encorderに分岐を入れると良い。
スケールアップしたらどうなるか系
Scaling Vision Transformers
Google論文。モデルの規模、学習データ数、学習時間を大きくして、どうなるか調査。パラメータ数20億でImageNetのTop1:90.45%達成。
Understanding Robustness of Transformers for Image Classification
Google論文。入力を変えてどれだけRobustかをメインにResNetとViTを比較。大量のデータで学習するとモデルサイズが大きくなればなるほど、ViTはResNetより精度が上がる。中規模データだと変わらない。
How to train your ViT? Data, Augmentation, and Regularization in Vision Transformers
Google論文。ViTのTrainingにはCNNよりもきついRegularization、多くのAugmentationが必要。いろんなセッティングで学習させた50000個のViTモデルを公開。
いろいろ細かくチューニングをかけて精度上げたぜ系
Shuffle Transformer: Rethinking Spatial Shuffle for Vision Transformer
Tencentの論文。Tokenの中身を途中でShuffleして精度を上げるTransformer。そのうちCodeを公開。
VOLO: Vision Outlooker for Visual Recognition
ViTで、パッチを取らないでLocal WindowをつかったOutlook Attentionというのを提案して、追加データなしでSOTA達成。
PVTv2: Improved Baselines with Pyramid Vision Transformer
Pyramid vision transformerのVersion 2.いろいろConvとか混ぜて、更に良くなった。
Augmented Shortcuts for Vision Transformers
ViTにaugmented shortcutsというのを入れてfeature collapseを止めてSOTA。
RAMS-Trans: Recurrent Attention Multi-scale Transformer for Fine-grained Image Recognition
ViTでパッチサイズをDynamicに選ぶことで、だんだんと細かいところを見ていく。
Refiner: Refining Self-attention for Vision Transformers
head変えて、Conv入れてSOTA。
Go Wider Instead of Deeper
ViTのFFNレイヤーを変更して、学習可能なパラメータ数を増やすことで、WideNetの学習を良くした。
ViTはパッチで見るので、細かいところまで見るのが苦手。それをなんとかしたぜ系
細かくみるぜ系
RegionViT: Regional-to-Local Attention for Vision Transformers
細かく見るTokenと大まかに見るTokenを組み合わせる。いろんなデータセットで試したら、ViT系のSOTAと同じか更に良い結果になった。
Not All Images are Worth 16x16 Words: Dynamic Vision Transformers with Adaptive Sequence Length
Huaweiと精華大学の論文。ViTは16x16でパッチを作るけど、簡単に出来るやつはもっと大きくて良いし、難しいのはもっと細かく切った方がいいから、Dynamic Vision Transformers (DVT)っていう大きいのから順にわかるまでやって行くのを考えた。ざっくりやるときのパラメータをReuseするから、小さくて精度が良くなるっぽい。
Transformer in Convolutional Neural Networks
TokenをGridに分けて、その中でAttentionを計算し、じわじわとくっつけて行くことで、ネットワークを小さくして、精度を良くする。
Focal Self-attention for Local-Global Interactions in Vision Transformers
ViTで、近くは細かく見て、遠くはざっくり見ることにしてSOTA。
CSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped Windows
ViTで、縦方向と横方向のウィンドウを並列で見ることでSOTA。
Local-to-Global Self-Attention in Vision Transformers
ViTの同じLayer内で、近くを細かく見て、遠くをざっくり見る。
通常のCNNみたいにPyramid化して順番に見ていくぜ系
ResT: An Efficient Transformer for Visual Recognition
ViTのAttentionの部分をちょっと変えて、BackboneをResNetチックにDownsampleするようにして全体の計算量減らした。
P2T: Pyramid Pooling Transformer for Scene Understanding
PoolingとDownsamplingを含めたViTで、Classification以外にも強い。このバックボーンでいろんなタスクでSOTA。
What Makes for Hierarchical Vision Transformer?
ViTからのSwin transformerのMHSAブロックを交換。
ViTの圧縮系
見る範囲減らす系
DynamicViT: Efficient Vision Transformers with Dynamic Token Sparsification
精華大学とUCLAの論文。重要じゃないTokenを落としながらInferenceを速くするネットワーク。
Chasing Sparsity in Vision Transformers: An End-to-End Exploration
ViTのSparsityを使った圧縮。
CAT: Cross Attention in Vision Transformer
ViTでLocalityとPyramid構造を使った圧縮。
Scaling Vision with Sparse Mixture of Experts
Google論文。ViTでSparsityを使って、必要のないTokenの計算をしないで圧縮。
Vision Transformer Pruning
ViTで重要ではないFeatureをPruneする。
計算小さくする系
A Survey of Transformers
TransformerのSurvey。Transformer圧縮向けx-former系の分類。
XCiT: Cross-Covariance Image Transformers
QとKのinteractionをtransposeすることで、quadraticのattention構造をlinearにした論文
VISION XFORMERS: EFFICIENT ATTENTION FOR IMAGE CLASSIFICATION
NLPでTransformerを速くしたいろんな手法をViTに導入して速くした。
Contextual Transformer Networks for Visual Recognition
Attentionの構造をシンプルにした。
NAS使うよ系
AutoFormer: Searching Transformers for Visual Recognition
ViT向け、One-ShotのNASで圧縮。
GLiT: Neural Architecture Search for Global and Local Image Transformer
ViT用のNAS。
Distillation
Efficient Vision Transformers via Fine-Grained Manifold Distillation
ViTのDistillationをイメージレベルじゃなくて、パッチレベルでやって小さくする。
Theoretical系
When Vision Transformers Outperform ResNets without Pretraining or Strong Data Augmentations
GoogleとUCLAの論文。ViTとMLP-mixerはsharp local minimaに落ち込むので、SAM(sharpness-aware optimizer)を使ってLandscapeをスムーズにすると更にうまく行く。
Vision Transformers with Patch Diversification
ViTの学習が不安定なのをモデルを変えず、Loss関数を変えて解消。
Object detectionとかSemantic Segmentationとか別の問題にも使えるよ系
You Only Look at One Sequence: Rethinking Transformer in Vision through Object Detection
YOLO+ViT。DETRに似てるけどちょっと違う。小さいモデルだとDETRより良い。
Fully Transformer Networks for Semantic Image Segmentation
Semantic segmentationをTransformerのみ(Conv層を混ぜない)で行う。Pyramid構造ありのEncoder-Decoder構造。
Per-Pixel Classification is Not All You Need for Semantic Segmentation
FAIR論文。SSもinstance segmentationのmask classificationと考えることができる。新しくDETRっぽいMaskFormerと言うのを考えた。SSとpanoptic segmentationでSOTA。
CBNetV2: A Composite Backbone Network Architecture for Object Detection
Object detection向けのBackboneの形。細かいのとざっくりしたのを両方見られる。
MLP-mixer系論文
Pay Attention to MLPs
MLP-mixerと同時期に出たこれまたGoogle論文。NLPでもVisionでもTransformer並みに良い。
ResMLP: Feedforward networks for image classification with data-efficient training
これまたMLP-mixerと同時期に出たFAIR論文。
S2-MLP: Spatial-Shift MLP Architecture for Vision
Baidu論文。MLP-mixerを良くしたよ。channel mixingのみですごくシンプル。
Vision Permutator: A Permutable MLP-Like Architecture for Visual Recognition
ViTのAttentionパーツをPermute-MLPに変換。MLP-mixerと違って、パッチをTokenとして行列化させずに絵の場所情報は取っておく。追加データなしで学習出来て、他のよりかなり良い。
AS-MLP: AN AXIAL SHIFTED MLP ARCHITECTURE FOR VISION
MLP系でSOTA。Axialごとにシフトしてそれを混ぜる。S2-MLPに似てる?
CycleMLP: A MLP-like Architecture for Dense Prediction
今までのMLPと違って、local windowを導入することで学習をLinearにして、SSとかObject detectionとかにも使いやすくした。
Vit vs MLP-mixer vs NEW
Exploring Corruption Robustness: Inductive Biases in Vision Transformers and MLP-Mixers
ViTはMLP-mixer、ResNet-50よりもCorruptionにRobust。
Global Filter Networks for Image Classification
精華大学論文。ViTのAttentionをFFTでfrequency domainでやる。ViTやMLP-mixerに比べて効率的。
Rethinking Token-Mixing MLP for MLP-based Vision Backbone
百度論文。spatial invariantなToken mixingを考えた。FFTを使う。