移动设备上的实时深度学习

简介:

2017年,在移动应用的深度学习方面取得了一些重大进展。2017年4月,谷歌发布了轻量级神经网络MobileNets。2017年6月,苹果公司发布了Core ML,支持在移动设备上运行机器学习模型。除此之外,最近发布的一些高端设备配备了GPU,它们运行机器学习甚至比MacBook Pro还要快。

深度学习已经无处不在。在这篇文章里,我将会介绍深度学习在现实世界中的应用情况,并见识一下它们的速度到底有多快。

MobileNets应用

我们最近开发了一种新的深度神经网络,叫作MobileUNet,用于解决语义切分问题。它的设计极其简单,它在U-Net中使用了MobileNets。这里只列出其中关键的点,更多细节可以参考它的GitHub仓库。

它由编码器和解码器组成。编码器使用了MobileNets,缺少用于分类的全连接层。解码器使用卷积转置进行升采样(upsample)。

在开发该项目时,我们主要关心它的推理速度。我们知道深度神经网络在GPU上跑得更快一些,但如果运行在移动设备上会怎样呢?

这也就是为什么我们使用了MobileNets。

它使用深度卷积块(depthwise conv block)来加快推理速度。它具有更高的准确性和推理速度比率。它提供了一些参数用于在准确性和速度之间做出权衡。

我们可以得到较为理想的结果,如下图所示。

  速度与准确性

在介绍MobileUNet的性能之前,我想先澄清几个一般性的概念。

是否所有的卷积(如Conv2D、DepthwiseConv2D和Conv2DTranspose)在不同的处理器上都有相同的速度表现?

答案是否定的。在不同的处理器上,有些操作会很快,有些会很慢。CPU和GPU之间的区别是很容易区分出来的,即使是不同的GPU之间也存在优化差异。

下图展示了普通的卷积块和深度卷积块之间的差别。

深度卷积块和普通卷积块在CPU上的表现差别很大,但在GPU上的差别却小了很多。

因此,如果你想要发布基于移动设备的深度学习应用,最好先在主流的设备上做一下测试。接下来,我要分享一下MobileUNet的各种指标。

我们主要使用了以下几个设备。

iPhone 6 PlusiPhone 7 PlusiPhone 8 PlusSony Xperia XZ(骁龙820)

MobileNets提供了一个叫作alpha的参数用于控制速度和准确性之间的比率,所以我们也在MobileUNet里使用了这个参数。我们选择了4个alpha值(1、0.75、0.5和0.25)和4种尺寸的图像(224、192、160、128)。

下图是速度对比。

让人感到惊讶的是,速度最快的并不是iPhone 8 Plus,而是iPhone 7 Plus。iPhone 7 Plus真的很快,在实时应用方面完全没有问题。iPhone 6 Plus和骁龙820就没那么快了,特别是当alpha值很大的时候就更慢了。

下图是准确性对比。

在alpha达到0.25时,准确性开始急速下降。准确性随着alpha的值和图像尺寸呈线性下降。所以,我们不使用alpha 0.25这个值。

下图展示了在骁龙820上运行的速度和准确性。

如果速度对于我们来说很重要,那么就可以考虑左上角那个,尺寸为128,准确性为0.875 IoU,alpha值为0.5。如果更看重准确性,那么可以选择尺寸为192、alpha值为0.5的那个。

当然,我们也可以为不同的设备使用不同的模型,但这样会增加复杂性。

现在让我们来看看为什么iPhone 7 Plus会比iPhone 8 Plus更快。

之前已经说过,速度取决于每个处理器。iPhone 7 Plus的GPU比iPhone 8 Plus的GPU更加契合我们的神经网络,为此我做了一个实验。

我们将MobileUNet的编码器和解码器分为不同的部分,并测试它们的性能。

很明显,解码器部分是iPhone 8 Plus的瓶颈所在。我们在解码器中使用了Conv2DTranspose,iPhone 7 Plus的GPU针对Conv2DTranspose进行过优化,而iPhone 8 Plus则没有。

