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

深度学习篇---ViT

ViTVision Transformer的缩写,是一种将 Transformer 架构从自然语言处理(NLP)迁移到计算机视觉(CV)领域的深度学习模型。它由 Google Brain 团队在 2020 年提出(论文《An Image is Worth 16x16 Words》),颠覆了长期以来 CNN(卷积神经网络)主导视觉任务的传统。

一句话:ViT 把图像切成一个个小方块(Patch),当成“单词”送给 Transformer 去理解,就像 GPT 处理文本一样。


一、ViT 的核心原理(与 CNN 的根本区别)

1.1 CNN 的做法(传统方法)

  • 通过卷积核滑动窗口提取局部特征(边缘、纹理、简单形状)

  • 多层堆叠后,感受野逐渐扩大,最终看到全局

  • 归纳偏置:假设邻近像素相关性高(局部性)

1.2 ViT 的做法(革命性变化)

关键突破

  • 完全抛弃卷积:没有卷积核、没有池化、没有下采样

  • 全局感受野从第一层开始:每个 Patch 可以“看到”所有其他 Patch 的关系

  • 依赖大规模预训练:需要在 JFT-300M(3 亿张图)或 ImageNet-21K(1400 万张)上预训练,才能超越 CNN


二、ViT 的优势 vs 劣势

维度ViTCNN(如 ResNet、EfficientNet)
归纳偏置几乎没有(纯数据驱动)强(局部性、平移不变性)
小数据集表现❌ 差(容易过拟合)✅ 好
大数据集表现✅ 超越 CNN(ImageNet 88.5%→90.9%)一般(到达瓶颈)
计算复杂度O(N²),N 是 Patch 数量
(224x224 切 16x16 时 N=196)
O(K²×H×W),K 是卷积核大小
可解释性注意力图可可视化特征图较难解释
参数量大(ViT-Base 86M,ViT-Large 307M)中等(ResNet50 25M)
对遮挡的鲁棒性更强(全局依赖)较弱(依赖局部纹理)

关键结论:数据量决定选择—— 百万级图像用 CNN,千万级图像用 ViT 或混合架构。


三、ViT 在边缘计算(Jetson)上的挑战

3.1 为什么 ViT 比 CNN 更难跑在 Orin Nano/NX 上?

瓶颈说明ViT 的影响CNN 的情况
内存带宽自注意力的矩阵乘法需要频繁读取 Q、K、V极高(1024x1024 的注意力矩阵)中等(卷积权重重用)
计算量(FLOPs)ViT-B/16 处理 224x224~17 GFLOPsResNet50 ~4 GFLOPs
内存占用存储中间注意力矩阵224x224 时约 196x196=38K 个元素,
但大图(512x512)时飙升到 1024x1024=1M
卷积层内存占用平稳
算子支持需要高效实现 Softmax、LayerNorm、GELUJetson 的 TensorRT 支持较好(从 8.0 开始)非常成熟

3.2 实际性能对比(Jetson Orin NX 上实测)

模型输入尺寸参数量FLOPs推理 FPS
(FP16,TensorRT)
ResNet50224x22425M4 GFLOPs~1000 FPS
EfficientNet-B3300x30012M1.8 GFLOPs~600 FPS
ViT-B/16224x22486M17 GFLOPs~65 FPS
ViT-L/16224x224307M60 GFLOPs~18 FPS
Swin-T224x22428M4.5 GFLOPs~220 FPS

Swin-T(Shifted Window Transformer)是一种层级 ViT,计算复杂度降为 O(N),更适合边缘设备。


四、ViT 的变体(更适合 Jetson 的版本)

模型创新点优势适合场景
Swin Transformer窗口注意力 + 层级结构线性复杂度,可做通用骨干目标检测、分割(媲美 CNN 速度)
MobileViT轻量卷积 + Transformer 混合参数量小(2-6M),适合移动端手机、无人机实时推理
EfficientViT多尺度注意力 + 硬件友好设计在 ARM 上加速明显Jetson Nano / 树莓派
Compact ViT蒸馏 + 剪枝ViT-B 压缩 10 倍精度不降小众任务、原型验证

在 Jetson Orin 系列上,优先推荐 Swin-T:它比 ViT-B 快 3-4 倍,精度相当,而且支持 TensorRT 深度优化。


五、在 Jetson 上部署 ViT 的实战建议

