LoginSignup
125
110

More than 1 year has passed since last update.

画像認識向けTransformerを振り返る

Last updated at Posted at 2021-08-02

この頃、バカンスシーズンなのか、ネタ切れなのか、画像向け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を使う。

125
110
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
125
110