一种基于Qt部署多格式深度学习模型的方法技术

技术编号:35911313 阅读:14 留言:0更新日期:2022-12-10 10:51
本发明专利技术揭示了一种基于Qt部署多格式深度学习模型的方法,先通过深度学习算法训练得到一个深度学习模型,再将所获得的深度学习模型转换为ONNX格式;而后基于C++改写深度学习算法,并打包成lib文件进行闭源封装;接着基于Qt开发框架编写应用程序,并在应用程序中留出用于对接深度学习算法中各种函数的数个接口,定义各个接口为软件端的功能按钮;最后设定所需部署的平台,用户在软件端给出指令,深度学习算法根据指令选择部署平台并运行应用程序。应用本发明专利技术方法,能继承深度学习在工业化应用中的准确性;基于Qt开发框架,支持多系统、多平台部署及运行,可根据实际任务需求在不同场景中实现功能;并且提高了工业化应用的实时性和性价比。价比。价比。

【技术实现步骤摘要】
一种基于Qt部署多格式深度学习模型的方法


[0001]本专利技术涉及一种深度学习网络模型的应用领域,尤其涉及一种基于Qt开发框架普适性、可迁移、统一地部署多格式深度学习模型的方法。

技术介绍

[0002]深度学习一词最初于上世纪80年代被提出,是机器学习的一个重要分支。深度学习的前身是人工神经网络,它是深度学习最早期建立的网络模型。人工神经网络走向低迷的原因在于,单层感知机只对线性问题具有分类能力,而无法完成非线性问题的分类。后来,反向传播算法被应用于神经网络的训练中,使神经网络具有了非线性表示能力,解决了多层感知机无法训练的问题。然而,反向传播算法的局限性在于,随着神经元节点的增多,训练速度会大大降低。此外,由于非凸优化的弊端,用梯度下降法训练很容易导致网络收敛到局部最优解。最严重的问题是,由于层数的增多,往往会引发梯度消失现象,导致网络的学习能力无法提升,这些问题制约了神经网络的发展。
[0003]2012年,Hinton等人将神经网络应用于图像识别中,发现神经网络的训练速度得到了很大提升,并且由反向传播引起的梯度消失问题也因此得到了有效的解决。这吸引了众多研究者的注意。近年来,随着GPU加速技术的发展、计算机计算能力的提升,深度学习模型不仅提升了图像识别的精度,也大量降低了人工提取特征的时间成本。
[0004]现如今,深度学习的广泛研究极大地促进了人工智能及机器学习的发展,深度学习在自然语言处理和计算机视觉等多个领域都有很好的研究成果,使得多项技术任务有了突破性的进展。其中,基于深度卷积网络的图像分类技术已超过人眼辨别的准确率,基于深度神经网络的语音识别技术已达到95%的准确率,基于深度神经网络的机器翻译技术已接近人类的平均翻译水平。准确率的大幅提升使得计算机视觉技术进入产业化阶段,带来新产业的兴起。
[0005]当前学术界调用深度学习模型通常需要用户掌握多种编程语言,例如在TensorFlow框架中,用户需要掌握C++、Python、Java等编程语言;在Pytorch中,用户需要掌握C、C++、Python编程语言;在Caffe中,用户需要掌握C++、Python、Matlab编程语言,等等。这要求用户具备深厚的深度学习知识,了解各种框架的使用规则,并且这种调用方式还依赖高性能的计算资源,这些因素无形中提高了使用深度学习模型的门槛。
[0006]在工业界中,深度学习模型必须经过部署才能应用到实际场景中,才能产生效益。工业中最常用的部署方案是在特定的平台上针对一种深度学习模型进行部署,这种方案可迁移性不高,严重依赖设定的部署平台;最简单直接的方法是在python服务器上部署模型文件,给出一个http服务,后台通过这个服务就可以调用模型进行输入输出,但是这个方案需要服务器安装python环境,增加了服务器的维护成本;目前工业界比较成熟的部署方案是使用TensorFlow的java包,先将模型文件保存为PB格式,然后再java的环境中添加依赖,这种方案需要将数据预处理的代码转换为java,并添加到后端项目代码中,代码难度较高;还有一种方案是直接将模型部署到docker容器中,然后提供Grpc、http两个接口,但这种方
法技术壁垒较高,需要用户具备扎实的编程能力和深厚的深度学习知识。
[0007]大多数深度学习算法通常只包括数据获取、数据清洗、模型训练、模型评估等步骤。而在实际场景中,要想应用深度学习模型,必须要经过部署。纵观深度学习模型的部署方案,可以发现存在如下问题:首先,现有的部署方案缺乏统一性。当前模型优化和部署的工具非常多,包括TensorRT、NCNN、MNN等,当前硬件平台也非常多,包括CPU、GPU、ARM、NPU、FPGA等。这么多工具和平台反而对用户造成干扰,用户若想在实际场景中部署训练好的模型,往往需要考虑训练好的模型要怎么部署、部署到哪里、有什么限制和要求。
[0008]其次,现有的部署方案缺乏可迁移性。在各类落地场景中,基于服务端的场景,追求的是更高的精度、更大的模型、更复杂的功能,基于嵌入式平台的场景,追求的是低延迟、小模型,因此工程师在进行模型部署时各有侧重。若用户切换应用场景,可能需要更换整套部署方案,这无疑增加了工作量,因此设计一套可迁移到多种场景下的部署方案是十分必要的。
[0009]再次,现有的部署方案缺乏普适性。深度学习有多种框架,每个框架训练得到的模型格式都不一样,用户部署不同格式的模型需要了解多种框架的限制和要求,这无疑提高了部署模型的门槛。因此设计一种多种模型都适用的部署系统是十分重要的。
[0010]最后,现有的部署系统难以兼顾算法速度和硬件成本。深度学习算法大多数是在GPU上运行的,而GPU价格昂贵,但是高性能的GPU能够提高深度学习算法的运行速度,工程师往往牺牲成本来获取算法上的加速。若在CPU上部署深度学习模型,并保留深度学习模型的性能和运行速度可以大大降低成本,更有利于在实际场景中应用。

