发布时间:2023-09-16 19:00
自从2017年Attention Is All You Need论文,Transformer热度持续升高,因为其解决的是\"seqence to sequence\"属性的问题,所以先是在自然语言处理中席卷各类问题,其代表性工作为BERT。BERT截至今天在Github已有27.2k⭐,火的我没词了…
就好比约5年前,循环神经网络(RNN)先火遍NLP,随后又入侵CV。现在,Transformer也是在席卷了NLP的各类问题后,正在席卷CV的各类问题。前几天连GANsformer都出来了(这名字起的…读起来就很带劲哈)。
本文旨在捋一捋截至目前(2021年3月7日)计算机视觉中的Transformer有代表性的几条研究成果路线,全部是开源了的论文。
20201224-A Survey on Visual Transformer
这篇早一点,主要是整理了一些计算机视觉中Transformer的原理上的问题。
20210104-Transformers in Vision: A Survey
这篇应该是最新的一篇综述吧。它完善而细致地收集了很多研究成果(含200条引用);通读可以基本把握这方向的状态;也可以作为一本论文字典,读一篇具体的论文时可以去查表,或者查表去找某种具体的论文(该综述含有一张很有价值的表格,归纳了主流论文的问题类型、创新点、输入数据类型、监督数据类型、loss项、局限之处的表格)。就像这样:
Task | Method | Design Highlights (focus on differences with the standard form) | Input Data Type | Label Type | Loss |
---|---|---|---|---|---|
Image Classification | ViT | Directly adopted NLP Transformer Encoder for images, Mechanism to linearly embed image patches with positional embedding suitable for the Encoder。 | 2D Image | Class labels | Cross-entropy |
DeiT | Transformer as s student while CNN as a teacher, Distillation tokens to produce estimated labels from teacher, Attention between class and distillation tokens. | 2D Image | Class labels | Cross-entropy, Distillation loss based on KL-divergence |
|
Object Detection | DETR | Linear projection layer to reduce CNN feature dimension, Spatial positional embedding added to each multi-head self-attention layer of both encoder and decoder. Object queries (output positional encoding) added to each multihead self-attention layer of decoder. | 2D Image | Class labels | Hungarian loss based on bipartite matching between predicted and ground truths |
D-DETR | Deformable Transformer consists of deformable attention layers to introduce sparse priors in Transformers, Multiscale attention module. | 2D Image | Class labels | Hungarian loss | |
3D Classification/ Segmentation |
PT | Point Transformer block, Transition down block to reduce cardinality of the point set, Transition up for dense prediction tasks. | CAD models, 3D object part segmentation | Object and shape categories | Cross-entropy |
20210104-Transformers in Vision: A Survey综述中有这么一张分类图。
Facebook在2020年5月发表的DEtection TRansformer(DETR),是2020ECCV会议论文。目标识别新范式,杂交的网络,CNN提取特征,Transformer做识别。DETR将检测视为集合预测问题,简化了目标检测的整体流程。CNN提取的二维特征先被展平,加上一个固定的位置编码给Tansformer编码器,然后Tansformer解码器将少量固定的学习位置嵌入作为输入(即对象查询)。解码器的输出传给一个共享前馈网络(FFN),该FFN预测一个检测,即类别和边界框。此预测与groundtruth算Hungarian损失,从而得以训练。代码开源,目前6.3k⭐。
中科大、商汤2020年10月的Deformable DETR,目前已被ICLR2021接受。DETR存在训练周期长(比Faster RCNN慢10-20倍),不擅长需要高分辨率识别小目标的问题。所以Deformable DETR做出的改变有:Deformable DETR使用注意力后的特征图进行训练(DETR是直接使用CNN提取的特征图进行训练);对于关键点的特征使用邻近较小集合内的元素进行相关性刻画。代码开源,目前764⭐。
DETR路线下,延申或者改进的文章还有一些,就只挂一漏万地列举一下了。
Fast Convergence of DETR with Spatially Modulated Co-Attention
DETR for Crowd Pedestrian Detection
UP-DETR: Unsupervised Pre-training for Object Detection with Transformers (2021CVPR)
Google在2020年10月发表的Visual Transformer(ViT)算是一个经典吧(5个月成经典,足以证明Transformer现在有多热…),主要的贡献在于:基本照搬NLP的Transformer实现图像分类,证明了纯Transformer在CV上可以实现SOTA,甚至超越CNN的结果。代码开源,目前1.8k⭐。
Facebook在2021年1月15日发表的Data-efficient image Transformers(DieT)。卖点在于ViT一般数据量、显卡容量烧不起,所以在data-efficient上做文章。具体措施是用了一种distillation token在Transformer中实现了教师-学生策略(所谓以前的知识蒸馏)。代码开源,目前1.5k⭐。
依图CTO颜水成通讯作者Tokens-to-Token ViT(T2T-ViT),2021年1月28日出来的。因为ViT在中等大小的数据集上效果比CNN还是差,作者认为是ViT的tokenization比较简陋,且网络架构存在冗余的部分,所以训练效率不高,所以T2T-ViT提出了一个Tokens-to-Token变换,递归地将邻近的tokens聚合为一个token,缩小tokens长度;以及一个deep-narrow的网络结构(猜是和CNN里bottleneck的思想类似?未深究可能不对),旨在改善冗余问题。代码开源,目前550⭐。
南大、港大、商汤的2021年2月24日发表的Pyramid Vision Transformer(PVT)。从论文的交待和代码的痕迹可以看出是在DieT的代码上改进出来的(大家都不过年的嘛)。亮点在于所谓的Pyramid,用Transformer实现了以前CNN擅长的多尺寸的feature map提取,从而很多dense的CV任务就方便做了(图像分类是逐图片的任务,而目标识别、语义分割是逐像素的dense任务)。代码开源,目前320⭐。
众所周知,Transformer耗算力,吃数据,更不幸的是对超参数比较敏感,调不好很有可能就炼不出来。其中的数学原理,数理基础扎实的话可以瞅瞅这篇文献。
其中比较重要的一个点是学习率的设置具有技巧性,训练前通常要先热身,也就是需要有warm up stage,意思就是学习率应该先从较小的值线性增大,再正弦函数cos(t)减小。
还有就是Layer Norm必用不可,谁不用谁知道。不过只要不是自己搭网络,时髦的开源代码肯定都Layer Norm了,不用担心。
李宏毅老师的上课视频:入门时推荐先看一遍,事半功倍,不然看博客比较低效,直接看论文更摸黑。
CV中的Transformer论文收集Github仓库:已收集约60篇CV❌Transformer论文,目前在持续更新,可以时而看看有没有新的commit,Transformer different everyday~
【qt5-提高篇qt5+pandas+plt图像和数据输出】巧妙使用qt5,实现数据分析之(2)
鸿蒙3.0系统下载,鸿蒙os3.0系统官网版-华为鸿蒙os3.0下载官网手机版-66街机网
docker:出现Errors during downloading metadata for repository ‘AppStream‘解决方法
开启生态新姿势 | 使用 WrodPress 远程附件存储到 COS
【JQuery Mobile移动应用开发实战】JQuery Mobile基础——工具栏的使用
C语言常用字符串函数使用及模拟实现(strlen,strcat,strcpy,strcmp)
SpringBoot+Nacos+Kafka实现微服务流编排