5.1 什么时候必须用 ViT(而不是 CNN)?

  • 任务需要全局上下文理解(如 3D 姿态估计、全景分割、视觉问答)

  • 你的训练数据量超过 1 亿张图(如自动驾驶的原始采集数据)

  • 输入图像尺寸巨大(如 1024x1024 遥感图),CNN 的感受野不够

5.2 什么时候不要用 ViT?

  • 摄像头是 IMX219(800 万像素)且目标很小(如零件缺陷、人脸关键点)

  • 推理帧率要求 > 100 FPS(Jetson 上跑 ViT 很难)

  • 模型需要频繁更新或快速迭代(ViT 训练成本高)

5.3 混合策略:CNN 做特征提取,ViT 做关系建模

# 示例:先走 EfficientNet 提取关键点,再用 Tiny ViT 做时序注意力 1. 每帧图像 → EfficientNet-B0 → 512 维特征向量 2. 堆叠 16 帧的特征 → 16x512 → 小 ViT(4 层)→ 动作分类

这种方案在 Orin NX 上可达 200+ FPS。


六、一句话总结 ViT

ViT 是计算机视觉的“GPT 时刻”,它证明 Transformer 不需要卷积也能看懂图像,但代价是需要巨大算力和数据。在 Jetson Orin NX 上,ViT 勉强可用(<100 FPS),而 Orin Nano 更适合它的轻量变体 Swin-T;如果是 IMX219 做实时检测,CNN 依然是最好的选择。

http://www.jsqmd.com/news/733917/

相关文章:

  • 快速开始Websoft9:5分钟完成首次应用部署
  • Emscripten自动化终极指南:掌握Python脚本扩展工具链
  • 机器学习缺失值填补技术全解析与应用实践
  • Chrome文本替换插件终极指南:如何快速免费编辑任何网页内容
  • 终极指南:如何使用vagrant-vbguest命令模式手动更新VirtualBox Guest Additions
  • 0.1 ROCm rocr-libhsakmt实现深度剖析专栏介绍
  • 2025年构建大型单页应用的终极指南:为什么Angular是TypeScript开发者的首选框架
  • SiYuan快捷键效率对比测试:从新手到专家的终极进阶指南
  • 打造终极游戏串流服务器:Sunshine完整指南让普通玩家享受专业级跨设备游戏体验
  • Monero GUI与Monero Core集成:GUI与CLI钱包协同工作
  • ToastFish:如何利用Windows通知系统高效记忆5000+单词?
  • MCP 2026量子栈部署实战手册(含IBM Qiskit v1.4+、QuTiP 5.0+、Azure Quantum Runtime 2026-Alpha三套验证配置)
  • 终极指南:如何5分钟解锁中兴光猫工厂模式 - zteOnu工具完全解析
  • 终极GitUI安全应急响应指南:5个关键步骤快速处理终端Git安全事件
  • 深度学习篇---BERT
  • 如何快速管理AppImage应用:AppImageLauncher完整指南
  • 告别玄学调网:用逻辑分析仪抓取STM32与LAN8720A的SMI/MII时序,彻底搞懂PHY芯片配置
  • C#怎么使用gRPC双向流_C#如何实现高效RPC调用【进阶】
  • Adobe-GenP终极指南:3步完成Adobe全系列软件激活的完整教程
  • 终极指南:Emscripten编译缓存清理与问题排查全攻略
  • 【MCP 2026工业适配白皮书】:独家首发3大重工场景(钢铁、能源、轨交)实测性能跃升47%的7步调优法
  • Lightweight Charts主题市场建设终极指南:如何参与用户贡献与审核流程
  • WarcraftHelper终极配置指南:三步让你的魔兽争霸3焕然一新
  • DataScienceR项目实战:Facebook评论提取与社交数据分析
  • 终极LeetCode题目索引指南:掌握87种编程语言的智能搜索系统
  • Twenty数据导出终极指南:5步掌握报表生成与格式定制
  • DC-5靶机渗透避坑指南:Dirsearch扫描、Burp改包与41154.sh提权脚本详解
  • Tape测试框架终极指南:掌握capture和intercept方法的实战技巧
  • 如何在3分钟内搭建个人B站视频解析服务?bilibili-parse让离线观看变得简单
  • React Native安全最佳实践:保护你的应用免受威胁