https://blog.tensorflowcn.cn/2018/09/achieving-power-efficient-on-device-image-recognition-qualcomm.html
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoKui5NR0OYyIqj1hE3AklCWuG_S0Htr_JXJHgPCODNiY8cjrtsp6jd0upLNe4oWryCoHh6j8Xqaly975EKrJmFrpGUZrGZ9ZLsfQWcjaERlttUt2ReJ1ItxzTThucype31vbyNkZ7C0g/s1600/0_gPtNdC7IRMmVqTAO.png
高通科技的陈峰、Terry Sheng、Jay Zhuo、Zhiyu Liang、Parker Zhang 和梁申撰写的一篇客座文章
IEEE LPIRC 挑战赛
The
Low-Power Image Recognition Challenge (LPIRC) is an annual
competition that evaluates computer vision technologies by accuracy, execution time, and energy consumption. Maximizing the image classification accuracy within a time limit of 10 minutes for the processing of 20,000 images on a Pixel 2 smartphone, which is powered by
Qualcomm Snapdragon 835 Mobile Platform, is the goal of the track 1 challenge, one of the three tracks in the competition that are sponsored by Google and Facebook this year. The competition uses a large dataset that consists of about 1.2M JPEG images cross 1000 different categories as the training data, and a holdout image set as the testing data.
这场公开竞赛的驱动力是现实世界对能够在移动设备上实时运行的准确图像分类神经网络模型的迫切需求。除了准确性之外,计算效率在电池供电的设备上至关重要。在比赛中,我们的团队凭借量化友好的 MobileNet V2 架构和先进的后量化方案,在速度和准确性上取得了第一名。我们通过插入带有计算的最小值和最大值的 FakeQuantization 节点,修改了 TensorFlow 中的图,并使用 TensorFlow Lite 将图转换为 .tflite 以便在硬件上部署。
|
高通加拿大公司的团队:Parker Zhang、梁申、陈峰、Terry Sheng、Jay Zhuo 和 Zhiyu Liang。 |
我们的模型在识别 20,000 张图像时取得了最高的准确性,单个 ARM CPU 上的推理时间为 28 毫秒。
“这场挑战赛完美地契合了我们的 AI 战略,”高通科技公司工程副总裁 Mickey Aleksic 表示。“赢得这场挑战赛将极大地认可高通科技在机器学习方面发挥的关键作用,并使设备端 AI 无处不在。”要了解有关我们 AI 研究的更多信息,请
点击此处。
实现闪电般的设备端图像识别
在边缘设备上实现准确、快速的图像识别需要几个步骤。
- 创建并训练一个神经网络模型,以浮点形式识别和分类图像。
- 将浮点模型转换为定点模型,该模型可以在边缘设备上高效运行,而不会出现延迟和准确性问题。
我们团队的模型基于
MobileNet v2,但经过修改,使其“量化友好”。尽管 Google 的 MobileNet 模型由于使用可分离卷积成功地减小了参数大小并缩短了计算延迟,但直接
量化一个预先训练的 MobileNet v2 模型会导致准确性下降。该团队分析并确定了这种可分离卷积网络中由于量化导致准确性下降的根本原因,并通过不使用量化感知重新训练来解决了这个问题。使用
量化感知训练,可以获得良好的准确性,而我们的方法是一种替代方法,它修改网络架构以解决量化问题,而无需重新训练。另一种更端到端的方案是使用
Learn2Compress,Google 的 ML 框架,用于直接从头开始训练高效的设备端模型,或通过优化多个网络架构并将量化与蒸馏、剪枝和联合训练等其他技术结合起来,从现有 TensorFlow 模型中训练高效的设备端模型。
模型架构
在可分离卷积中,深度卷积在每个通道上独立应用。然而,用于权重量化的最小值和最大值是从所有通道中共同获取的。一个通道中的异常值可能会由于数据范围扩大而导致整个模型的量化损失。如果没有跨不同通道的数据计算,深度卷积可能会容易产生一个通道中的权重全为零的值 - 这在 MobileNet v1 和 v2 模型中都很常见。一个通道中的全零值意味着方差很小。在深度卷积之后直接应用批处理归一化变换时,该特定通道将预期具有较大的“比例”值。这会损害整个模型的表示能力。
作为解决方案,我们的团队提出了一种有效的量化友好可分离卷积架构,其中深度卷积层和点态卷积层之间的非线性操作(批处理归一化和 ReLU6)都被移除,让网络学习适当的权重以直接处理批处理归一化变换。此外,ReLU6 在所有点态卷积层中都被替换为 ReLU。从 MobileNet v1 和 v2 模型中的各种实验来看,这种架构在 8 位量化流水线中显示出显著的准确性提升。
后量化技术
一旦模型结构定义好,就可以在数据集上训练一个浮点模型。在后量化步骤中,模型会针对一系列不同的输入运行,从训练数据中的每个类别中取出一张图像,以收集最小值和最大值以及每层输出的数据直方图分布。在贪婪搜索期间,选择最优的“步长”和“偏移”的值(分别用 ∆ 和 表示),以最大程度地减少量化损失和饱和损失的总和,用于线性量化。根据计算的最小值和最大值范围,TensorFlow Lite 提供了一条将图模型转换为 .tflite 模型的路径,该模型可以部署在边缘设备上。
|
高通科技公司的 Ning Bi(上图,右中)代表团队接受了该奖项。 |
结论
将计算迁移到 8 位,同时保持高水平的准确性,是模型在边缘设备上快速高效运行的关键步骤。我们的团队发现了量化问题,分析并确定了根本原因,并解决了它。然后,我们将我们的发现应用于图像分类挑战赛,并见证了我们的理论工作变为现实。您可以在我们发表的论文中了解更多信息,论文标题为“用于 MobileNet 的量化友好可分离卷积架构”(
https://arxiv.org/abs/1803.08607)。
高通骁龙是高通科技公司及其子公司产品的商标。