欢迎关注『CVHub』官方微信公众号!

Title: SparseViT: Revisiting Activation Sparsity for
Efficient High-Resolution Vision Transformer

Paper: https://arxiv.org/pdf/2303.17605.pdf

导读

近年来,Transformer 架构在计算机视觉的各项任务中都表现出令人惊艳的性能。然而,相比 CNNs,该技术架构存在着大量的计算,尤其是对于高分辨率图像,一直无法在通用硬件上进行有效的部署。

基于此,本文介绍了一种名为 SparseViT 的技术,它可以减少基于窗口的视觉变换器 (vision Transformers, ViTs) 的计算复杂性。

SparseViT 通过重新考虑激活稀疏性来实现窗口激活修剪的实际加速。在这种方法下,通过对不同层分配不同的修剪比例,可以实现 50% 的延迟降低和 60% 的稀疏度。同时,SparseViT 还应用了进化搜索来有效地找到最优的层次稀疏配置。在单目 3D 目标检测、2D 实例分割和 2D 语义分割等任务中,SparseViT 相比密集的对应方法可以实现 1.5 倍、1.4 倍和 1.3 倍的加速,而且几乎没有精度损失。

创作背景

随着图像传感器的进步,高分辨率图像变得越来越容易获取,例如现在的手机可以拍摄1亿像素的照片。高分辨率图像能提供更多细节信息,使得神经网络模型能够学习到更丰富的视觉表示,从而实现更好的识别质量。但是,这也导致计算复杂度呈线性增长,使得它们在资源受限的应用程序中难以部署,例如移动视觉和自动驾驶。

对于这一问题,最简单也最常用的方法就是降低图像分辨率。 但这将使得模型丢失高分辨率传感器捕获的细节信息,尤其对于小物体检测和密集预测任务而言,这些信息的缺失将瓶颈模型的性能上限。

为此,研究人员提出了一种自然的想法,即跳过不重要区域的计算 (即激活稀疏化),以此降低计算量。 然而,激活稀疏性不能轻易转化为实际加速 CNNs 的通用硬件 (例如 GPU)。

最近,2D ViT 在不同的视觉感知任务上取得了巨大进展,例如图像分类、物体检测和语义分割。本文针对基于窗口的 ViTs 重新审视激活稀疏性,通过重新实现并在窗口级别上执行模型的 FFNsLNs 等层,从而实现了大约 60% 的窗口激活稀疏性和 50% 的延迟降低。

此外,考虑到不同层对效率和准确性的影响不同,本文提出了一种非均匀的层稀疏配置,利用进化搜索探索最佳的每层稀疏率,并使用稀疏感知适应性随机地在每次迭代中修剪不同的激活。SparseViT 在单目 3D 目标检测、2D 实例分割和 2D 语义分割任务中,分别比其密集对应方法快 1.5 倍、1.4 倍和 1.3 倍,而且几乎没有精度损失。

方法

回顾 Swin Transformer

Swin Transformer 使用多头自注意力 (MHSA) 提取非重叠图像窗口内的局部特征。该模型的设计遵循标准方法,包括层归一化 (LN)、MHSA 和应用于每个窗口的前馈层 (FFN)。

原始的 Swin Transformer 实现在窗口级别 (window level) 应用在 MHSA,而 FFNLN 应用于整个特征映射。这种操作不匹配需要在每个 MHSA 之前和之后进行额外的结构化处理,使得窗口修剪更加复杂,因为稀疏掩码必须从窗口级别映射到特征映射。

为了简化这个过程,本文修改了 FFNLN 的执行方式,使其也是以窗口为单位。这意味着所有操作都将在窗口级别进行,使得稀疏掩码的映射非常容易。

窗口激活修剪

本文将每个窗口的重要性定义为其 L2 激活大小,不同于其他基于学习的措施,这种方法引入的计算开销较小,在实践中效果也比较好。

窗口激活修剪过程如图2所示。给定激活稀疏比例,首先收集具有最高重要性得分的窗口,然后仅对这些选定的窗口应用 MHSAFFNLN,最后将输出散回 (scatter outputs back)。为了缓解粗粒度窗口修剪导致的信息损失,我们简单地复制未选中窗口的特征。这种方法不会带来额外的计算,但在保留信息方面非常有效,这对于像目标检测和语义分割这样的密集预测任务非常关键。

与传统的权重修剪不同,重要性得分是与输入相关的,需要在推断期间计算,这可能会增加延迟。为了减少这种开销,我们在每个阶段仅计算一次窗口重要性得分,并在该阶段的所有块中重复使用,摊销开销。这还确保了阶段内窗口排序保持一致。我们使用切片简化了收集操作,这不需要任何特征复制。

混合稀疏配置搜索

