CNN vs ViT:图像世界的范式演进

news2025/5/22 6:09:27

一、图像建模,是不是也可以“大一统”

在前文中我们提到,多模态大模型打破“只能处理文字”的限制。

在 NLP 世界里,Transformer 已经证明自己是理解语言的王者。那么在图像世界,我们是否也能有一种“通用架构”,让模型像“理解语言”一样理解图像呢?

这篇文章,我们同样从开发者熟悉的角度,讲清楚 CNN 和 ViT 的核心原理与区别,以及为什么 ViT 被称为“视觉的 BERT”,开启了图像建模的新时代

二、图像是怎么被“看懂”的?——介绍 CNN

想象你正在处理一张图片,比如一张猫的照片。你不是用人眼看,而是交给一个“滤镜系统”处理。

这时候,卷积核就像是一组特定用途的图像滤镜,比如:

  • 有些滤镜专门“强调边缘”;

  • 有些滤镜“只在看到竖线时有反应”;

  • 有些滤镜“喜欢曲线”或“角落状的区域”;

当你用这些滤镜一层层地扫描整张猫图时(如上图):

  • 第一层滤镜可能捕捉到了猫耳朵的轮廓、胡须的线条、眼睛的对比边缘;

  • 第二层把这些低级特征组合起来,形成“猫眼睛”或“猫耳朵区域”的高级特征;

  • 更深的层能捕捉出“这可能是一只猫”的抽象概念。

这个过程可以理解成是Conv2D和MaxPooling2D的堆叠

从优缺点上来看,CNN非常高效,部署成熟,以及“平移不变性”和“局部性”的特性,所以数据量不大也能训练出不错的模型。

但它也有明显局限:

  • 缺乏全局建模能力,无法直接理解图像中远距离的元素之间的关系(比如“天空”和“地面”的相对位置)

  • 架构复杂且难统一,不同任务需要设计不同网络结构(ResNet、EfficientNet 等)

三、ViT 的崛起:把图像变成 Token,统一进 Transformer

 

那有没有一种架构,既能保留 CNN 的特征提取能力,又能拥有更强的全局建模能力?

2020 年,Google 提出了 Vision Transformer(ViT),提出了一个惊人的想法:

    图像也可以像句子一样,切分为 Token,然后直接输入 Transformer。

如上图,Transformer中一个重要特性是注意力机制(self-attention),当前token跟其他每个token计算重要程度。远距离也可以很好捕捉

Bert、ChatGPT等现在主流的模型都是用到Transformer架构,那架构上也实现了统一

四、ViT如何实现分词

之前文章中,我们讲到文本首先要“分词”,更专业称呼为Tokenization。

那ViT是如何实现tokenizer的呢?——切成一个个patch

如下面九宫格,将原始图片分成的一个一个patch。而每个patch,等同于自然语言中的token。

原始图片

九宫格

铺平

针对这个“九宫格”进行铺平,就变成了自然语言中长度为9的概念。

五、ViT 的意义:视觉也能加入“大模型俱乐部”

ViT 的真正意义在于:它让图像建模也走向 Transformer 范式,从而进入大模型时代。

有了 ViT,我们可以:

  • 把图像和文本一起作为 token 输入 Transformer,实现图文统一理解

  • 用文本 prompt 控制视觉模型,发展多模态交互(LLaVA)

  • 将视觉编码结果作为语言模型的提示,让模型“看图说话”(Qwen-VL)

这些技术的基础,都是 ViT 将图像表示 token 化,并送入 Transformer 架构的能力。

六、总结

本篇粗略介绍了CNN和ViT这种更通用的“图像语言处理器”,即图像也能像语言一样,被统一处理。

后面,我们从更多案例出发,打下更多的认知基础。

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

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

相关文章

cocos creator使用jenkins打包微信小游戏,自动上传资源到cdn,windows版运行jenkins

cocos 版本2.4.11 在windows上jenkins的具体配置和部署,可参考上一篇文章cocos creator使用jenkins打包流程,打包webmobile_jenkins打包,发布,部署cocoscreator-CSDN博客 特别注意,windows上运行jenkins需要关闭windows自己的jenkins服务&a…

定时器的两种实现方式

1、基于优先级队列/堆 队列是先进先出,优先级队列是优先级越高就存放在队列之前,我们可以将过期时间越早设置为优先级越高,那么临近过期时间的任务就会在队列前面,距离过期时间越晚的任务就在队列后面。 可以分配一个线程&#…

[Java实战]Spring Boot整合MinIO:分布式文件存储与管理实战(三十)

[Java实战]Spring Boot整合MinIO:分布式文件存储与管理实战(三十) 一、MinIO简介与核心原理 MinIO 是一款高性能、开源的分布式对象存储系统,兼容 Amazon S3 API,适用于存储图片、视频、日志等非结构化数据。其核心特…

AI在人力资源领域的应用:把握时代浪潮

借鉴历史经验,引领技术变革 历史总是呈现出惊人的相似性。十年前,众多企业未能及时洞察移动技术与社交技术的潜在价值,迟迟没有将这些创新引入职场环境。随着时间推移,这些组织才意识到BYOD(自带设备办公)…

vr制作公司提供什么服务?

随着科技的迅猛进步,虚拟现实(Virtual Reality,简称VR)技术已经悄然渗透到我们的日常生活与工作中,成为推动数字化转型的重要力量。VR制作公司,作为前沿领域的探索者和实践者,以专业的技术和创新…

下一代电子电气架构(EEA)的关键技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

matlab慕课学习3.5