用于基准测试的脚本放在了Gist上。

Benchmark TensorFlow model in AndroidBenchmark Core ML model in iOS

结论

在移动设备上使用深度学习已经成为一种趋势,在不久的将来,深度学习的应用会越来越方便。

但不是所有的设备都配备了高端GPU,所以进行性能调优是很有必要的。因为不同的处理器具有不同的特点,所以一定要使用真实的设备进行性能测试。

性能测试本身并不难,甚至不需要使用训练过的模型,我们完全可以使用未训练的模型找出性能的瓶颈。



本文转自d1net(转载)

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
机器学习/深度学习 存储 人工智能
边缘计算 | 在移动设备上部署深度学习模型的思路与注意点 ⛵
本文介绍AI模型适用于小型本地设备上的方法技术:压缩模型参数量,设计更小的模型结构,知识蒸馏,调整数据格式,数据复用等,并介绍移动小处理设备的类型、适用移动设备的模型框架等。
2936 1
边缘计算 | 在移动设备上部署深度学习模型的思路与注意点 ⛵
|
11月前
|
机器学习/深度学习 运维 安全
深度学习在安全事件检测中的应用:守护数字世界的利器
深度学习在安全事件检测中的应用:守护数字世界的利器
418 22
|
8月前
|
机器学习/深度学习 编解码 人工智能
计算机视觉五大技术——深度学习在图像处理中的应用
深度学习利用多层神经网络实现人工智能,计算机视觉是其重要应用之一。图像分类通过卷积神经网络(CNN)判断图片类别,如“猫”或“狗”。目标检测不仅识别物体,还确定其位置,R-CNN系列模型逐步优化检测速度与精度。语义分割对图像每个像素分类,FCN开创像素级分类范式,DeepLab等进一步提升细节表现。实例分割结合目标检测与语义分割,Mask R-CNN实现精准实例区分。关键点检测用于人体姿态估计、人脸特征识别等,OpenPose和HRNet等技术推动该领域发展。这些方法在效率与准确性上不断进步,广泛应用于实际场景。
1055 64
计算机视觉五大技术——深度学习在图像处理中的应用
|
12月前
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
990 6
|
10月前
|
机器学习/深度学习 人工智能 运维
深度学习在流量监控中的革命性应用
深度学习在流量监控中的革命性应用
363 40
|
8月前
|
机器学习/深度学习 数据采集 存储
深度学习在DOM解析中的应用:自动识别页面关键内容区块
本文探讨了如何通过深度学习模型优化东方财富吧财经新闻爬虫的性能。针对网络请求、DOM解析与模型推理等瓶颈,采用代理复用、批量推理、多线程并发及模型量化等策略,将单页耗时从5秒优化至2秒,提升60%以上。代码示例涵盖代理配置、TFLite模型加载、批量预测及多线程抓取,确保高效稳定运行,为大规模数据采集提供参考。
190 0
|
10月前
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
439 6
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的原理与应用:开启智能时代的大门
深度学习的原理与应用:开启智能时代的大门
700 16
|
12月前
|
机器学习/深度学习 网络架构 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过研究卷积神经网络(CNN)的结构和原理,本文展示了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了数据不平衡、过拟合、计算资源限制等问题,并提出了相应的解决策略。
353 19
|
10月前
|
机器学习/深度学习 自然语言处理 监控
深入探索:深度学习在时间序列预测中的强大应用与实现
时间序列分析是数据科学和机器学习中一个重要的研究领域,广泛应用于金融市场、天气预报、能源管理、交通预测、健康监控等多个领域。时间序列数据具有顺序相关性,通常展示出时间上较强的依赖性,因此简单的传统回归模型往往不能捕捉其中复杂的动态特征。深度学习通过其非线性建模能力和层次结构的特征提取能力,能够有效地捕捉复杂的时间相关性和非线性动态变化模式,从而在时间序列分析中展现出极大的潜力。

热门文章

最新文章