1. 项目概述
在计算机视觉领域,视觉骨干网络(Vision Backbone)是各类视觉任务的基础架构。近年来,随着深度学习模型的快速发展,大多数视觉骨干网络都针对GPU、NPU等高并行化硬件进行了优化。然而,在实际应用场景中,特别是在嵌入式设备和边缘计算场景下,CPU仍然是广泛使用的计算平台。CPUBone项目正是为了解决这一痛点而诞生的。
1.1 核心问题分析
传统视觉骨干网络在CPU上运行效率低下的主要原因可以归结为以下几点:
-
并行度不匹配:现代GPU通常拥有数千个计算核心,而即使是高端CPU也仅有几十个物理核心。这种硬件特性的差异导致为GPU优化的高并行度模型在CPU上无法充分发挥性能。
-
计算模式差异:CPU更擅长处理串行和分支密集型的任务,而GPU则擅长处理数据并行的大规模矩阵运算。许多视觉骨干网络中的操作(如深度可分离卷积)虽然在GPU上效率很高,但在CPU上却表现不佳。
-
内存访问模式:CPU的缓存层次结构复杂,对内存访问模式非常敏感。许多为GPU设计的操作模式(如频繁的显存访问)在CPU上会导致严重的性能瓶颈。
提示:在实际应用中,不能简单地用MACs(乘加运算次数)来衡量模型在CPU上的效率,必须同时考虑硬件执行效率(MACpS,每秒处理的MAC数量)。
1.2 CPUBone的创新思路
CPUBone项目通过系统性的实验和分析,提出了针对CPU优化的视觉骨干网络设计原则:
-
避免使用深度卷积:虽然深度卷积的MACs较低,但在CPU上的MACpS也很低,实际效率并不理想。
-
合理使用分组卷积:将第一个卷积层的分组数设为2(groups=2),可以在保持较高MACpS的同时显著降低MACs。
-
优化卷积核尺寸:在特定情况下将3×3卷积核减小为2×2,可以进一步降低计算量而不显著影响硬件效率。
-
分层设计策略:在网络的不同阶段采用不同的优化策略,平衡计算效率和特征提取能力。
2. 关键技术解析
2.1 分组卷积的优化效果
分组卷积(Grouped Convolution)是CPUBone的核心技术之一。通过实验发现:
- 当设置groups=2时:
- GrMBConv的MACs减少
