【计算机视觉】在计算机视觉里,传统卷积已经彻底输给Transformer了吗?

news2024/12/26 11:05:26

文章目录

  • 一、传统卷积 & Transformer
    • 1.1 传统卷积
    • 1.2 Transformer
  • 二、知乎高赞回答
    • 2.1 作者:知乎用户
    • 2.2 作者:王云鹤
    • 2.3 作者:知乎用户

一、传统卷积 & Transformer

1.1 传统卷积

传统卷积(Traditional Convolution)是指在数字信号处理和图像处理领域中常用的一种运算方法,用于从输入信号中提取特征或进行滤波操作。它是卷积神经网络(Convolutional Neural Networks,CNN)中的核心操作之一。

传统卷积基于滑动窗口的思想,通过将一个小的窗口(通常称为卷积核或滤波器)在输入信号上进行滑动,并将窗口中的元素与输入信号对应位置的元素相乘,然后将结果求和得到输出。这个过程可以看作是一种特征提取的操作,通过滤波器与输入信号的卷积运算,可以突出输入信号中的某些特征,例如边缘、纹理等。

在图像处理中,传统卷积通常采用二维卷积操作,即在图像的每个位置上,将卷积核与图像中对应位置的像素进行逐元素相乘,并将结果相加得到输出图像的对应位置的像素值。这种操作可以应用于图像平滑、边缘检测、特征提取等任务。

传统卷积的一个限制是需要手动设计卷积核的参数,这对于复杂的任务来说可能并不容易。而在卷积神经网络中,卷积核的参数是通过反向传播算法自动学习得到的,这使得网络可以更好地适应不同的任务和数据。

传统卷积在计算效率上也存在一些挑战,特别是对于大规模图像和复杂卷积核的情况。为了提高计算效率,研究人员提出了一些优化方法,例如快速卷积算法(如快速傅里叶变换、快速卷积网络)和基于硬件的加速器(如图形处理器、专用的卷积芯片)等。

传统卷积(Traditional Convolution)是指在数字信号处理和图像处理领域中常用的一种运算方法,用于从输入信号中提取特征或进行滤波操作。它是卷积神经网络(Convolutional Neural Networks,CNN)中的核心操作之一。

传统卷积基于滑动窗口的思想,通过将一个小的窗口(通常称为卷积核或滤波器)在输入信号上进行滑动,并将窗口中的元素与输入信号对应位置的元素相乘,然后将结果求和得到输出。这个过程可以看作是一种特征提取的操作,通过滤波器与输入信号的卷积运算,可以突出输入信号中的某些特征,例如边缘、纹理等。

在图像处理中,传统卷积通常采用二维卷积操作,即在图像的每个位置上,将卷积核与图像中对应位置的像素进行逐元素相乘,并将结果相加得到输出图像的对应位置的像素值。这种操作可以应用于图像平滑、边缘检测、特征提取等任务。

传统卷积的一个限制是需要手动设计卷积核的参数,这对于复杂的任务来说可能并不容易。而在卷积神经网络中,卷积核的参数是通过反向传播算法自动学习得到的,这使得网络可以更好地适应不同的任务和数据。

传统卷积在计算效率上也存在一些挑战,特别是对于大规模图像和复杂卷积核的情况。为了提高计算效率,研究人员提出了一些优化方法,例如快速卷积算法(如快速傅里叶变换、快速卷积网络)和基于硬件的加速器(如图形处理器、专用的卷积芯片)等。

1.2 Transformer

Transformer是一种用于自然语言处理(Natural Language Processing,NLP)和其他序列到序列(sequence-to-sequence)任务的神经网络架构。它于2017年由Vaswani等人在论文"Attention Is All You Need"中提出,并在机器翻译任务中取得了显著的成果。

相较于传统的循环神经网络(Recurrent Neural Networks,RNNs),Transformer采用了全新的结构,主要由两个关键组件构成:自注意力机制(Self-Attention)和前馈神经网络(Feed-Forward Neural Network)。

