CV界,卷积神经网络真的干不过Transformer了吗?

一、 CNN及其优势和局限性

其他答主回答的角度和内容非常全面,答主也从自己的角度谈谈这个问题。我们不妨先看一下CNN的结构。CNN依靠卷积拥有感受野,具有了时移不变性。
在这里插入图片描述

1.1 CNN的局限性

可以看到随着卷积层的增加,feature maps上的一个像素点就包含更多的信息。这种感受野的增长依靠于卷积核大小和层数,因此,如果卷积核不算很大,层级不够多,那么其在处理有长距离依赖上的图像效果可能并不好。同样,如果最后不处理到只剩一个像素,那么feature maps上的任何一个像素点都不能处理全局信息。这就是CNN体系上的一个局限性。

1.2 CNN的优势

尽管CNN有着其局限性,但很显然,这个局限性在某些情况下就会转为其优势。CNN的全局信息处理能力不足,但其局部特征提取能力非常强大,这种局部特征提取的能力在处理图像中的细节和纹理等局部特征上更为有效。
同时,卷积操作有助于减小参数量,因为卷积核的参数被共享,意味着同一个卷积核可以在整个输入图像的不同位置上进行特征提取。这种参数共享减少了网络的参数量,降低了过拟合的风险,并且使得模型更具有泛化能力。相比于全连接和transformer,参数量是明显减小的。

人类对外界的认知一般是从局部到全局、从片面到全面,类似的,在机器识别图像时也没有必要把整张图像按像素全部都连接到神经网络中,在图像中也是局部周边的像素联系比较紧密,而距离较远的像素则相关性较弱,因此可以采用局部连接的模式(将图像分块连接,这样能大大减少模型的参数),如下图所示:
在这里插入图片描述

标题二、 Transformer及其优势和局限性

Transformer本来是NLP领域的革命性模型,随着其在多个benchmark上达到sota的效果,首先是NLP领域刮起了Transformer结构的旋风。随后Transformer开始打破壁垒,进入CV领域。
我们先看ViT的结构图:
在这里插入图片描述
ViT方法实现细节

如上图所示,整个模型我们可以将其分为4个部分,假设输入图像选择为256x256x3;

  1. Linear Projection of Flattened Patches(将CV任务图片转换为与NLP任务类似的序列Patches)
  2. Extra Learnable[class] Embedding And Position Embedding
  3. Transformer Encoder MLP Head部分结构

我们可以看到,图像被处理成了多个patch,而这些patch经过映射之后再被送入到Multi-Head Attention的结构里面,我们再看Multi-Head Attention的结构:
在这里插入图片描述

2.1 Transformer的局限性

很明显,本来一个a,要经过三个矩阵的处理,变成q, k, v,参数量明显上涨。然后两两计算qkv,这无疑带来了巨大的计算量。这就引出了Transformer在参数量和计算量上的局限性,需要比较多的计算资源,这也是为什么会出现“Money is All you need”的这么一个讽刺文章了。如果图片比较大,CNN也许能轻松处理,但是Transformer就不一定了,所以才引出了后面的Swin Transformer,但是始终还会有高于CNN的计算量。因此,Transformer想要处理高分辨率的图像也还是比较有难度的。由于参数量的增多,这对数据量提出了比较高的要求,在数据较少的情况下可能并不奏效。

2.2 Transformer的优势

和CNN一样,Transformer的局限性也可以转换成其优势,就是能够有全局信息和处理长距离依赖的能力,并且在足够的数据和计算资源下,可以达到非常出色的效果,这个在各种论文的结果上都可以得到验证。

Transformer的优势在NLP领域更是体现的淋漓尽致,也带来了预训练模型的潮流。而继承于Transformer Decoder的GPT,在自回归生成上又做到了让人眼前一亮的效果,而后GPT又经过强化学习,微调等技巧,诞生出了现在的大模型,现在已经进化到多模态的版本,能用图像交互了,目前尚不知道自回归会不会在CV领域闯出来,大家可以多多关注CV领域未来的发展方向。

三、 CNN和Transformer的互补

实际上,CNN和Transformer并不是水火不容的关系,想起来本科操作系统和编译原理老师都说过的一句话:没有过时的技术,只是看什么样的应用场景,某些场景下,老技术也能焕发光彩。像另一位答主所说的,先用CNN提取特征,再用Transformer做后处理是比较合理的做法。先利用CNN的局部特征提取能力和参数共享特性,将一些图像先进行一个提取,降低像素量,再用Transformer的高级抽象特征处理能力,计算全局信息,再利用全局信息去做特定的任务,这是一个较为可行的方案。
也有不少论文是将Transformer和CNN融合使用的。比如TransUNet:

在这里插入图片描述
就是用上了这种思路,对医学图像进行分割,达到了不错的效果。
还有一种思路是不管什么尺度,都用CNN+Transformer处理,例如发表在MICCAI(CCF B)的UTNet:
在这里插入图片描述
在Encoder部分除了第一层,其他层都用卷积再加Transformer的方式进行处理。

因此,哪怕在学术界,也不能说Transformer可以完全取代CNN,完全不需要用二极管思维去看待任何一项技术。在工业界就更不用说了,像各位大佬所说的,Transformer在落地上有着比较大的困难,总不能要求所有设备都搭载着高性能的GPU进行计算。

总结

上述一系列的分享,相信大家也会有了自己的看法,在这里答主再重复一下自己的结论,其实也就是没有免费的午餐原理,没有一个技术或者算法可以通用地解决所有问题,当其在一个任务上表现得好的时候,通常在另一个任务也许会不尽人意。粗暴地想用谁取代谁,都不是一个合理的思想,归根结底还是要对不同技术进行分析和理解,取长补短,相得益彰,这也是一系列论文给我们证明的结论。希望大家如果觉得答主分

TransformerCNN是两种不同的神经网络模型,它们各自有一些优缺点。 Transformer是一种基于自注意力机制的模型,它在自然语言处理领域取得了很大的成功。它的优点包括: - 具有较长的记忆能力,能够处理较长的序列; - 可以并行计算,加快了训练速度; - 自注意力机制使得模型能够关注输入序列中的每一个位置,从而更好地捕捉序列中的相关信息; - Transformer模型的输出是基于整个输入序列的,因此可以获得全局的信息。 然而,Transformer也有一些缺点: - 由于需要处理多个位置之间的关系,计算复杂度较高; - Transformer模型需要大量的训练数据和计算资源; - 对于一些简单的任务,Transformer可能会比传统的模型效果差。 相比之下,CNN是一种经典的神经网络模型,它在图像处理和语音识别等领域也取得了很大的成功。CNN的优点包括: - 可以通过卷积操作捕捉输入数据的局部特征,从而更好地处理图像和语音等信号; - CNN的训练速度较快,并且需要的计算资源相对较少; - 对于一些简单的任务,CNN可以取得很好的效果。 然而,CNN也有一些缺点: - CNN模型的输入必须是固定大小的矩阵或张量,因此不适用于处理可变长度的序列数据; - CNN只能捕捉输入数据的局部特征,对于一些需要全局信息的任务可能效果不佳; - CNN的输出是基于局部信息的,可能会丢失一些全局信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值