WACV 2024 | SBCFormer: 面向端CPU设备的高效神经网络设计典范

标题:《SBCFormer: Lightweight Network Capable of Full-size ImageNet Classificationat 1 FPS on Single Board Computers》

论文:arxiv.org/ftp/arxiv/p...

源码:github.com/xyongLu/SBC...

导读

本文的核心问题设计一个轻量化的骨干网络在单板计算机(SBCs)上实现高准确度和快速计算的视觉任务。虽然此前我们为大家介绍了好几个轻量化的网络,但大都是面向移动端,如IPhone等智能手机。然而,对于 SBCs 这类低端 CPU 的设备,目前尚未有专门的网络。为了解决这一问题,本文提出了一种基于 CNN-ViT 混合架构,名为 SBCFormer 新颖视觉骨干网络。

SBCs 通常在农业、渔业和畜牧管理等领域中被广泛应用,这些应用可能不需要每秒处理大量图像帧。传统上,轻量级模型如 MobileNet 或大家更熟悉的 YOLO 在这些应用中表现不俗,但它们主要用于相机配备的SBCs。SBCFormer 试图填补在轻量级网络发展中被低端处理器所忽视的空白。

关键问题在于,低端处理器的硬件限制了 Transformer 中自注意力机制的应用。同时,在低端 CPU 上使用注意力机制面临另一个挑战,即高分辨率的特征图需要大量的计算资源,如果粗暴降低它们的分辨率则会导致丢失局部图像细节,从而影响到最终的精度。为了解决这个问题,SBCFormer 中引入了一种架构设计,取得了在Raspberry Pi 4 Model B中的ARM-Cortex A72 CPU上准确度和速度之间的最佳平衡。

背景

借着今天这篇文章,我们一起梳理下轻量级神经网络架构的发展脉络,感兴趣的小伙伴也可自行收藏。

鉴于深度学习在视觉应用中被广泛应用,人们对高效神经网络设计的需求逐渐增加,推动了轻量化网络的发展。首先,我们看到了对纯 CNN 架构的改进。

为移动设备设计的卷积网络

早些时候,研究人员致力于提高卷积运算的计算效率。这个时期,SqueezeNetMobileNet家族是两大代表作品,它们分别通过引入深度可分离卷积分组卷积 来降低标准卷积层的昂贵计算成本,以适应边缘设备的资源约束。此后,MobileNetV2在此基础上引入了反向残差块,进一步优化设计。因此,SBCFormer中采用了这一块作为卷积操作的主要构建单元。

对 CNN 架构的高效设计

另一种方法是对 CNN 架构进行高效设计,如Inception等引入1x1卷积及1xnnx1的分解。此外,一些经典的轻量级模型,包括ShuffleNetv1GhostNetMobileNeXtEfficientNetTinyNet等也被陆续提出。这些模型的特点是它们可以在每一层捕捉图像的局部空间相关性,但无法考虑全局交互。然而,对于标准大小的图像,使用卷积进行计算在CPU上可能变得计算昂贵,因为它需要大规模的矩阵乘法。这导致了大家对 Vision Transformer, ViT 的关注。

ViT 的到来

ViT 引入了一种新的思路,即使用自注意力机制 实现全局交互,而不仅仅是局部空间相关性。它通过将图像拆分为一系列 Token 并引入自注意机制,有效地在整个图像范围内捕捉信息。然而,在低端处理器上使用 ViT 的挑战在于,自注意力机制的计算复杂度与令牌数量的平方成正比。SBCFormer 的创新之处在于通过引入双流结构,巧妙地平衡了注意力机制的计算效率和局部图像信息的保留。这使得在低端处理器上实现高准确度和适当推理速度成为可能。

从 ViT 到效率优化

前面提到,ViT 及其相关架构凭借自注意力机制和大规模图像数据集在各种视觉识别任务中取得了领先的推理准确度。然而,为了充分发挥它们的潜力,ViT 通常需要大量的计算和内存资源,这限制了它们在资源有限的边缘设备上的部署。为了提高 ViT 的效率,一系列研究聚焦于不同的角度进行改进。

首先,受到卷积架构中层次设计的启发,一些工作为 ViT 开发了新的架构。神经架构搜索方法也被用于优化 ViT 的架构。为了降低 ViT 的计算复杂性,有人提出了高效的自注意力机制,而其他人则关注于利用新的参数效率策略。随后的研究表明,在 Transformer 块中加入卷积可以提高 ViT 模型的性能和效率。

CNN-ViT 的混合架构

例如,LeViT 重新引入了卷积干扰层,以学习低分辨率特征,而不是使用ViT中的分块干扰层。EdgeViT 引入了 Local-Global-Local 块以更好地整合自注意力和卷积,使模型能够捕捉不同范围的空间令牌并在它们之间交换信息。MobileFormer 并行化 MobileNet 和 Transformer,以编码局部和全局特征,并通过双向桥接融合两个分支。MobileViT 则将Transformer块视为卷积,并开发了 MobileViT 块,以有效学习局部和全局信息。最后,EfficientFormer 采用混合方法,结合卷积层和自注意力层,实现准确性和效率之间的平衡。

尽管在为移动设备开发混合模型方面有了一定的进展,但许多研究并未将延迟(即推理时间)作为评估效率的主要指标,同时,这些工作也往往容易忽略低端CPU,将目标限制在智能手机的CPU/NPU和最多是英特尔CPU上。例如,LeViT 是在ARM Graviton 2上评估的,但该处理器却是专为云服务器设计的。

方法

如上所述,本文的目标是开发一种对低端 CPU 友好的 ViT-CNN 混合网络,实现测试时间延迟和推理准确度之间更好的权衡。下面介绍下具体方法。

设计原则