自注意力机制是Transformer的核心部分。它允许模型在处理序列时直接关注输入序列中的其他位置,并在计算注意力权重时考虑到序列中所有位置的信息。这种机制使得模型能够有效地捕捉输入序列中的长距离依赖关系,从而更好地理解上下文。

前馈神经网络是自注意力机制之后的一层全连接前馈网络。它通过多层感知机(Multi-Layer Perceptron,MLP)对自注意力机制的输出进行非线性变换,增加模型的表达能力。

Transformer还使用了层归一化(Layer Normalization)和残差连接(Residual Connections)等技术来加速训练和提高模型的性能。此外,为了实现序列到序列任务(如机器翻译),Transformer还引入了编码器-解码器结构,其中编码器用于处理输入序列,解码器用于生成输出序列。

相较于传统的循环神经网络,Transformer具有以下几个优势:

  1. 并行计算:Transformer可以同时处理整个输入序列,因此可以并行计算,加快了训练和推理的速度。
  2. 并行计算:Transformer可以同时处理整个输入序列,因此可以并行计算,加快了训练和推理的速度。
  3. 编码器-解码器结构:Transformer的编码器-解码器结构适用于序列到序列任务,如机器翻译。它通过将输入序列编码成固定长度的向量表示,并使用解码器逐步生成输出序列。

编码器-解码器结构:Transformer的编码器-解码器结构适用于序列到序列任务,如机器翻译。它通过将输入序列编码成固定长度的向量表示,并使用解码器逐步生成输出序列。

二、知乎高赞回答

2.1 作者:知乎用户

https://www.zhihu.com/question/531529633/answer/2473781572

是,输得很惨,我现在一看到面试者对Transformer一脸热情过度的样子都有点PTSD了

前面波尔德已经讲得很好了,Transformer冲击SOTA有用,但工业界不可能去用SOTA。既然是工业界,做什么都得考虑个成本,Transformer一上,就意味着推理时间,训练时间,调试时间成倍的增加。

推理时间翻倍,意味着硬件成本翻倍,也意味着同样的硬件能同时跑的模型变少。大部分硬件不支持意味着高效率硬件用不上,只能使用少数厂商的硬件,这就意味着硬件被人卡脖子。功耗成本增加也是问题。

训练时间翻倍,意味着迭代次数减少,迭代次数减少意味着你开发进度慢,意味着被市场淘汰。要跟上步子也可以,那么训练集群和电费都是成倍增加。

Transfomer难训练,意味着调试时间成倍增加,以前随便调调就有,现在得反复调试。训练时间使用的是GPU时间,还能忍,调试时间是是什么?员工的时间。IT企业最大的成本支出是什么?人力成本。

最后,你一个好好的企业,用上了Transformer,导致推理硬件成本翻倍,能耗翻倍,训练集群成本翻倍,耗电翻倍,迭代时间翻倍,员工成本翻倍,然后被市场淘汰。所有这一切的付出,居然只是为了涨那几个点。。。

如果你把Transformer用在刀刃上,比如波尔德说的处理高阶特征,那还行。比如特斯拉用Transformer搞tracking就是不错的思路。

2.2 作者:王云鹤

https://www.zhihu.com/question/531529633/answer/3047230939

一年多以前我也以为输了,但其实还有机会。我们6层的VanillaNet可以超过ResNet-34,13层的VanillaNet在ImageNet达到83%的top1精度,超过几百层网络的性能,并展现了非凡的硬件效率优势。顺道一提,VanillaNet的中文名字为朴素网络。

王云鹤:卷积的尽头不是Transformer,极简架构潜力无限:

https://zhuanlan.zhihu.com/p/632685158

在过去几年时间,一直都在找关于神经网络架构创新的灵感。在视觉Backbone这个方向上,端侧我们有了GhostNet这种轻量的模型架构和系列算法。但是面对现在大算力,还没有什么特别好的思路,虽然在Vision Transformer的路上跟着大家也一起做了一点工作,但一直想利用最简单的卷积网络,尝试做出更强的效率和性能,在实际应用中也可以有更大的价值。

在这里插入图片描述

