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

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.xdnf.cn/news/565399.html

相关文章:

  • 【npm】npm命令大全
  • C#开发利器:SharpBoxesCore全解析
  • 智能门锁为什么需要做欧盟网络安全 EN18031 标准检测认证
  • osgEarth中视角由跟随模式切换到漫游模式后没有鼠标拖拽功能问题分析及解决方法
  • CICD遇到npm error code EINTEGRITY的问题
  • Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT=0x90的一个例子
  • SQL语句-常用版
  • Python学习——执行python时,键盘按下ctrl+c,退出程序
  • 系分论文《论软件系统安全分析和应用》
  • 如何使用deepseek帮助自己的工作
  • Dynamics 365 Business Central Azure application registration
  • 【泛微系统】后端开发Action常用方法
  • 新浪、京东golang一面整理
  • 大模型微调与高效训练
  • 网络安全-等级保护(等保) 2-0 等级保护制度现行技术标准
  • Debian重装系统后
  • JS进阶学习04
  • 红蓝对抗中的网络安全设备操作手册
  • 算法竞赛板子
  • 强化学习鱼书(7)——神经网络和Q学习
  • 探究国际数字影像产业园人才培育高地的建设成效​
  • vue3+uniapp中使用高德地图实现撒点效果
  • Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中
  • 双检锁(Double-Checked Locking)单例模式
  • Axure应用交互设计:动态面板嵌套实现超强体验感菜单表头
  • Jenkins (七) - Docker Harbor
  • DeepSeek赋能智能家居:构建高智能、低延迟的物联网生态
  • 使用Starrocks制作拉链表
  • Typescript总结篇——配置TS、基础知识(类型、接口、类型别名、泛型、extendsinfer关键字)
  • OOP和软件设计中的五大核心设计原则——SOLID原则