一种跨平台的神经网络模型部署方法与流程

文档序号:33645397发布日期:2023-03-29 03:35阅读:54来源:国知局
一种跨平台的神经网络模型部署方法与流程

1.本发明涉及神经网络的模型部署,特别是涉及一种跨平台的神经网络模型部署方法。


背景技术:

2.随着智能汽车的迅速发展,adas、自动驾驶技术为驾驶员提供安全舒适的驾驶环境,从而可以实现特定场景的驾驶功能,实现危险预警,自动采取安全措施等,但这些功能的提高,往往依赖于神经网络模型的建立,而传统的神经网络由于模型的计算量大,嵌入式设备往往缺乏大的算力进行模型的运行,无法确保模型的实时性,需要对已进行训练好的模型进行压缩并部署在需要运行的嵌入式设备中。但是由于不同的模型部署在不同的软硬件平台,往往会导致不兼容或不支持的问题,如目前存在三大平台,intel、nvidia、arm三大平台,其模型的部署并不相同,往往需要针对不同的平台进行对应模型文件的准备,才能够完成,这使得模型部署较为繁琐和耗时。另外,存在模型精度失真的情况而无法满足要求。另外,在车内部署神经网络模型时,需要考虑预测结果的实时性,感知所需花费时间需要达到毫米级,否则,车辆行驶过程中前方的障碍物无法实时检测,因此如何在车内提供实时的神经网络模型,如:目标检测,目标追踪成为汽车adas、自动驾驶迫切需要解决的技术问题。


技术实现要素:

3.基于现有技术中存在的缺陷,本技术实施例提供一种跨平台的神经网络模型部署方法,至少包括:获取硬件参数配置和操作系统内核配置;
4.根据硬件参数配置和操作系统内核配置,从模型文件库中获取对应的主文件包、附加文件包;
5.判断操作系统是否安装有量化模型支持服务解析应用,若未安装,则从模型文件库中获取对应的url下载后进行安装并将安装路径添加入系统环境变量;
6.获取主文件包相匹配的原始神经网络模型对应的权重文件;
7.通过对主文件包、附加文件包结合权重文件进行预处理、权重文件格式转化并进行编译后获取用于推理文件的序列化推理引擎;
8.根据序列化推理引擎获取反序化推理引擎,载入视频或图像后应用反序列化引擎输出模型识别结果。
9.一种跨平台的神经网络模型部署方法,进一步可选的,量化模型支持服务解析应用包括:根据底层硬件配置,服务于推理模型,为推理模型中涉及的函数调用系统软硬件资源提供接口。
10.一种跨平台的神经网络模型部署方法,进一步可选的,模型部署文件库运行在操作系统之上,模型部署文件库至少包括:主文件包、平台支撑文件包,附加文件包中的一种或多种。
11.一种跨平台的神经网络模型部署方法,进一步可选的,主文件包用于根据已训练
好的神经网络模型以及对应的软件与硬件平台,提供用于实现模型从输入到输出的量化模型源码文件;
12.平台支撑文件包包括:量化模型支持服务解析应用对应的不同版本的url;
13.附加文件包,存储相应神经网络模型的原始权重文件的url、自动安装脚本、设置环境变量脚本、查询动态链接库或静态链接库脚本。
14.一种跨平台的神经网络模型部署方法,进一步可选的,,若量化模型支持服务解析应用与主文件包中的文件都不匹配,则向用户请求是否卸载当前量化模型支持服务解析应用,若用户同意,则卸载当前版本,自动下载匹配量化模型支持服务应用并安装;
15.更新系统的配置文件以编译所需的动态链接库和/或静态链接库的路径。
16.一种跨平台的神经网络模型部署方法,进一步可选的,将原始权重文件导入原始神经网络模型后转化为onnx格式的权重文件,然后将onnx权重文件转化用于量化格式的权重文件;
17.量化格式的权重文件的每层参数包括:每层的参数总数、每层的名称,每层的权重参数,参数排列成一行;
18.每一行权重参数对应神经网络的每一层权重系数。
19.一种跨平台的神经网络模型部署方法,进一步可选的,检测整个原始神经网络模型结构,对原始原始神经网络模型结构进行预处理,具体预处理至少包括以下步骤之一:
20.对于用于shape、size返回值的参数时,避免直接使用tensor.size的返回值,需要在加上int转化;
21.对于上采样使用nn.upsample函数,需要使用scale_factor指定倍率,而不是用标准接口size参数指定大小;
22.对于reshape、view操作时,-1的指定需要放到第零个维度,第零个维度禁止指定大于-1的数字。
23.一种跨平台的神经网络模型部署方法,进一步可选的,在加载输入图像或视频数据前进入反序化推理引擎之前,需要对输入图像或视频数据进行前处理,使其符合神经网络模型标准化输入;
24.或输入数据喂入反序列化推理引擎之后获取的输出数据需要进行后处理,解析原始图像大小。
25.一种跨平台的神经网络模型部署方法,进一步可选的,前处理包括:
26.获取原始图像的宽w0和高h0以及输入的标准图像的宽w1和高h1;
27.获取缩放因子r,其中,r=min(h1/h0,w1/w0)
28.将原始图像缩放为r倍,获取缩放图像;
29.如果:w0》h0,则获取边框填充值为:m=(w0*r-h0*r)%最大步长;
30.若:w0《h0,则获取边框填充值为:m=(h0*r-w0*r)%最大步长;
31.如果:w0》h0,创建宽w1和h0*r+m的空白图像;
32.如果:w0《h0,创建宽w0*r+m和h1的空白图像;
33.将空白图像与缩放图像进行融合,融合中,缩放图像的坐标原点(x,y)设置为:
34.如果:w0》h0,x=w1,y=m/2;如果:w0《h0,x=m/2,y=0;
35.其中,x,y为横坐标和纵坐标。
36.一种跨平台的神经网络模型部署方法,进一步可选的,在前处理或后处理阶段,判断预处理或后处理所需算力是否大于预设阈值,若大于预设阈值,则需要对高算力处理步骤进行自定义算子,采用多线程并发同步运行。
37.一种跨平台的神经网络模型部署方法,进一步可选的,主文件包中用于实现神经网络模型的主文件,编译形成序列化推理引擎阶段,对模型的权重系数中的权重文件参数进行压缩,数据类型压缩为fp32、fp16或int8中的一种。
38.一种跨平台的神经网络模型部署方法,进一步可选的,主文件包中用于实现神经网络模型的主文件,编译形成序列化推理引擎阶段,数据类型至少分别压缩为fp32、fp16、int8,形成对应的序列化推理引擎;
39.在反序化推理引擎形成,喂入用于测试模型转化后的预设图像数据或视频数据并通过反序列化推理引擎获取输出后;
40.计算数据压缩后每种数据类型对应的推理结果的精度;
41.选择精度在预设阈值范围内压缩范围最大的序列化推理引擎和反序列化推理引擎。
42.有益效果:
43.相比于现有技术,本发明提供的技术方案提供的有益技术效果之一在于:本发明提供不同的平台文件模型文件库,并且通过对应的设置方案,能够兼容不同的平台,使得采用本技术的技术方案能够适配不同的软件平台,提升兼容性。同时在模型设置和推理过程中,进行较多的改进方案,如对推理的输入的预处理,在onnx格式文件的转化中对原始的神经网络模型进行检查该改写标准平台的api接口,提供模型转化成功率以及降低推理时间。提升神经网络模型推理的实时性。
附图说明
44.以下附图仅对本发明做示意性说明和解释,并不限定本发明的范围。
45.图1为本发明一实施例中神经网络模型的运行环境架构示意图。
46.图2为本发明一实施例中模型文件库包括的文件结构示意图。
47.图3为本发明一实施例中实现模型部署对应模型文件格式转化流程图。
48.图4为本发明一实施例中原始神经网络模型训练的输入前处理的输入图像标准化示意图。
49.图5为本发明一实施例中模型推理的输入前处理的输入图像标准化示意图。
具体实施方式
50.为了对本文的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式,在各图中相同的标号表示相同的部分。为使图面简洁,各图中的示意性地表示出了与本发明相关部分,而并不代表其作为产品的实际结构。另外,为使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。
51.关于控制系统,功能模块、应用程序(app)本领域技术人员熟知的是,其可以采用任何适当的形式,既可以是硬件也可以是软件,既可以是离散设置的多个功能模块,也可以
是集成到一个硬件上的多个功能单元。作为最简单的形式,所述控制系统可以是控制器,例如组合逻辑控制器、微程序控制器等,只要能够实现本技术描述的操作即可。当然,控制系统也可以作为不同的模块集成到一个物理设备上,这些都不偏离本发明的基本原理和保护范围。
52.本发明中“连接”,即可包括直接连接、也可以包括间接连接、通信连接、电连接,特别说明除外。
53.本文中所使用的术语仅为了描述特定实施方案的目的并且不旨在限制本公开。如本文中所使用地,单数形式“一个”、“一种”、以及“该”旨在也包括复数形式,除非上下文明确地另作规定。还将理解的是,当在说明书中使用时,术语“包括”和/或“包含”是指存在有所陈述的特征、数值、步骤、操作、元件和/或组分,但是并不排除存在有或额外增加一个或多个其它的特征、数值、步骤、操作、元件、组分和/或其组成的群组。作为在本文中所使用的,术语“和/或”包括列举的相关项的一个或多个的任何和全部的组合
54.应当理解,此处所使用的术语“车辆”或“车辆的”或其它类似术语一般包括机动车辆,例如包括运动型多用途车辆(suv)、公共汽车、卡车、各种商用车辆的乘用汽车,包括各种舟艇、船舶的船只,航空器等等,并且包括混合动力车辆、电动车辆、可插式混合动力电动车辆、氢动力车辆以及其它替代性燃料车辆(例如源于非石油的能源的燃料)。正如此处所提到的,混合动力车辆是具有两种或更多动力源的车辆,例如汽油动力和电力动力两者的车辆。
55.此外,本公开的控制器可被具体化为计算机可读介质上的非瞬态计算机可读介质,该计算机可读介质包含由处理器、控制器或类似物执行的可执行程序指令。计算机可读介质的示例包括,但不限于,rom、ram、光盘(cd)-rom、磁带、软盘、闪存驱动器、智能卡和光学数据存储设备。计算机可读记录介质也可分布在通过网络耦合的计算机系统中,使得计算机可读介质例如通过远程信息处理服务器或控制器区域网络(can)以分布式方式存储和执行。
56.本发明提供一种跨平台的神经网络模型部署方法,参见图1至图5,具体,至少包括:获取硬件参数配置和操作系统内核配置;
57.根据硬件参数配置和操作系统内核配置,从模型文件库中获取对应的主文件包、附加文件包;
58.判断操作系统是否安装有量化模型支持服务解析应用,若未安装,则从模型文件库中获取对应的url下载后进行安装并将安装路径添加入系统环境变量;
59.获取主文件包相匹配的原始神经网络模型对应的权重文件;
60.通过对主文件包、附加文件包结合权重文件进行预处理、权重文件格式转化并进行编译后获取用于推理文件的序列化推理引擎;
61.根据序列化推理引擎获取反序化推理引擎,载入视频或图像后应用反序列化引擎输出模型识别结果。
62.具体地,参见图1,图1为本实施例提供神经网络模型的运行环境架构示意图,在底层为硬件平台,在硬件平台为操作系统,在操作系统之上,有量化模型支持服务解析应用,在量化支持服务解析应用,有模型文件库;
63.底层硬件平台,主要为当前的intel、arm、nvidia三大平台,但不限于上述三大平
台,也有存在amd硬件平台。
64.操作系统包括:qnx、linux、rt-linux、window、android、ios系统中的一种,但不限于上述操作系统。
65.量化模型支持服务就解析应用为神经网络模型中的函数调用提供运行接口,通过运行接口,可以向操作系统要求运行的软件和硬件资源。
66.具体地,为了适配不同的平台,或者不同平台中对应的软件和硬件版本不同,现有技术中的神经网络模型要么智能适配其中一种,如果存在不匹配,模型就无法运行。
67.为了解决该问题,本实施例在提供了模型文件库,参见图2,模型文件库设有平台的所需文件或所需文件的url;
68.具体地,在云端服务器存储有相应文件,若当前系统不存在相应文件,则在云端服务器进行下载;
69.模型文件库中包括预设平台中的主文件包、平台支撑文件包、附加文件包;
70.例如:在nvidia平台,在nvidia模型文件库包括:主文件包、平台支撑文件包、附加文件包;如图2所示。
71.在intel平台,在intel模型文件库包括:主文件包、平台支撑文件包、附加文件包;
72.模型文件库中包括不同平台的模型文件库;
73.具体地,模型部署时,读取底层硬件平台的参数,根据底层平台和硬件参数,从模型文件库中查找对应平台的模型文件库,从对应平台的模型文件库中获取与当前操作系统版本、硬件版本对应的主文件包的匹配文件,平台支撑文件包的匹配文件,附加文件包的匹配批文件;
74.具体地,主文件包设置多种不同版本的神经网络模型实现文件;
75.量化模型支持服务解析应用包括:根据底层硬件配置,服务于推理模型,为推理模型中涉及的函数调用系统软硬件资源提供接口。
76.例如:在nvidia平台,量化模型支持服务解析应用包括cuda、cudnn、tensorrt等应用;
77.量化模型支持服务解析应用为部署的神经网络模型中设计的函数调用提供接口;
78.例如,在本发明一个实施例,采用目标识别的网络模型,yolov5,采用卷积层、批归一化层、激活函数层的组合形成的,这些卷积层、批归一化层、激活函数层的实现调用需要量化模型支持服务解析应用进行提供接口;
79.在量化模型服务解析应用已经实现模型部署所需的函数调用接口,若神经网络模型所用的函数接口不被量化模型服务解析所支持,则需要用于在主文件库中对应的文件自行设计实现,可以利用c++进行编写;
80.具体地,主文件包用于根据已训练好的神经网络模型以及对应的软件与硬件平台,提供用于实现模型从输入到输出的量化模型源码文件;
81.平台支撑文件包包括:量化模型支持服务解析应用对应的不同版本的url;
82.附加文件包,存储相应神经网络模型的原始权重文件的url、自动安装脚本、设置环境变量脚本、查询动态链接库或静态链接库脚本。
83.具体地,例如主文件包设有很多不同版本的文件,因为不同平台生产商经常更新量化模型服务解析应用,量化模型源码文件中调用的接口函数需要从量化模型服务解析应
用进行查找调用,若量化模型源码文件中采用的函数接口与量化模型服务解析应用提供的函数接口不一致,则会报错,因此,本实施例主文件考虑不同版本的量化模型服务解析应用对应的量化模型源码文件;
84.若量化模型源码文件中采用的函数接口与当前系统安装的量化模型服务解析应用提供的函数接口不支持时,则提示用户是否进行更新,若用户同意更新,通过平台支撑文件包获取或通过平台支撑文件包提供的url下载与当前源码文件相匹配的量化模型服务解析应用;
85.通过附加文件包提供的自动安装脚本进行安装匹配的量化模型服务解析应用;
86.当安装完成后,将安装路径添加入当前系统的环境变量中并且模型部署配置文件;
87.具体地,若量化模型支持服务解析应用与主文件包中的文件都不匹配,则向用户请求是否卸载当前量化模型支持服务解析应用,若用户同意,则卸载当前版本,自动下载匹配量化模型支持服务应用并安装;
88.更新系统的配置文件以编译所需的动态链接库和/或静态链接库的路径。
89.具体地,主文件包可能存在多种不同版本的量化模型源码文件,因此下载量化模型支持服务解析应用,下载最新版本的量化支持服务解析应用,根据下载的量化支持服务解析应用选择对应的量化模型源码文件;
90.具体地,参见图3,图3为实现模型部署对应模型文件格式转化流程图。
91.将原始权重文件导入原始神经网络模型后转化为onnx格式的权重文件,然后将onnx权重文件转化用于量化格式的权重文件;
92.具体地,onnx格式是较为重要的格式,能够兼容较多的数据平台,尽管torch平台提供标准的转化接口,但是申请人在研发过程中,发现按照标准的转化方法并非每次都能够转化成功,即使转化成功,仍然会出现较多的警告问题,但是神经网络模型本身并无问题出现,另外,在模型转化过程中,即使权重系统的精度完全相同,在转化后将onnx格式的模型运用到推理时,存在着经过不准确的情形,现有技术并非有人将影响原因进行说明。为了解决上述存在的问题,申请人经过大量的实验验证以及各种模型的对比,提出以下解决方案:
93.查看整个神经网络模型结构,对于用于shape、size返回值的参数时,避免直接使用tensor.size的返回值,需要在加上int转化;
94.对于上采样使用nn.upsample函数,需要使用scale_factor指定倍率,而不是用标准接口size参数指定大小;
95.对于reshape、view操作时,-1的指定需要放到第零个维度,第零个维度禁止指定大于-1的数字;
96.通过上述对原始神经网络模型进行检查修改,能够解决上述技术问题,使得转化后onnx格式的权重文件在转化时确保成功,推理时精度并不丢失;
97.量化格式的权重文件的每层参数包括:每层的参数总数、每层的名称,每层的权重参数,参数排列成一行;
98.每一行权重参数对应神经网络的每一层权重系数。
99.具体地,在onnx格式的权重文件转化时,定义输入数据类型和接口名称、输出数据
类型和输出接口名称,转化版本采用opset_version=11;
100.在加载输入图像或视频数据前进入反序化推理引擎之前,需要对输入图像或视频数据进行前处理,使其符合神经网络模型标准化输入;
101.或输入数据喂入反序列化推理引擎之后获取的输出数据需要进行后处理,解析原始图像大小。
102.具体地,现有技术中神经网络模型的输入图像数据为了便于训练以及推理,需要将图像转化为标准输入并且图像的宽和高相等,但原始的输出的宽和高往往不相同,因此在宽高不相同时,需要进行如下处理:
103.获取原始图像的宽w0和高h0以及输入的标准图像的宽w1和高h1;
104.获取缩放因子r,其中,r=min(h1/h0,w1/w0)
105.将原始图像缩放为r倍,获取缩放图像;
106.创建宽w1和高h1的空白图像,将空白图像与缩放图像进行融合,融合中,缩放图像的坐标原始设置为:
107.x=(h1-h0*r)/2
108.y=(w1-w0*r)/2
109.具体地标准化的输入图像如图4所示。
110.在进行模型推理阶段,本实施例采用与现有技术中不同的图像处理,现有技术中填充方式,会导致有些长宽比相差较大的图像填充区域较大,降低模型的推理速度,为了解决这个问题,本实施例采用如下措施:
111.获取原始图像的宽w0和高h0以及输入的标准图像的宽w1和高h1;
112.获取缩放因子r,其中,r=min(h1/h0,w1/w0)
113.将原始图像缩放为r倍,获取缩放图像;
114.如果:w0》h0,则获取边框填充值为:m=(w0*r-h0*r)%最大步长;
115.若:w0《h0,则获取边框填充值为:m=(h0*r-w0*r)%最大步长;
116.如果:w0》h0,创建宽w1和h0*r+m的空白图像;
117.如果:w0《h0,创建宽w0*r+m和h1的空白图像;
118.将空白图像与缩放图像进行融合,融合中,缩放图像的坐标原始设置为:
119.如果:w0》h0,x=w1,y=m/2;如果:w0《h0,x=m/2,y=0;
120.最大步长定义为输入图像经过神经网络模型后输出后的最大放缩倍率;
121.例如:输入图像的原始大小为480*480,经过神经网络后,其中最大下采样后图像输出大小为15*15,则最大步长为:32(480/15)。
122.具体地标准化的模型推理的输入图像如图5所示。图4和图5可以明显看出,图5的在h方向明显要比图4要小得多,在确保有效图像的宽高比不发生变化的同时,提无效的图像降到最低,降低推理时间,提升推理效率。
123.在前处理或后处理阶段,判断预处理或后处理所需算力是否大于预设阈值,若大于预设阈值,则需要对高算力处理步骤进行自定义算子,采用多线程并发同步运行。
124.主文件包中用于实现神经网络模型的主文件,编译形成序列化推理引擎阶段,对模型的权重系数中的权重文件参数进行压缩,数据类型压缩为fp32、fp16或int8中的一种。
125.主文件包中用于实现神经网络模型的主文件,编译形成序列化推理引擎阶段,数
据类型至少分别压缩为fp32、fp16、int8,形成对应的序列化推理引擎;
126.在反序化推理引擎形成,喂入用于测试模型转化后的预设图像数据或视频数据并通过反序列化推理引擎获取输出后;
127.计算数据压缩后每种数据类型对应的推理结果的精度;
128.选择精度在预设阈值范围内压缩范围最大的序列化推理引擎和反序列化推理引擎。
129.上所述的仅是本发明的优选实施方式,本发明不限于以上实施例。本领域的技术人员可以清楚,该实施例中的形式不局限于此,同时可调整方式也不局限于此。可以理解,本领域技术人员在不脱离本发明的基本构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1