为了更好地平衡模型的精度和效率,研究人员提出了在模型不同层之间应用不同的剪枝率来实现混合稀疏性。然而,手动探索每个层的稀疏性可能会很耗时且容易出错。

为了解决这个问题,研究人员提出了一种工作流程来高效地搜索最佳混合稀疏性剪枝率配置。他们设计了搜索空间,采用了稀疏感知的适应方法和基于资源限制的搜索算法来找到最佳的混合稀疏性配置。最终,通过这种方法,他们得到了一种既能保证精度,又能获得更高效率的神经网络模型。

搜索空间

对于每个 Swin 块,本文允许从 {0%,10%,...,80%} 中选择稀疏度比率。每个 Swin 块包含两个 MHSAs一个有偏移窗口,另一个没有,它们将被赋予相同的稀疏度比率。

值得注意的是,每个阶段内的稀疏度比率是非递减的,这样可以确保剪枝后的窗口不会再次参与计算。

稀疏感知自适应

为了找到最优的混合稀疏配置,需要评估不同稀疏设置下模型的准确性。直接评估带有稀疏性的原始模型的准确性可能会产生不可靠的结果。

因此,本文提出了一种称为稀疏感知自适应 (sparsity-aware adaptation) 方法,该方法通过在每次迭代中随机采样层级激活稀疏性并相应地更新模型,以使原始模型适应带有稀疏性的情况。这样可以在不进行全面重新训练的情况下更准确地评估不同混合稀疏配置的性能。作者还指出,这种方法与 NAS 中的超网络训练不同,因为作者只是随机采样激活,而不是改变参数数量。

基于资源限制的搜索方法

先通过稀疏感知适应来准确评估模型的性能后,然后在指定的资源限制内搜索最佳的稀疏配置。

本文考虑了两种资源限制:与硬件无关的理论计算成本以及与硬件相关的测量延迟。为了进行稀疏搜索,采用了进化算法。首先,使用拒绝抽样,即重复抽样直到满足要求,从搜索空间中随机抽取 n 个网络来初始化种群,以确保每个候选者都符合指定的资源约束条件。

在每一代中,评估种群中的所有个体,并选择具有最高准确性的前 k k k 个候选者。然后通过 ( n / 2 ) (n/2) (n/2) 个突变和 ( n / 2 ) (n/2) (n/2) 个交叉生成下一代种群,使用拒绝抽样来满足硬资源限制。重复这个过程,从最后一个代中的种群中得到最佳配置。

基于最优稀疏性进行微调

针对搜索过程中得到的一系列固定稀疏度配置,使用微调算法进一步优化模型性能,直至收敛。

实验

SparseViT 实现了与 Swin-T 相同的精度,#MAC 低 1.8 倍,推理延迟快 1.5 倍。

在 512×512 到 640×640 的各种输入分辨率下,SparseViT 的计算量始终优于 baseline。可以发现,从 672×672 的高分辨率开始修剪激活比直接缩小输入分辨率更有效。

parseViT 提供了比 baseline 更好的精度-效率 trade-off。

在第一行,SparseViT 自动学习了物体的轮廓,如第三和第四张图所示,其中分别勾勒出计算机和运动员的轮廓。此外,在第二行,与前景对象对应的窗口没有被修剪掉。尽管是一个小物体,但最后一张图中的行人在整个执行过程中都得到了保留,这说明了 SparseViT 的有效性。

总结

本文重新探讨了激活稀疏性在基于窗口的 ViTs 上的应用,并提出了一种新的方法来利用它。本文引入了稀疏感知自适应,并采用进化搜索来有效地找到最佳的逐层稀疏配置。结果表明,SparseViT 在单目 3D 目标检测、2D 实例分割和 2D 语义分割中实现了 1.5 倍、1.4 倍和 1.3 倍的测量加速,同时几乎不损失精度。希望本文能够激发未来研究探索使用激活剪枝来实现更高效、同时保留高分辨率信息的方法。


如果您也对人工智能和计算机视觉全栈领域感兴趣,强烈推荐您关注有料、有趣、有爱的公众号『CVHub』,每日为大家带来精品原创、多领域、有深度的前沿科技论文解读及工业成熟解决方案!欢迎添加小编微信号: cv_huber,备注"CSDN",加入 CVHub 官方学术&技术交流群,一起探讨更多有趣的话题!

