视觉主干网络系列

本文介绍了一些经典的视觉骨干网络的工作,但仅举例,学者们对视觉骨干网络的探索远不止于此,本文仅作参考。

LeNet-5(1998年)

论文原文:https://ieeexplore.ieee.org/document/726791

大名鼎鼎的LeNet,将卷机神经网络用于手写数字识别,采用卷积层、池化层、全连接层的架构,奠定了现代卷积神经网络的基础

AlexNet(2012年)

论文原文:https://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

训练了更深的卷积网络,在多个GPU上训练网络(发明了分组卷积,不同波段分别进行卷积计算,这在当时是一种妥协,因为当时单张GPU显存不够),在Image-Net2012图像分类比赛中全面超过传统方法

VGGNet(2014年)

论文原文:https://arxiv.org/abs/1409.1556

证明了使用更小的3×3的卷积核和更深的网络能够取得更好的效果(相比较大卷积核与浅层网络的组合)(但后面也有文章说明这只是一种算力不够的妥协,大卷积核性能其实更好,所以深度学习有时候真的是实验科学)

GoogLeNet(2014年)

论文原文:https://arxiv.org/abs/1409.4842v1

引入Inception架构,通过这种一层多种尺度卷积池化的设计,希望能够让网络自己去选择合适的尺度,后续也有很多工作是基于这种思想。另外,googlenet使用辅助分类器,作为防止梯度爆炸或梯度消失的手段

ResNet(2015年)

论文原文:https://arxiv.org/abs/1512.03385

强大通用的ResNet,由何凯明大神所在团队提出。他们发现,当网络深度超过一定层数后,训练更深的网络反而会得到更差的效果,但从逻辑上来看,网络本来应该至少能找到一种恒等映射让效果至少等于浅层网络。于是,出于网络自己没法学,我们就帮他学的想法,提出了残差连接结构,并基于此设计了超级深的卷积神经网络。

除此之外,还提出bottleneck这种结构,减少计算压力。另外,ResNet在ImageNet图像分类任务上使得机器学习技术第一次超过人类水平。

DenseNet(2016年)

论文原文:https://arxiv.org/abs/1608.06993

受ResNet的启发,DenseNet采用了一种更为激进的连接策略,在每一个DenseBlock块内,后面每层的特征都是当前层的特征与前面每层特征的concat,也就是直接在波段方向上进行拼接,每层仅单独输出k个通道特征,这样达到一种特征重用的效果

Transformer(2017年)

论文原文:https://arxiv.org/abs/1706.03762

2017年NLP领域出了一篇文章提出Transformer架构,因其注意力机制能更好地建模全局信息,因此在各种自然语言处理任务上都表现非常好,大力推动了NLP领域的发展

其主干架构为如下所示的由编码器、解码器构成的结构

Transformer解决的是一个seq to seq的问题,例如要将“Hello world”翻译成“你好世界”,在翻译到“好”字以后,继续翻译下去,这时我们的encoder输入为“Hello world”,我们的decoder输入为“你好<mask>”

前向过程为:

首先是编码器部分

计算位置编码,作者用三角函数计算位置编码,再与输入信号相加得到有位置编码的输入信号。将这个信号复制三份,分别与三个矩阵相乘得到三个不同的编码q、k、v,这里的三个矩阵通过学习(反向传播)得到。计算自注意力,假如输入为有四个序列的输入信号a1,a2,a3,a4,通过刚才的计算我们会得到4个q、4个k、4个v,假如对于q2,我们将其与k1,k2,k3,k4进行相乘会得到四个值b21,b22,b23,b24,四个值都除以k的长度(对应文中“Scaled”),再通过softmax得到四个非负、加权和为1的权重值,将v1,v2,v3,v4以这四个权重加和就得到新的a2,剩下的a1,a3,a4用相同的方法得到。将刚才的操作复制多次,就是多头自注意力,作者认为通过这样,能够让自注意力层学习到多种不同的注意力。通过一个全连接层,这个全连接层里有一个InvertBotlleneck,就是先将数据量投影到4倍大的空间,再投影回去。

经过多个这样的编码器得到编码信息,后面再接着解码器。解码器结构和编码器几乎完全一样,不一样的地方在于解码器的q内容为来自先前整个模型的输出。解码器中有Masked Multi-Head Attention模块,Masked的目的是为了让前面较前的序列编码不发生变化,以翻译hello world为“你好世界”为例,编码hello world每个词的时候可以看到整个句子的信息,但在解码器中,在输出“世”字和输出“界”字时对于“好”字的编码如果需要保持一样,那么在输出“界”字的时候,我们编码“好”字应该将“世”字给掩盖掉,所以就有了Masked Multi-Head Attention

Transformer启发了一大群研究者,应用在NLP领域,出现了基于其编码器部分的BERT、基于其解码器部分的GPT,后来被引入图像领域,出现了ViT

