现如今,深度学习技术为工业质检、安防巡检、金融、医疗、能源等各行各业降本增效的效果已被广泛验证。然而,深度学习算法往往需要较高性能的计算芯片,以满足大计算量、高推理速度等产业需求。这带来一个问题,如果对前期大批量投入的低性能设备进行升级甚至更换,都将是一笔非常大的费用,从而提升了产业智能化升级时前期投入的硬件成本。比如,在工业界,产线上已有的工控机大多只配备了CPU,而深度学习涉及海量计算需要运算速度更快的GPU来处理,而GPU的价格非常昂贵,如果全部升级为高性能GPU,成本非常高。
有没有什么好办法,可以在不升级硬件或者不使用低功耗芯片的情况下,尽量提升算法的性能呢?
飞桨全流程开发工具PaddleX,在打通深度学习全流程开发的基础上,为产业开发者提供了多种高性能部署方案及详细的示例工程。
事不宜迟,让我带您快速了解一下这套方案吧!
首先,飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。目前,飞桨已凝聚超230万开发者,服务企业9万家,基于飞桨开源深度学习平台产生了31万个模型 。
而PaddleX 是飞桨产品矩阵中的一个重要工具组件,它提供了一套极其易用的开发方案,使开发者可以快速完成多种计算机视觉算法的开发、优化、并实现高效部署上线。
图1 PaddleX 飞桨全流程开发工具全景图
得益于Paddle Lite--飞桨轻量化推理引擎,凭借其多平台高性能深度学习预测引擎的能力,可以使开发者极其便捷地完成从Mobile到Server多种硬件平台的部署(包括ARM CPU、Mali GPU、Adreno GPU、华为NPU以及FPGA等架构),并持续增加更多新硬件。
此外,基于飞桨与英特尔的长期合作,开发者也可以使用OpenVINO来提升飞桨模型在英特尔的CPU、VPU等芯片上的性能。
目前,全流程深度学习开发套件PaddleX,为开发者提供了一套完整的基于OpenVINO的部署方案。通过这套方案,对部分企业来讲,无需额外配置任何硬件,便可以快速便捷地将最先进的深度学习算法模型部署至CPU工控机,进行深度学习算法的升级。
具体的技术实现的流程如下图所示:
图2 飞桨模型通过转换为ONNX打通OpenVINO部署
当前PaddleX对OpenVINO的支持情况如下表所示:
表1 PaddleX对OpenVINO的支持情况
表说明:Raspbian OS为树莓派操作系统,检测模型仅支持YOLOV3,分割模型不支持FastSCNN。
随着飞桨与英特尔合作的持续深化,支持适配的算法及加速性能将会进一步提升。
那么OpenVINO到底是什么?又为什么可以提升飞桨的模型性能呢?下面逐一为您解答。
OpenVINO是英特尔针对自家硬件开发的深度学习部署工具套件,它基于通用API接口,支持多种英特尔硬件平台,包括CPU、VPU(视觉处理单元)、iGPU、FPGA;并且支持异构计算,可以加速工控机或服务器CPU设备上深度学习模型的预测性能。同时,通过集成OpenCV、OpenGL等工具套件,为开发者简化并加速部署流程。
对于边缘侧设备部署场景,OpenVINO还可以通过支持神经计算棒(一种基于VPU的深度学习硬件USB驱动器)实现在树莓派等低性能的嵌入式设备上部署复杂的深度学习模型,让AI在边缘侧的硬件设备上有更丰富的应用场景。在云端或者是工业场景,OpenVINO更是可以直接在不添加任何其他算力设备的情况下加速CPU上深度学习模型的部署性能,大大提升现有硬件设备的性价比。
图3 神经计算棒
PaddleX在打通OpenVINO对飞桨模型进行加速部署的基础上,提供了丰富的实战案例、示例工程,使开发者每一步都有例可依,有据可考。
PaddleX当前提供的CPU加速部署端到端案例包括:
1) 【工业质检】CPU加速部署YOLOV3模型;
传送门:https://github.com/PaddlePaddle/PaddleX/tree/develop/docs/examples/industrial_quality_inspection
2) 【二代神经计算棒】结合【树莓派】加速部署MobileNetV2模型
传送门:
https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/deploy/raspberry/NCS2.md
图4 神经计算棒配合树莓派进行模型部署
加速效果性能测试
PaddleX对比测试了OpenVINO在CPU和VPU上的部署性能。
1) CPU性能测试
在型号为:Intel(R) Core(TM) i9-9820X@3.30GHz,模型推理的时间以及图像预处理时间结果如下表所示。YOLOV3-MobileNetV3-Prune表示经过剪裁后的模型。
表2 质检模型剪裁前后在CPU上的推理时间对比
从表2中可以看出PaddleX训练出来的模型借助OpenVINO在CPU上的部署性能完全可以达到工业级的要求,而且裁剪方案还能进一步提升预测的性能。
2) VPU性能测试
在树莓派3B上插入神经计算棒测试了OpenVINO的性能加速比,并与树莓派自带的ARM处理器进行对比,结果如下表所示,单位为ms/image(均不包含数据预处理用时)。
表3 分类模型在VPU上使用OpenVINO和ARM的性能加速比对比
从表3可以看出,配合计算神经棒,可以显著提升模型在边缘侧的部署性能,给人们对AI应用开辟了新的想象空间。
除此之外,PaddleX 还针对产业具体应用场景提供了特殊的适配及优化工作,并结合具体、详尽的案例为开发者提供尽可能深层的支持,其中包括:
工业表计读数、人像分割、遥感影像分割(RGB)、遥感影像分割(多通道)、地块变化检测、工业质检等。
欢迎大家到PaddleX Github主页获取完整项目代码,并点星(Star)支持:
PaddleX Github: https://github.com/paddlepaddle/paddlex
PaddleX OpenVINO加速部署部分:
https://github.com/PaddlePaddle/PaddleX/tree/develop/deploy/openvino
PaddlePaddle官网地址: https://www.paddlepaddle.org.cn
OpenVINO官网地址: https://docs.openvinotoolkit.org