传统卷积与Transformers 优缺点对比

news2024/9/30 3:34:58

近两年Transformer如日中天,刷爆各大CV榜单,但在计算机视觉中,传统卷积就已经彻底输给Transformer了吗?

回答1

作者:DLing
链接:https://www.zhihu.com/question/531529633/answer/2819350360

看在工业界还是学术界了。学术界,可能。工业界,一时半会还不会。

近些年,transformer确实很火,论文层出不穷,刀法也很犀利,各种公开数据集的强榜基本霸占。大家研究的热情也很高。

但是,工业界现在可能还不太“用的起”这么好的模型。

工业界对于模型的选择,对于模型推理效果的指标来说,更多的是够用就好。但是对于构建这个模型的成本来说,要求的会更严苛。

  • 1.场景需不需要上transformer?搞个麻将识别,一万和一条这种,需要上这么重的模型吗?
  • 2.标注成本能不能控制的住?一个五十万的项目,哪有那么多预算给你标数据,搞个开源稳定的模型,限制下场景,用公共数据或者少量的数据,达到客户的要求就好。这点数据量给transformer,牙缝还不够呢。
  • 3 训练成本能不能控制的住?训练时长,硬件计算资源等等一计算,transformer涨的那几个点能不能划算,都要打问号的,
  • 4 部署成本能不能控制的住?现在很多模型都得部署在很低算力的平台上,而且长期维护的产品,transformer能不能集成的进去,都不好说。

学术界和工业界还是有很大代差的,你会发现,很多大厂他们出了很多牛批的模型,但是他们的业务部门大多还在用resnet,yolov3 ,天天在搞数据,而不是在搞模型。至于原因嘛,懂得都懂。

学术界一定要引领工业界的,现在工业落地过程中,在长尾分布以及少样本学习方面可能需求的更急迫一些。毕竟太依赖样本数量的方式,会让产品落地举步维艰。


回答2

作者:幻云羽音
链接:https://www.zhihu.com/question/531529633/answer/2797528246

感觉很多答案都回答得很好了。
我就只说一点,经过在 Kaggle 上实践十几个数据集之后,我得到的结论是 ViT 系模型全都是“近视眼”。

(ViT 系模型: Vision Transformer 系列模型总称,包括 vit, swin, cait, deit, xcit, deit 等等)

比如说像下图这样的,哪怕你有近视眼,还是能分辨出狮子是狮子。
在这里插入图片描述
而 CV 科研界圣杯 ImageNet 里全是这样的图片,因此 ViT 系模型能大显身手。
在 Kaggle 里的类 ImageNet 数据的比赛中 ViT 确实能占一席之地,和 CNN 分庭抗礼 (并不是一边倒)

但如果换成这样的图片,要在几千x几千像素的图片里分辨出这种像素级别细节,那就不是 ViT 系模型的强项了,甚至在某些个数据集上基本无法正常收敛

在这里插入图片描述


回答3

作者:波尔德
链接:https://www.zhihu.com/question/531529633/answer/2473798585

首先明确反对斗兽。反对“a完爆b”式引战。
cnn相比vit至少有下列优点:

  • 1.cnn在数据较少时效果更好,收敛也更快。本质是因为cnn包含的inductive bias于图像数据的性质吻合,而vit只能靠海量数据学习这些性质。现实业务中数据很可能没那么多,vit吃不饱不好好干活。而且训练vit动不动就300、500甚至1000个epoch真的遭不住。用cnn可能100个epoch就完事了。

  • 2.cnn容易训练。只要用上residualBN这两个技术,cnn的效果基本就不会差到哪里去。训练vit你需要各种正则化trick。比如gradient clip,weight decay,random depth,large batch,warm up,各种数据增强……超参数过多意味着换个数据集就重新来过,慢慢调去吧。我听过很多人抱怨vit迁移到自己的数据上效果不好,我怀疑多半是没调出来。

  • 3.cnn跑得快。卷积已经经历过多年优化,比自注意力的运算效率高。relu也比gelu快的多。

  • 4.cnn的开销与像素点的数目是线性关系。而vit是平方关系。这意味着vit难以处理高分辨率图像

  • 5.cnn天然可以处理任意分辨率的图像。而vit由于位置编码的限制,一般需要固定分辨率

  • 6.cnn对硬件更友好。naive的卷积只需要im2col,matmul和reshape。bn和relu还可以融合进卷积核。硬件实现比自注意力简单。

  • 7.因为运算简单,cnn的int8量化也容易做。想要量化vit,首先必须搞一个int8的softmax…….怎么看都不是个容易的事情。目前的推理芯片绝大部分只能跑cnn。