于20250520 3.5 用while 语句实现循环结构 3.5.1while语句 多用于循环次数不确定的情况,循环次数确定的时候用for更为方便。 3.5.2break语句和continue语句 break用来跳出循环体,结束整个循环。 continue用来结束本次循环,接着执行下一次…

Qt音视频开发过程中一个疑难杂症的解决方法/ffmpeg中采集本地音频设备无法触发超时回调

一、前言 最近在做实时音视频通话的项目中,遇到一个神奇的问题,那就是用ffmpeg采集本地音频设备,当音频设备拔掉后,采集过程会卡死在av_read_frame函数中,尽管设置了超时时间,也设置了超时回调interrupt_c…

PEFT库PromptTuningConfig 配置

PEFT库 PromptTuningConfig 配置 "Prompt Tuning"的参数高效微调 PromptTuningConfig 核心参数解析 1. task_type="CAUSAL_LM" 作用:指定任务类型为因果语言模型(Causal LM)。说明:因果语言模型从左到右生成文本(如GPT系列),这与任务需求匹配(模…

操作系统----软考中级软件工程师(自用学习笔记)

目录 1、计算机系统层次结构 2、程序顺序执行的特征 3、程序并发执行的特征 4、三态模型 5、同步与互斥 6、信号量机制 7、PV操作 8、死锁 9、进程资源图 10、死锁避免 11、线程 12、程序局部性原理 13、分页存储管理 14、单缓冲器 15、双缓冲区 16、磁盘调度算…

基于 Redis 实现短信验证码登录功能的完整方案

&#x1f9f1; 一、技术栈与依赖配置 使用 Spring Boot Redis 实现短信验证码登录&#xff0c;以下是推荐的 Maven 依赖&#xff1a; <dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><ar…

电平匹配电路

1、为什么要电平匹配? 现在很多SOC器件为了降低功耗,都把IO口的电平设计成了1.8V,核电压0.85V,当这种SOC做主平台时,在做接口设计需要格外关注电平的匹配。单板中经常需要将1.8V的电平转换成3.3V或者转成5V。如果没有注意到输入和输出信号之间的电平匹配,系统就无法正常…

JavaScript 日志和调试工具箱-logger2js

原创功能丰富的 JavaScript 日志和调试工具箱&#xff0c;设计这个工具时考虑到了多种实际开发中的需求。该工具不仅提供了高效强大的日志输出显示功能&#xff0c;还包含了界面风格配置、代码格式化、事件处理、性能测试、方法调用栈输出&#xff0c;右键菜单、控制台显示控制…

zData X zStorage 为什么采用全闪存架构而非混闪架构?

点击蓝字 关注我们 最近有用户问到 zData X 的存储底座 zStorage 分布式存储为什么采用的是全闪存架构而非混闪架构&#xff1f;主要原因还是在于全闪存架构在性能和可靠性方面具有更显著的优势。zData X 的上一代产品 zData 的早期版本也使用了SSD盘作为缓存的技术架构&#x…

使用SQLite Studio导出/导入SQL修复损坏的数据库

使用SQLite Studio导出/导入SQL修复损坏的数据库 使用Zotero时遇到了数据库损坏&#xff0c;在软件中寸步难行&#xff0c;遂尝试修复数据库。 一、SQLite Studio简介 SQLite Studio是一款专为SQLite数据库设计的免费开源工具&#xff0c;支持Windows/macOS/Linux。相较于其…

Unity3D仿星露谷物语开发46之种植/砍伐橡树

1、目标 种植一棵橡树&#xff0c;从种子变成大树。 然后可以使用斧头砍伐橡树。 2、删除totalGrowthDays字段 修改growthDays的含义&#xff0c;定义每个值为到达当前阶段的累加天数。此时最后一个阶段就是totalGrowthDays的含义。所以就可以删除totalGrowthDays字段。 &…

gRPC开发指南:Visual Studio 2022 + Vcpkg + Windows全流程配置

前言 gRPC作为Google开源的高性能RPC框架&#xff0c;在微服务架构中扮演着重要角色。本文将详细介绍在Windows平台下&#xff0c;使用Visual Studio 2022和Vcpkg进行gRPC开发的完整流程&#xff0c;包括环境配置、项目搭建、常见问题解决等实用内容。 环境准备 1. 安装必要组…

高密度服务器机柜散热方案:高风压风机在复杂风道中的关键作用与选型要点

随着云计算、人工智能等技术的飞速发展&#xff0c;数据中心内服务器机柜的集成度不断攀升&#xff0c;高密度部署成为常态。然而&#xff0c;高密度意味着单位空间内服务器数量剧增&#xff0c;发热量呈指数级上升&#xff0c;传统散热方案已难以满足需求。在复杂的机柜风道环…

框架之下再看HTTP请求对接后端method

在当今的软件开发中&#xff0c;各类框架如雨后春笋般不断涌现&#xff0c;极大地提升了开发效率。以 Java 开发为例&#xff0c;Spring 框架历经多次迭代演进&#xff0c;而 Spring Boot 更是将开发便捷性提升到了新高度。如今&#xff0c;开发者只需简单引入 Maven 包&#x…

【笔记】与PyCharm官方沟通解决开发环境问题

#工作记录 2025年5月20日 星期二 背景 在此前的笔记中&#xff0c;我们提到了向PyCharm官方反馈了几个关于Conda环境自动激活、远程解释器在社区版中的同步问题以及Shell脚本执行时遇到的问题。这些问题对日常开发流程产生了一定影响&#xff0c;因此决定联系官方支持寻求解…