当前位置: 首页 > article >正文

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

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

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

在 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.lryc.cn/news/2382130.html

相关文章:

  • cocos creator使用jenkins打包微信小游戏,自动上传资源到cdn,windows版运行jenkins
  • 定时器的两种实现方式
  • Python、Pytorch、TensorFlow、Anconda、PySide、Jupyter
  • [Java实战]Spring Boot整合MinIO:分布式文件存储与管理实战(三十)
  • MacBook Air A2179(Intel版)安装macOS Catalina所需时间
  • AI在人力资源领域的应用:把握时代浪潮
  • 【VxWorks 实时操作系统(RTOS)】常用函数汇总
  • vr制作公司提供什么服务?
  • 下一代电子电气架构(EEA)的关键技术
  • matlab慕课学习3.5
  • 大语言模型(LLM)如何通过“思考时间”(即推理时的计算资源)提升推理能力
  • Ollama 如何在显存资源有限的情况下合理分配给不同的服务?
  • Qt音视频开发过程中一个疑难杂症的解决方法/ffmpeg中采集本地音频设备无法触发超时回调
  • 基于注意力机制与iRMB模块的YOLOv11改进模型—高效轻量目标检测新范式
  • PEFT库PromptTuningConfig 配置
  • 操作系统----软考中级软件工程师(自用学习笔记)
  • SQL 多表关联与分组聚合:解密答题正确率分析
  • 基于 Redis 实现短信验证码登录功能的完整方案
  • 电平匹配电路
  • JavaScript 日志和调试工具箱-logger2js
  • GitHub 自动认证教程
  • zData X zStorage 为什么采用全闪存架构而非混闪架构?
  • 鸿蒙OSUniApp 实现精美的轮播图组件#三方框架 #Uniapp
  • 解决git中断显示中文为八进制编码问题
  • SQL次日留存率计算精讲:自连接与多字段去重的深度应用
  • 使用SQLite Studio导出/导入SQL修复损坏的数据库
  • LSTM-Attention混合模型:美债危机与黄金对冲效率研究
  • 了解 DDD 吗?DDD 和 MVC 的区别是什么?
  • Unity3D仿星露谷物语开发46之种植/砍伐橡树
  • STM32外设应用详解——从基础到高级应用的全面指南