CVPR2023 | SparseViT:一种有效处理高分辨率图像的Transformer相关推荐

  1. 科学松鼠会压缩感知科普文章两篇:“压缩感知与单像素相机(陶哲轩)”“填补空白:用数学方法将低分辨率图像变成高分辨率图像(Jordan Ellenberg)

    题目:科学松鼠会压缩感知科普文章两篇:"压缩感知与单像素相机(陶哲轩)""填补空白:用数学方法将低分辨率图像变成高分辨率图像(Jordan Ellenberg)" ...

  2. Php 360度跟随图,一种360度全景图像无缝拼接的方法与流程

    本发明涉及一种图像拼接方法,特别是一种360度全景图像无缝拼接的方法,本发明属于多传感器图像拼接技术领域. 背景技术: 图像拼接是将在同一场景下拍摄的多个图像拼接成具有宽视场的高分辨率图像的技术.图像 ...

  3. 3DMAX渲染高分辨率图像教程

    问题:    尝试渲染高分辨率图像时收到错误消息. 解决方案: 使用 3dMax 可以渲染的最高分辨率图像受限于系统的配置,并会因您的场景要求而有所不同.如果您试图渲染的高分辨率图像超出系统处理能力, ...

  4. 去毛边 叶片图像_一种复杂背景叶片图像的全自动分割方法与流程

    本发明涉及图像处理领域,更具体地,涉及一种复杂背景叶片图像的全自动分割方法. 背景技术: 药用植物,是中药材的主要来源,是中医药治病救人的物质基础.然而,近年来,由于生态环境的恶化,药用植物资源显著萎 ...

  5. matlab中采集图片的光照不均匀,一种光照不均匀图像的处理方法及系统与流程

    本方面涉及图像处理技术领域,具体地说是一种光照不均匀图像的处理方法及系统. 背景技术: 人体横断面彩色图像在采集的过程中,由于环境光照的变化,存在光照不均匀的情况,直接影响了图像的质量,进而影响图像的 ...

  6. ECCV 2020 | PHOSA:一种基于单目图像的人-物重建方法

    项目.论文地址:在公众号「3D视觉工坊」,后台回复「PHOSA」,即可直接下载. 概述 作者提出了一种能够推断出人类和物体的形状和空间排列的方法,只需要一张在自然环境中捕捉的图像,且不需要任何带有3D ...

  7. 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果(转)

    源:十三种基于直方图的图像全局二值化算法原理.实现.代码及效果.

  8. 一种改进的高光谱图像CEM目标检测算法

    一种改进的高光谱图像CEM目标检测算法 人工智能技术与咨询 来源:< 应用物理> ,作者付铜铜等 关键词: 高光谱图像:光谱重排:CEM算法:目标检测: 摘要: 约束能量最小化(Const ...

  9. c语言程序降低图像分辨率,减少OpenCV读取高分辨率图像的时间示例

    意义 目前无论是工业上还是生活中相机的分辨率也会越来越高,无论是学术上还是工业上使用OpenCV进行图像处理,特别是大批量处理的时候,读取一张高分辨率图像到内存中的时间减少的话对大批量的图像处理的效率 ...

最新文章

  1. 2020年Q1微信公众号文章列表
  2. 牛客IOI周赛19-普及组 C.小y的旅行
  3. Angular2 - [innerHTML] pipe(把字符串里的 /n 替换成 <br/>)
  4. ASP.NET MVC 笔记
  5. vivi eboot wince 烧写
  6. Socket的3次握手链接与4次断开握手
  7. 汇编语言---计算表达式的值
  8. ELK学习笔记之Elasticsearch启动常见错误
  9. ssm项目打包到云服务器,ssm项目打包到云服务器
  10. 如何利用工业大数据降本增效
  11. python中的数据存储-json
  12. .net core linux 界面,C# dotnet core + AvaloniaUI 开发桌面软件,hello world
  13. 压缩文件解压密码破解之fcrackzip
  14. 一位医疗 AI 创业者的自述:这个行业到底需要什么样的产品?
  15. 《 Python List列表全实例详解系列(三)》——列表添加元素(4种方法)
  16. [Delaunay Triangle] [图形学] Delaunay Triangles最易懂的实现方案
  17. ant design vue 的 description组件中 label 默认样式的更改
  18. 国外.net开源程序
  19. xml 学习(教训啊,还是要实战代码
  20. 大学计算机基础试讲,试讲教案试讲教师魏绪建课程名称大学计算机基础讲授章节第八章.doc...

热门文章

  1. Enterprise Architect 7.0入门教程(目前最详细的中文教程)
  2. QT学习总结之QObject详解
  3. Android基础(二) 文件的读写及数据存储
  4. OpenCV-Python调整图像对比度和带文字白纸照片背景漂白方法
  5. 参赛指南 | 教育部白名单竞赛少年硅谷 AI算法竞技赛
  6. 欧冠淘汰又见阿贾克斯
  7. ie 10中flash动画只有声音没有画面解决办法
  8. cmder安装及部分问题修复
  9. 白鹭小游戏-成语挑战-加载页面
  10. 在欧几里德几何中,nn 边形的内角和是 (n-2)\times 180(n−2)×180°。