最后是一些胡言乱语。
卷积和自注意力不是水火不容的。小孩子才斗兽。大人选择我全都要。例如Swin,吸收了cnn的局部性和层级结构,效果就比原版vit好很多。反过来ConvNeXT从vit里获得了灵感,给cnn来了一波文艺复兴。LeCun说过,他理想中的网络应该是用卷积抓底层的特征,transformer处理高阶的信息。类似于detr那样。vit这个领域现在还是大水漫灌,而我乐观地相信真正的好东西还在后面。

另外一个问题是,cnn到底还有多少潜力可挖。缝合了大量trick之后,老不死的(褒义)ResNet50也能在ImageNet上达到80%以上的准确度。说不定哪天又蹦出来个新技术,给全体cnn再补补身子(就像曾经的BN)。


回答4

作者:李宏毅的粉丝
链接:https://www.zhihu.com/question/531529633/answer/2473314760

No Free Lunch。我个人觉得这句话无论什么时候说都是对的,没有一个模型能在所有任务所有场景上都能做到最好,Transformer也不例外。

虽然目前cv的各大任务都是被Transformer刷榜了,但我相信还是有一些任务CNN是有一些优势的。首先我认为CNN和Transformer(MultiHeadAttention)最大的区别在于感受野,CNN在浅层的时候感受野很小,基本上提取的基本都是纹理颜色这种特征(不需要大的感受野),即使深层,虽然感受野较大(但实际上有效感受野并不是很大),理论上能学习到轮廓的特征,但是由于纹理颜色等特征是更容易学习的,因此,在ImageNet数据集上面,模型很容易走捷径,去学习纹理而不是形状,导致产生很大的形状偏见(https://arxiv.org/abs/1811.12231)。当然最近也有论文提出大卷积核可以得到更大的感受野,从而减小形状偏见,达到和Transformer类似甚至更好的效果(https://arxiv.org/pdf/2203.06717.pdf)。在通用任务(分类,检测,分割),感受野都是非常重要的,人判断一个物体类别主要也是依靠形状而不是纹理,因此通用任务上Transformer的效果比CNN好是符合直觉的。但是材料分类或者瑕疵检测这种通过纹理就能解决的问题,我相信CNN会有一定的优势,因为CNN的限制更为合理。

此外,最近CNN也开始文艺复兴了,ConvNext,VAN,以及上面这篇论文 (https://arxiv.org/pdf/2203.06717.pdf)通过增大卷积核在多个任务上取得了和Transformer类似的效果,不过没有达到SOTA就是了。

此外,重要的是,目前工业界,Transformer的落地困难重重,尤其是端边部署,onnx都不支持MultiHeadAttention, LayerNorm,GELU等算子,是将这些算子拆成多个小算子完成的。而绝大多数的AI芯片对这些小算子是不支持,或者推理效率很低的(GPU除外,但GPU实在是太贵了,一般产品是用不起的),这就导致了Transformer模型很难部署。BN可以与卷积融合3x3的卷积效率比其他算子高得多,导致了目前工业界还是以4,5年前的CNN网络为主。不是工业界的算法工程师不求上进,而是比较了很久之后会发现,新模型真的不一定会比老模型好。

退一万步来讲,Transformer在视觉任务上,Patch Embedding还是通过卷积层来完成的,卷积这种不破坏图像二维信息的算子已然刻入了基于Transformer的模型之中

参考:https://www.zhihu.com/question/531529633

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生进阶之容器】第二章Controller Manager原理--client-go剖析

2 Client-go Kubernetes 官方从 2016 年 8 月份开始,将 Kubernetes 资源操作相关的核心源码抽取出来,独立出来一个项目 client-go,Kubernetes中使用client-go作为Go语言的官方编程式交互客户端库,提供对api server服务的交互访问。对于k8s的二次开发,熟练掌握client-go是十…

大胆预测,2023年Android 行业什么技术最重要~

随着Android 时代的发展,在2022的这一年里,感觉自己经历了许多,从年初到年底,见证了不是互联网公司的裁员、优化、毕业、输送人才……等一些列的操作,估计有些人和我一样对Android未来感到茫然,不少人可能会…

发表计算机SCI论文,是先写中文,还是直接写英文论文? - 易智编译EaseEditing

经过高考、四六级和研究生考试,我们都有一定的英文基础,也都知道英文和中文的差别就是中国人和欧美人的思维差别。在这里对中英文写作的优缺点进行列举和分析: 直接写英文论文: (1)中英文表述方式差异明显…

【图像算法】pytesseract简单实现图片数字识别

【前置目的】 识别视频中是否包含目标元素; 抽象自动化,就是处理一段含有时间戳的视频; 再核心就是对视频进行图片裁减,识别出图片中的数字,做数学计算延时。 【学习地址】 环境:mac、python3、pytesserac…

PCB阻焊桥的工艺设计,华秋一文告诉你

PCB表面的一层漆称为阻焊油墨,也就是PCB线路板防焊油墨。阻焊油墨是PCB线路板中非常常见也是主要使用的油墨。阻焊油墨一般90%都是绿色的,但也有其他颜色,例如:红色、蓝色、黑色、白色、黄色称之为杂色油墨。 阻焊油墨的作用就是…

星尘数据完成5000万元A轮融资,Autolabeling加速自动驾驶量产

近日,国内领先的AI数据服务商星尘数据宣布完成A轮融资5000万元人民币,本轮融资由华映资本领投,小米生态链背景的厚天资本和瑞夏资本跟投。融资将用于端到端的数据闭环系统研发、商务拓展以及供应商合作。星尘数据创始人、CEO章磊表示&#xf…

用Python制作一个文件解压缩工具

经常由于各种压缩格式的不一样用到文件的解压缩时就需要下载不同的解压缩工具去处理不同的文件,以至于桌面上的压缩工具就有三四种,于是使用python做了一个包含各种常见格式的文件解压缩的小工具。 常见的压缩格式主要是下面的四种格式: zip…

New File Format:SpreadJS v16 Crack

New File Format 有你需要的更新内容,请大家及时更新到最新版 SpreadJS V16 has just released, and with it, Ω578867473 some exciting new features, including a new SpreadJS file format and enhancements to the TableSheet, Designer, Calculation, and W…

基于51单片机的数字电压表(TCL549)(Proteus仿真+程序)

编号:31 基于51单片机的数字电压表(TCL549) 功能描述: 本系统由51单片机最小系统TCL549模块一路模拟量输入模块液晶1602显示模块 1、主控制器是89C52单片机 2、TCL54模数转换器进行A/D转换,读取电压一路数据&#xf…

VSCode(Flutter开发)使用的 4 个 技巧

1.更清晰的文件夹结构 在创建一个新的 flutter 项目后,有太多的文件。但是我们可以在 VSCode 中用非常简单的步骤来构造这些文件: 打开命令面板(Ctrl/Cmd Shift P) 键入“首选项: 打开设置(JSON)” 将以下代码行添加到 setings.json: { "explorer.fileNes…

yapi的安装

Yapi的安装 Yapi是一款不错的接口管理软件,我主要用它来进行接口Mock。 Yapi安装所需环境: Node.js(7.6)Mongodb(2.6)git 各环境安装地址: git:https://git-scm.com/downloadsN…

[极客大挑战 2019]Buy Flag1(BUUCTF)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 解题工具: 我爱用edit this cookie2和hackerbar, 当然也可以burpsuite和fiddler抓包 解题过程: 看到他说flag要100000000 MONEY, 还要是Cuits students, …

windows11 elasticsearch-head 插件安装

1.elasticsearch-head 插件介绍 elasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对elasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对Elastic…

DaVinci:限定器之蒙版优化

调色页面:限定器Color:Qualifier使用限定器等工具进行抠像后,所得到的遮罩 Matte(又称为“蒙版”)可能会存在诸多问题,比如边缘过于锐利或呈锯齿状、遍布杂点(噪点)或中间有不规则的…

【pandas】教程:5-从已有数据中创建新列

Pandas 从已有的数据列中创建新列 加载数据 本节使用的数据为 data/air_quality_no2.csv,链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库 通过 假设在25,1013hPa 压力下密度为 1.882 air_quality["london_mg_per_cubic"]…

java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口以及telnet命令连接Dubbo服务

java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口前言正文Mac使用telnet命令提示:command not found,Mac安装telnet 命令一、telnet是什么?二、telnet命令连接Dubbo服务显示列表 – ls显示服务端口和连接 – ps跳转服务 – cd显示当…

[虚幻引擎][UE][UE5]在UE5中使用线条画一颗简单的三维圣诞树(练习向)

TOP 一、前言 搞得不好看,简单了解一下叭。主要是在三维中使用线条。需要理解圆的方程式。 (小声逼逼,后来还想搞个三维圆锥螺旋线写个点球点缀一下的,结果上网一搜没人给出方程式,只好不了了之了,有哪位…

Linux之从命令行管理文件

文章目录1. 使用ln命令,创建grading/grade1文件的硬链接,取名为/hardlink2. 使用ls -l 命令查看grading/grade1文件的链接数3. 使用ln -s命令,创建grading/grade2文件的软链接,取名为student/softlink4. 使用ls -l 命令查看studen…

简单随机多边形切割方案

过程化处理中希望能够对某块区域生成随机多边形,以及再切割成子多边形 各种尝试之后发现一种通过python、turtle、pyclipper实现的简单方案 随机多边形 采用python直接生成随机多边形,算法原理:将360度随机拆分成各个角度,再通过…

过年不让放炮,我用Python实现了1000响大地红的特效

同志们,马上(后天)就要2023年啦,您有没有对象啦哈哈哈 咳咳,搞错了~~再来 新的一年,新的气象,穿上新衣逛街 俗话说得好,这所谓放鞭炮就是来压邪祟,除恶的,…