6层的VanillaNet结构图,没有Shortcut,致敬LeNet、AlexNet和VGGNet这个工作的核心就是,如何让一个浅层网络在没有复杂链接和attention的情况下,尽可能地提升精度,实际上我们面临的非线性大幅下降的技术难题。现代深度神经网络强大的拟合能力,甚至在不考虑复杂度的情况下具有逼近任意函数的潜力,很大一部分是复杂的非线性层不断堆叠带来的。

在这里插入图片描述

VanillaNet与SOTA架构在深度、精度、速度上的对比VanillaNet是我们的一个开端,让我们重新思考了很多,到底什么对深度神经网络性能提升是最重要的,是深度,是感受野,是attention,还是参数量?目前这个版本的VanillaNet我们优化了接近一年,已经在很多实际业务中都用了起来。但它也还有很多提升空间,比如没有加任何的预训练和蒸馏,也没有进一步系统性尝试与其它网络架构的融合,还没有更进一步进行结构的优化。AI的浪潮一波三折,距离AlexNet提出已经有11年过去了,而今迈步从头越,期待未来的新架构和新应用。

2.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容易训练。只要用上residual和BN这两个技术,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)。

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

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

相关文章

【初识C语言(3)】选择语句+循环语句+函数+数组

文章目录 1. 选择语句2. 循环语句3. 函数4. 数组 C语言是一门结构化的程序设计语言 顺序结构; 选择结构; 循环结构。 1. 选择语句 生活中处处面临着选择,如果你好好学习,校招时拿一个好offer,走上人生巅峰。如果你不学…

案例突破——悲观锁和乐观锁