首先为大家梳理下SBCFormer的整体网络架构设计理念,以下是示意图:

  1. 初始阶段: 使用一组标准卷积层,将输入图像转换为特征图,而不是采用ViT中的线性映射方式。这有助于在较低计算成本下捕捉图像的局部信息。这一部分由三个卷积核为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 3 × 3 3 \times 3 </math>3×3,步长为2的卷积层。

  2. 主干部分: 将网络划分为多个阶段,每个阶段的特征图尺寸逐渐减小,形成金字塔结构。这种设计有助于减少计算复杂度,当然也是很常规的形式。

  3. Transformer注意力机制的优化: 由于注意力机制的计算复杂度与特征图的大小呈二次增长,为了平衡计算效率和全局信息捕捉,SCBFormer中采用了沙漏设计。即先将输入特征图缩小至较小的尺寸(7 × 7),应用注意力模块,然后再将其放大至原始大小,从而在整个图像范围内聚合全局信息。

  4. 局部和全局信息融合: 为了防止由于特征图缩小而导致的局部信息丢失,引入了块结构,其中包含两个并行流。一个流维持局部特征图的原始大小,不进行注意力操作;另一个流采用沙漏设计的注意力机制,以同时学习局部和全局信息。两个流的输出在块内合并,传递到下一个阶段。

  5. 特征表示能力的补偿: 为了弥补沙漏设计可能导致的特征表示能力的损失,引入了修改后的注意力机制,以更有效地捕捉特征之间的关系。

整个设计旨在在低端CPU上实现高准确度和适当的推理速度,通过合理的注意力机制、金字塔结构和局部全局信息的融合,取得了SBCFormerRaspberry Pi 4 Model B上的优越性能。

SBCFormer 组件

  1. 初始块处理: 块的开始包括 <math xmlns="http://www.w3.org/1998/Math/MathML"> m 1 m_{1} </math>m1 个连续的反向残差块(Inverted Residual blocks)。后续使用带有ReLU激活函数的变体,包括逐点卷积、GeLU激活函数和 <math xmlns="http://www.w3.org/1998/Math/MathML"> 3 × 3 3 \times 3 </math>3×3滤波器的深度卷积。
  2. 局部和全局分支: 更新后的特征分别传递到两个不同的分支,即局部和全局流。对于局部流,作为残差直接传递到块的末尾。对于全局流,输入特征首先通过平均池化层缩小分辨率,实验中设为7×7。缩小的特征图然后传递到一个包含两个连续的 InvRes 块,图中表示为 'Mixer',紧随其后是一个堆叠的注意力块,标记为 'MAttn'。然后通过上采样和卷积操作得到输出特征图。
  3. 特征融合: 在块的最后部分,局部流特征和全局流特征被融合以获得新的特征图。首先,这里通过对输入进行投影得到一个权重图,,然后对其进行 Sigmoid 激活。接着,将权重图与输入相乘,并在通道维度上与全局流输出特征拼接。最后,将融合后的特征通过另一个投影块,将通道数减半,最终得到块的输出。

改进的注意力机制

上述的双流设计可以有效弥补由提出的沙漏注意力计算引起的局部信息丢失。然而,由于注意力操作在一个非常低分辨率(或等效地说,小尺寸)的特征图上运行,注意力计算本身必须失去其表征能力。为了弥补这种损失,作者对自注意力机制进行了一些修改,参考下图:

其核心思想是利用 CNN 对注意力输入执行的标准计算元组,具体包括一个3×3(深度)卷积、一个GeLU激活函数和批归一化。由于值(value)是注意力输出的基础,作者将该元组应用于值。其目标是通过促进输入特征图中的空间信息聚合来增强表示能力,同时减少训练难度。为了抵消计算成本的增加,文中取消了应用于查询和键的独立线性变换,而是对所有三个组件应用相同的逐点卷积。(对细节感兴趣可以看下源码)

实验

总结

本文提出了一种名为SBCFormer的新型深度网络架构,旨在在低端CPU上实现图像分类任务中准确度和计算速度的良好平衡。通过采用CNN-ViT混合结构,SBCFormer利用Transformer的注意力机制在单板计算机上实现了高精度和快速计算,特别适用于智能农业和畜牧管理等领域。然而,研究的局限性在于实验选择了特定的处理器,并以推理延迟为主要度量标准,这可能在不同环境下产生不同结果。因此,需要在更广泛的硬件和软件配置中进行进一步验证,以确保SBCFormer的性能鲁棒性和可扩展性。

相关推荐
希望有朝一日能如愿以偿27 分钟前
力扣题解(飞机座位分配概率)
算法·leetcode·职场和发展
丶Darling.39 分钟前
代码随想录 | Day26 | 二叉树:二叉搜索树中的插入操作&&删除二叉搜索树中的节点&&修剪二叉搜索树
开发语言·数据结构·c++·笔记·学习·算法
JustCouvrir42 分钟前
代码随想录算法训练营Day15
算法
小小工匠1 小时前
加密与安全_HOTP一次性密码生成算法
算法·安全·htop·一次性密码
中文英文-我选中文1 小时前
排序算法的理解
算法·排序算法
我明天再来学Web渗透1 小时前
【hot100-java】【二叉树的层序遍历】
java·开发语言·数据库·sql·算法·排序算法
数据分析螺丝钉2 小时前
力扣第240题“搜索二维矩阵 II”
经验分享·python·算法·leetcode·面试
no_play_no_games2 小时前
「3.3」虫洞 Wormholes
数据结构·c++·算法·图论
五味香2 小时前
C++学习,信号处理
android·c语言·开发语言·c++·学习·算法·信号处理
毕小宝3 小时前
逻辑回归(下): Sigmoid 函数的发展历史
算法·机器学习·逻辑回归