技术实现思路

[0011]本专利技术的目的旨在提出一种基于Qt部署多格式深度学习模型的方法,解决现有的部署方案缺乏统一性、可迁移性和普适性的问题,并且兼顾算法的速度和硬件成本。
[0012]本专利技术实现上述目的的技术解决方案为:一种基于Qt部署多格式深度学习模型的方法,其特征在于包括步骤:S1、通过深度学习算法训练得到一个深度学习模型;S2、将S1所获得的深度学习模型转换为ONNX格式;S3、基于C++改写深度学习算法,并打包成lib文件进行闭源封装;S4、基于Qt开发框架编写应用程序,并在应用程序中留出用于对接深度学习算法中各种函数的数个接口,定义各个接口为软件端的功能按钮;S5、设定所需部署的平台,用户在软件端给出指令,系统根据指令选择部署平台并运行应用程序。
[0013]进一步地,Qt开发框架下在C++开发环境中生成有一个基于python代码写成的格式转换插件,所述格式转换插件用于将不同格式的深度学习模型统一转换成ONNX格式。
[0014]更进一步地,被转换为统一格式的各深度学习模型包括:在TensorFlow、Pytorch、OneFlow、Paddle或Caffe框架下训练及保存所得的模型。
[0015]更进一步地,Qt开发框架下开发的应用程序中,还嵌设有自适应压缩工具,用于对转换后的深度学习模型进行一键压缩,从Float32压缩到Float16,或者量化为Int8。
[0016]应用本专利技术深度学习模型部署的技术解决方案,其具备显著的进步性主要从以下有益效果体现:能完全继承深度学习的优点,提高完成工业化应用的准确性;基于Qt开发框架,支持多系统、多平台部署及运行,可根据实际任务需求在不同场景中实现功能;并且由
于兼顾算法速度和硬件成本的部署方式,提高了工业化应用的实时性和性价比。
附图说明
[0017]图1为本专利技术基于Qt部署深度学习模型的步骤示意图。
[0018]图2为按本专利技术进行工业化应用部署深度学习模型的硬件系统示意简图。
[001本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Qt部署多格式深度学习模型的方法,其特征在于包括步骤:S1、通过深度学习算法训练得到一个深度学习模型;S2、将S1所获得的深度学习模型转换为ONNX格式;S3、基于C++改写深度学习算法,并打包成lib文件进行闭源封装;S4、基于Qt开发框架编写应用程序,并在应用程序中留出用于对接深度学习算法中各种函数的数个接口,定义各个接口为软件端的功能按钮;S5、设定所需部署的平台,用户在软件端给出指令,系统根据指令选择部署平台并运行应用程序。2.根据权利要求1所述基于Qt部署多格式深度学习模型的方法,其特征在于:基于Qt开发框架,在C++开发环境中生成一个基于python代码写成的格式转换插件,所述格式转换插件用于将不同格式的深度学习模型统一转换成ONNX格式。3.根据权利要求2所述基于Qt部署多格式深度学习模型的方法,其特征在于:被转换为统一格式的各深度学习模型包括:在TensorFlow、Pytorch、OneFlow、Paddle或Caffe框架下训练及保存所得的模型。4.根据权利要求2所述基于Qt部署多格式深度学习模型的方法,其特征在于:Qt开...

【专利技术属性】
技术研发人员:靳雨桐张杰蔡沂霖陈扬
申请(专利权)人:中科苏州智能计算技术研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1