悲观锁和乐观锁 一、背景介绍二、悲观锁和乐观锁什么是悲观锁什么是乐观锁 三、 在项目中如何使用悲观锁和乐观锁在项目中使用悲观锁实体结构实体对象的xml配置文件对应生成的表结构往表中初始化数据运行之后的结果模拟触发悲观锁的条件核心代码 在项目中使用乐观锁实体结构(添…

【探索 Kubernetes|作业管理 Deployment 篇 系列 12】水平扩展 / 收缩、滚动 / 回滚更新

前言 大家好,我是秋意零。 在上一篇中,我们介绍了控制器的基本设计思想:控制器模式。通过这个 “控制器模式” 我们来看看 Deployment 是如何依靠它来实现的。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位…

第40步 深度学习图像识别:DenseNet201建模(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 (1)DenseNet201 DenseNet201是一种深度卷积神经网络,是DenseNet网络的一种变体。DenseNet,全称Dense Convolutional Network(密集卷积网络),是由Faceb…

【VC 7/8】vCenter Server 更新(小版本升级)Ⅱ—— 使用 Shell 命令行更新 vCenter Server

目录 2. 使用 Shell 升级 vCenter Server(1)下载更新 ISO 镜像(2)挂载 ISO 镜像(3)验证 ISO 镜像已被挂载通过VAMI 更新界面将ISO 挂载到 VC 的文件系统 (4)更新 VC | 安装 vCenter …

Elasticsearch:如何通过 3 个简单步骤从 Elastic 数据中删除个人身份信息

作者:Peter Titov 对于任何组织来说,个人身份信息 (Personally Identifiable information, PII) 合规性都是一个日益严峻的挑战。 无论你是在电子商务、银行、医疗保健还是其他数据敏感的领域,PII 都可能会在无意中被捕获和存储。 拥有结构化…

丰田汽车投资人要求董事长下台

🚙 丰田电动车推广不力,股东要求董事长下台 Toyota faced down two proxy votes at its annual general meeting. In an unusual challenge to the management of a Japanese company, activist investors in America and Europe recommended voting aga…

跨境电商产品的评价怎么获取?

对于在亚马逊、沃尔玛、eBay、Wish、Newegg、速卖通、阿里国际站、Shopee、Lazada、Temu、乐天、Toktok、Joom、Ozon等跨境电商平台的卖家来说,产品评价和补单(增加订单数)是一个常见但至关重要的话题 优质的产品评价可以向潜在买家展示我们…

想学习大数据,主要学什么?

什么是大数据 什么是“大数据”呢?如果从字面意思来看,大数据指的是巨量数据。那么可能有人会问,多大量级的数据才叫大数据?不同的机构或学者有不同的理解,难以有一个非常定量的定义,只能说,大…

【技术干货】高精度室内定位方案,影响UWB定位精度的因素分析

物联网时代,室内定位已然成为物联网建设的技术纽带,想要真正发挥位置数据的价值,就需要采集的位置数据有足够精度。基于UWB技术的厘米级UWB高精度室内定位方案已广泛应用于物联网各行业领域的人员定位及资产管理。本篇小编就来带大家了解一下…

QGIS 3D功能操作说明

QGIS可以轻松快速地创建 3D 地图和可视化。可用于3d数据效果浏览及与2D数据的对比及数据的打印输出。具体功能如下。 1.在 QGIS 中,您可以通过几个简单的步骤创建 3D 模型。 (1)在QGIS中添加3D 数据的数据层,例如DEM,以供3D功能使用。 …

快速下载操作系统镜像文件-ubuntu-centos

一键搞定镜像文件下载 操作方式 链接地址:阿里云镜像文件链接地址 点击【OS镜像】弹框中选择相应版本 弹框中选择好相应的发行版本后点击【下载】即可

将数组内的元素变为指定格式的字符串类型numpy.char.mod()方法

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将数组内的每个元素 修改为指定格式的字符串 numpy.char.mod() [太阳]选择题 关于以下代码说法错误的一项是? import numpy as np a np.array([1, 2, 3]) print("【显示】a ",a) p…

前端Vue自定义导航栏菜单 定制左侧导航菜单按钮 中部logo图标 右侧导航菜单按钮

前端Vue自定义导航栏菜单 定制左侧导航菜单按钮 中部logo图标 右侧导航菜单按钮, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id13152 效果图如下: # cc-navHeader #### 使用方法 使用方法 在page.json设…

轻量级的深度学习框架Tinygrad

Tinygrad是一个轻量级的深度学习库,它提供了一种简化和直观的方法来理解和实现神经网络。在本文中,我们将探讨Tinygrad及其主要功能,以及它如何成为那些开始深度学习之旅的人的有价值的工具。 什么是Tinygrad? Tinygrad是一个开源的深度学习…

Redis持久化机制介绍

Redis持久化 1.Redis持久化2.Redis 的持久化机制是什么?各自的优缺点?2.1.RDB:是Redis DataBase缩写快照2.2.AOF:持久化2.3.AOF和RDB优缺点是什么? 3. 如何选择合适的持久化方式4.Redis持久化数据和缓存怎么做扩容&…

[Pytorch]Broadcasting广播机制

文章目录 Broadcasting广播机制BroadcastableBroadcasting Broadcasting广播机制 Broadcasting机制用于在不同维度的张量进行运算时进行维度的自动增加与扩展,Broadcasting机制使用的前提是两个参与运算的张量是可broadcastable的。 Broadcastable 怎样的两个向量…

【libdatachannel】pycharm运行streamer的信令服务及streamer与js客户端联调1

一 信令服务:启动py服务器 ssl必须额外指定 # Usage: ./server.py [[host:]port] [SSL certificate file]文档给出了服务的启动命令: python3 -m http.server --bind 127.0.0.1 8080 直接运行: python的信令服务 #!/usr/bin/env python # # …

图的广度优先遍历和深度优先遍历

前言:在上一篇博客我们学习了图的基本操作,包括图的建立、结点插入与删除等操作,怎么判断我们建立的图是否正确,很简单把它输出出来就是,但是如何输出它,这就是图的遍历问题了。 一.图的遍历 图的遍历是指…

初识C语言的static关键字(修饰局部变量、全局变量和函数)

目录 学习目标 1.static 修饰局部变量 2.static 修饰全局变量 3.static 修饰函数 学习目标 static修饰局部变量static修饰全局变量static修饰函数 1.static 修饰局部变量 (1)static修饰局部变量后,这时局部变量就是静态的局部变量。 &am…