Vision Transformer(2021年)

论文原文:https://arxiv.org/abs/2010.11929

该篇论文的目的是在原来Transformer的基础上,做尽量少的修改,应用到图像领域,以证明其Transformer在图像领域依然能取得好成绩

具体实现:

  1. 将图像切割成16×16的patch,每个patch直接拉直得到1×768的向量当作一个序列
  2. 位置编码依据patch的顺序而设,且设置为可学习的
  3. 舍弃掉decoder,encoder之后跟全连接头用于图像分类

将transformer用于图像分类,在ImageNet21k以及更大的数据集上相比ResNet50等卷积神经网络取得了更好的效果(数据集小的话效果会差一些)。作者通过自注意力层的相似性计算部分的结果,反向表示了原图像中相似性高的部分,发现网络真的注意到了一些能够用于图像分类的语义信息

Swin-Transformer(2021年)

论文原文:https://arxiv.org/abs/2103.14030

由于Transformer舍弃了图像所特有的一些归纳偏置(如平移等变性、尺度等变性等),在应用到图像处理任务上仍有一定的局限性,于是就有了SwinTransformer模型,通过引入滑窗设计和多层级下采样设计希望能够建模平移和尺度等变性

具体实现:

将整幅图像划分为4×4个同样大小的窗口,用窗口取样后重叠起来送入Transformer,经过一个Transformer块之后滑动窗口再取样,再经过一个Transformer块

一个stage之后(一个stage指特征图尺寸不变的经过几个处理),进行一次下采样,再划分为2×2个同样大小的窗口,再进行同样的操作,后面再重复一次这个操作

通过这种分层级的融合以及滑窗设计,Transformer可以捕捉多尺度的信息以及一定的平移不变性

MetaFormer(2021年)

论文原文:https://arxiv.org/abs/2111.11418

ViT之后,有许多人投入到对Transformer块的研究中,其中,有人认为Transformer之所以有效果,主要是因为Transformer这个结构,它们将Transformer的自注意层用平均池化操作替换,提出了PoolFormer

伪代码写的相当直白:

PoolFormer在同等参数量条件下,在许多视觉任务上效果都超过了现有的ViT、DeiT、PVT等基于Transformer的模型,作者认为这种先做Token Mix再连接通道全连接层的架构才是Transformer成功的原因

作者另外还做了许多消融实验,下面为几个比较有意思的:

以标准PoolFormer-S12为参照,ImageNet-1K分类任务top1准确率为77.2

  1. 将平均池化层替换为恒等映射,74.3
  2. 去掉normalization层,46.1
  3. 去掉残差连接,0.1
  4. 去掉后面的全连接层,5.7
  5. 采用混合网络,将最后两层Transformer换成Attention层,81.0

ConvNeXt(2021年)

论文原文:https://arxiv.org/abs/2201.03545

自vision Transformer发展以来,大家在此之上做了很多改进,用了更多的数据增强、采用AdamW优化器、采用GELU激活函数等等,于是有人想是否是因为这些改进使得ViT的效果更好,于是它们将这些改进用到ResNet上,在一个ResNet50上进行修改,一步步向SwinTransformer靠近,探究是哪些因素使得Transformer效果变好

文中作者依次使用从宏观到微观十几种手段一步步让ResNet50的效果在相同参数量条件下超过SwinTransformer,总结为ConvNeXt

这些手段分别是:

  1. 将网络的多尺度卷积层数比例由3:4:6:3改为1:1:3:1
  2. ViT一般在第一层直接将图片打成一个个patch,作者这里将第一层改成核大小4×4,步长为4的卷积
  3. 采用分组卷积
  4. 使用InvertBotlleneck层
  5. 认为自注意力本质上也是较大的卷积核,作者使用7×7的卷积核
  6. ReLU替换成GELU
  7. 使用更少的激活函数
  8. 使用更少的归一化层
  9. BatchNorm替换成LayerNorm
  10. 下采样层使用4个步长为2的2×2的卷积(跟SwinTransformer一样的策略)

原文结论部分:

在2020s,vision Transformer,尤其是多层的Transformer例如Swin Transformer,PVT等开始取代卷积网络作为视觉领域主干网络的最优选择。普遍的观点是,vision Transformer比卷积神经网络更准确、高效且可扩展。我们提出了ConvNeXts,这是一个纯卷积神经网络模型,可以在多个计算机视觉基准测试中与最先进的分层视觉Transformer竞争,并保持标准卷积神经网络的简单性和高效性。在某些方面,我们的观察结果令人惊讶,尽管我们的ConvNeXt模型本身并不是全新的——在过去的十年中,许多设计选择已经被单独研究过,但尚未综合考虑。我们希望本研究中报告的新结果将挑战一些普遍存在的观点,并促使人们重新思考在计算机视觉中卷积的重要性。

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值