1.本技术涉及深度学习技术领域,尤其涉及一种神经网络软硬件协同检测方法、装置、设备及存储介质。
背景技术:2.智能交通、智能家居的兴起,使得深度学习主要应用在图像识别方面,而随着大数据与高清摄像机的应用普及,安防大数据时代已经到来,海量高清及以上分辨率视频给安防技术带来了大数据,也就使得深度学习在安防领域必然会快速发展。
3.神经网络算法在嵌入式芯片端落地,需要使用神经网络编译器将服务器上训练好的算法模型编译成一个二进制固件,以方便计算机识别,通常嵌入式芯片端移植了linux操作系统,以方便通过读写文件方式来操作固件。
4.由于神经网络的前向计算过程由硬件实现,通过将卷积神经网络算法在带硬件智能加速的芯片端实现,可以加速产品落地,但在同一个算法分辨率下,每帧运行性能一致,送设备图像检测距离不会发生改变。
5.现有技术中,带硬件智能加速芯片的嵌入式设备,如海思、联咏和芯源等均未实现硬件加速器算法端支持可变分辨率输入的方案,对于人在走路或车辆移动过程中侦测到的画面,无法实现远距离检测人或车,也无法加速网络性能。
技术实现要素:6.本技术提供一种神经网络软硬件协同检测方法,以解决上述现有技术中,带神经网络硬件加速器芯片存在的只能使用同一个分辨率送网络检测,导致远距离目标检测性能低下、占用内存过大的问题。
7.为实现上述目的,本技术采用以下技术方案:
8.本技术的一种神经网络软硬件协同检测方法,包括以下步骤:
9.将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;
10.用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的;
11.在所述网络固件中存储的网络层输出分辨率全部替换完成后,重新配置所述网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。
12.作为优选,所述将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率之前包括:
13.采集当前待检测图像,并利用前景提取算法从所述当前待检测图像中提取出第一目标图像及所述第一目标图像的位置,若所述第一目标图像的分辨率大于预设的神经网络模型最大输入分辨率,则将所述第一目标图像的分辨率调整为所述最大输入分辨率。
14.作为优选,所述方法还包括:
15.获取下一帧待检测图像,并对其进行预处理得到第二目标图像及所述第二目标图像的位置;
16.计算所述第一目标图像位置与所述第二目标图像位置的交并比,若所述交并比小于预设阈值,则将所述第二目标图像输入所述预先训练的神经网络模型中。
17.作为优选,所述用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的,包括:
18.获取网络固件中存储的输出层网络名、编号以及其输出分辨率,所述网络固件为利用神经网络编译器对所述预先训练的神经网络模型进行编译得到的;
19.获取所述当前网络层的网络名与编号,并与所述输出层的网络名与编号进行比对,若一致,则将计算得到的输出分辨率赋值给所述输出层;
20.否则,逐层更新所述网络固件中存储的网络层输出分辨率。
21.作为优选,所述启动神经网络硬件以加速检测之后包括:
22.获取当前神经网络加速后的计算结果,并对所述计算结果进行图像后处理得到检测结果。
23.一种神经网络软硬件协同检测装置,包括:
24.运行模块,用于将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;
25.替换模块,用于用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的;
26.配置模块,用于在所述网络固件中存储的网络层输出分辨率全部替换完成后,重新配置所述网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。
27.作为优选,所述替换模块包括:
28.获取单元,用于获取网络固件中存储的输出层网络名、编号以及其输出分辨率,所述网络固件为利用神经网络编译器对所述预先训练的神经网络模型进行编译得到的;
29.比对单元,用于获取所述当前网络层的网络名与编号,并与所述输出层的网络名与编号进行比对,若一致,则将计算得到的输出分辨率赋值给所述输出层;
30.更新单元,用于否则,逐层更新所述网络固件中存储的网络层输出分辨率。
31.作为优选,所述装置还包括:
32.预处理模块,用于采集当前待检测图像,并利用前景提取算法从所述当前待检测图像中提取出第一目标图像及所述第一目标图像的位置,若所述第一目标图像的分辨率大于预设的神经网络模型最大输入分辨率,则将所述第一目标图像的分辨率调整为所述最大输入分辨率。
33.一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如上述中任一项所述的一种神经网络软硬件协同检测方法。
34.一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现如上述中任一项所述的一种神经网络软硬件协同检测方法。
35.本技术具有如下有益效果:
36.本技术输入神经网络的分辨率可变,既能确保当前分辨率下有检测对象存在,由
于送网络分辨率更加小,不缩放的图像更加清晰,还提升了网络性能,减少带宽使用,并使得检测对象可以更加远,小目标只要满足网络训练分辨率都可以正常检测,采用这种软硬件协同检测方法,使得加速硬件发挥出最佳的性能与使用效果。
附图说明
37.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
38.图1是本技术实施例1实现一种神经网络软硬件协同检测方法的流程图;
39.图2是本技术实施例1中的网络固件内存布局图;
40.图3是本技术实施例3中实现一种神经网络软硬件协同检测装置的示意图;
41.图4是本技术实施例4中实现一种神经网络软硬件协同检测方法的电子设备示意图。
具体实施方式
42.下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.本技术的权利要求书和说明书的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序,应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式,此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他单元。
44.实施例1
45.如图1所示,一种神经网络软硬件协同检测方法,包括以下步骤:
46.s110、将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;
47.s120、用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的;
48.s130、在所述网络固件中存储的网络层输出分辨率全部替换完成后,重新配置所述网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。
49.神经网络加速器只能加速神经网络的前向预测过程,对神经网络进行反向训练以得到参数的过程则是在主机上完成的,即主机把权值和图像以及指令传给加速器,加速器计算结束后将结果返回给主机,因此本实施例中只强调了神经网络的前向运行。
50.在现有技术中,用来进行目标检测的神经网络模型的输入分辨率都被配置为一个固定值,在将待检测图像输入神经网络模型前,必须对该图像进行处理使其分辨率正好符
合神经网络模型的输入要求,但距离过远时,图像缩放会使检测目标变小,此时若检测目标的大小不符合模型要求,就无法进行目标检测,而本实施例提供的一种支持可变分辨率的神经网络软硬件协同检测方法则可以解决该问题。
51.首先利用神经网络编译器将预先训练的神经网络模型编译为网络固件,这是因为训练好的网络模型无法被计算机识别,且为浮点格式,也无法与神经网络加速器的输入格式匹配,网络固件中存储有固件头信息、输入输出信息及各中间层信息、寄存器命令字以及量化权重,如图2所示,具体的:
52.固件头信息包括固件的网络名称、校验码和作用域等,共64字节大小。
53.输入输出信息,包含输入层名、输入层量化参数、输入层的输入输出分辨率以及输出层的相关信息,由于神经网络输出层可以有多个,因此包括每个输出层的层名、层量化参数以后输出层分辨率。
54.中间层信息,按索引值从1到n,n表示最后一层中间层,排序后按此顺序执行每个中间层,包含每层层名、层索引值和层类型等,其包含了卷积层、池化层和残差层等不同功能的网络层。
55.寄存器命令字,这里每个网络层都有一组寄存器命令字,一组命令字包含固定大小的21个子命令字,每个子命令字为128字节,代表不同含义,分别存储每个网络层的输出分辨率、当前层索引值以及下一层的层索引值、层类型,层量化参数、层的内核大小、跨度、补边和分组等信息。
56.量化权重,表示将网络权重使用神经网络编译器解析量化后的权重数据。为节省存储空间,将32bit的权重数据量化成8bit的数据存储,使用非线性量化方法,几乎不丢失精度,运算后的结果也与浮点运算结果接近。
57.其中,输入输出的特征数据量化方法为:
58.qd=bw-ceil(log2(x
max
)+1)
59.其中,x
max
为x
′
max
、abs(x
′
min
)中的最大值,x
′
max
为输入浮点数的最大值,x
′
min
为输入浮点数的最小值,abs取绝对值且是系统库的内置函数,bw为量化的位宽,当前硬件加速只支持8bit的位宽,log2为系统库的内置函数,ceil向上取整,也为系统库的内置函数。
60.浮点转定点方法为:
61.x=round(x
float
*2
qd
)
62.其中,round为四舍五入的系统库内置函数,x
float
为浮点数,qd为量化参数,当x值超过位宽上限,取上限值,小于位宽下限,取下限制值。
63.定点转浮点方法为:
64.x
float
=(x*1.0)/2
qd
65.其中,x
float
为浮点数,qd为量化参数,x表示定点8bit数据。
66.其次,根据使用芯片中的网络加速器性能及实际的算法应用场景,确定预先训练的神经网络模型的最大输入分辨率,比如当前场景下芯片按1秒25帧采集图像,那么1帧就是40ms,测试下当前网络在芯片上的性能,确定网络最大输入分辨率。
67.然后,获取当前待检测图像,对待检测图像进行预处理后输入预先训练的神经网络模型中进行前向运行。
68.具体地,采集当前待检测图像,并利用前景提取算法从所述当前待检测图像中提
取出第一目标图像及所述第一目标图像的位置,若所述第一目标图像的分辨率大于预设的神经网络模型最大输入分辨率,则将所述第一目标图像的分辨率调整为所述最大输入分辨率。
69.采集当前待检测图像,利用直方图、前景提取等方式从该待检测图像中裁剪出目标图像,并获取目标图像在待检测图像中的位置,这里的位置是大致位置而非精确位置,每帧图像的大致位置只有一个,是目标检测结果的近似区域,精确位置也只有一个,就是检测目标结果的位置,若目标图像的分辨率小于等于网络的最大输入分辨率,则直接将其送入网络,若大于最大输入分辨率,则将其分辨率缩小为该最大输入分辨率大小后再送入网络进行检测。
70.当前待检测图像送往网络检测后,则获取下一帧待检测图像,并对其进行预处理得到第二目标图像及所述第二目标图像的位置;
71.计算所述第一目标图像位置与所述第二目标图像位置的交并比,若所述交并比小于预设阈值,则将所述第二目标图像输入所述预先训练的神经网络模型中。
72.对当前待检测图像进行预处理并将其送入预先训练的神经网络模型中进行检测后,则采集下一帧图像作为当前待检测图像,对当前帧图像做与前一帧图像相同的预处理,得到该图像中的目标图像和目标图像在该图像中的位置,然后将根据当前帧图像得到的目标图像位置与根据上一帧图像得到的目标图像位置进行iou(交并比)计算,若结果小于0.9且当前目标图像的分辨率小于等于最大输入分辨率时,将当前目标图像直接送神经网络,若两者交叠比例小于0.9但当前目标图像的分辨率大于最大输入分辨率时,则先将当前目标图像的分辨率缩小为最大输入分辨率再送神经网络,否则仍使用原来的结果,以减少网络运算性能,其中iou(交并比)是目标检测中使用的一个概念,是产生的候选框与原标记框的交叠率,即它们的交集与其并集的比值,比值为1时,说明候选框与原标记框是完全重叠的,在本实施例中,原标记框就是前一帧图像中目标图像的位置,候选框就是后一帧图像中目标图像的位置,简单地说,就是当检测目标不动或是每张图像中目标移动范围小时,就不送网络检测,从而节省网络性能。
73.接着,根据输入预先训练的神经网络模型的图片和网络固件中保存的原始网络模型参数信息,计算当前神经网络每层的输出分辨率,除输入层外,其他网络层的输入分辨率都是前一层的输出分辨率,故无需计算它们的输入分辨率,对于卷积层,获取补边大小、卷积核大小和卷积核跨度来计算其输出分辨率;对于池化层,不同训练平台的caffe和pytorch,采用不同公式计算其输出分辨率;对于残差层,其输入分辨率与输出分辨率一致,其中,卷积层输出分辨率计算公式如下:
74.ow=(iw
–
kw+2*pw)/sw+1
75.oh=(ih
–
kh+2*ph)/sh+1
76.其中,ow、oh分别表示该层输出分辨率的宽与高,iw、ih分别表示该层输入分辨率的宽与高,pw、ph分别表示该卷积核水平方向补边与垂直方向补边,sw、sh分别表示该卷积核水平跨度与垂直跨度,kw、kh分别表示该卷积核宽度与高度。
77.池化层caffe平台的输出分辨率计算公式如下:
78.ow=ceil((iw
–
kw+2*pw)/sw)+1
79.oh=ceil((ih
–
kh+2*ph)/sh)+1
80.池化层pytorch平台的输出分辨率计算公式如下:
81.ow=floor((iw
–
kw+2*pw)/sw)+1
82.oh=floor((ih
–
kh+2*ph)/sh)+1
83.其中,ow、oh分别表示该层输出分辨率的宽与高,iw、ih分别表示该层输入分辨率的宽与高,pw、ph分别表示该卷积核水平方向补边与垂直方向补边,sw、sh分别表示该卷积核水平跨度与垂直跨度,kw、kh分别表示该卷积核宽度与高度,floor系统函数表示向下取整,ceil系统函数表示向上取整。
84.残差层输出分辨率计算公式如下:
85.ow=iw
86.oh=ih
87.其中,ow、oh分别表示该层输出分辨率的宽与高,iw、ih分别表示该层输入分辨率的宽与高。
88.然后,获取网络固件中存储的输出层网络名、编号以及其输出分辨率,所述网络固件为利用神经网络编译器对所述预先训练的神经网络模型进行编译得到的;
89.获取所述当前网络层的网络名与编号,并与所述输出层的网络名与编号进行比对,若一致,则将计算得到的输出分辨率赋值给所述输出层;
90.否则,逐层更新所述网络固件中存储的网络层输出分辨率。
91.将神经网路当前层的层名、编号与输出层的层名、编号分别进行比较,若一致,神经网络当前层即为输出层,将网络固件中存储的输出层分辨率替换为计算得到的输出分辨率,若不一致,则该当前层为其他层,将网络固件中存储的与该当前层层名、编号一致的网络层的输出分辨率替换为计算得到的输出分辨率,如果预先训练的神经网络模型有多个输出层,则此处的输出层指的是最后一层输出层,直至网络固件中存储的各层输出分辨率都替换完成。
92.根据替换后的网络固件各层的输出分辨率,更新该网络固件中存储的寄存器命令字,并配置启动信息以启动神经网络硬件进行前向加速,前向运行完成后产生中断。
93.最后,获取当前神经网络加速后的计算结果,并对所述计算结果进行图像后处理得到检测结果。
94.硬件调用中断函数后,主机获取当前神经网络的前向运行结果,即当前神经网络最后一层输出层的计算结果,根据该计算结果进行图像后处理,其中图像后处理使用的是nms非极大值抑制算法,该算法的本质是搜索局部极大值,抑制非极大值元素,应用在目标检测中就是过滤多余的候选框,保留具有最佳检测位置的那个候选框,该候选框即为检测结果,目标图像的大致位置虽只有一个,但在网络运行中产生的目标候选框却有多个,需要从多个候选框中选出最符合要求的那个候选框,从而实现神经网络的软硬件协同检测。
95.本实施例中为神经网络模型设置一个最大输入分辨率,确保不同组合分辨率内存不越界,同时输入神经网络的分辨率可变,既能确保当前分辨率下有检测对象存在,且由于送网络分辨率更加小,不缩放的图像更加清晰,提升了网络性能,减少带宽使用,并使得检测对象可以更加远,小目标只要满足网络训练分辨率都可以正常检测,采用这种软硬件协同检测方法,使得加速硬件发挥出了最佳的性能与使用效果。
96.实施例2
97.本实施例以人形检测为例,对神经网络软硬件协同检测方法进行说明:
98.根据神经网络的具体应用场景,设置预先训练的神经网络模型的最大输入分辨率,以确保后期每个图像的输入分辨率都控制在该最大输入分辨率内,保证网络前向运行中每层的输出特征内存不越界,因为芯片的内部存储器sram有限制,硬件运算中需要将外部存储器ddr中的数据(输出分辨率这么大)导入内部存储器中进行运算,此时输出分辨率这么大的数据不符合足运算需求,需要分块导入,比如sram大小为16*16,则conv_w=(16-kw)/kstep+1,其中kw为卷积核宽度,kstep为卷积核跨度,conv_w为输出卷积宽度,block_w_num=ceil(out_wid/conv_w),其中,block_w_num表示水平方向块个数,out_wid表示输出宽度分辨率,由于分辨率过大会消耗过大内存与存储空间,本实施例中采用宽640,高320作为最大值,即最大输入分辨率为640*320,可变分辨率的宽高乘积小于等于640*320,可以检测20米内的人形。
99.采用不同场景下的50张量化图像,利用现有的神经网络编译器推理出相关的量化参数,并生成网络固件,固件内存布局与实施例1中相同。
100.接着使用sensor(图像采集器),采集一帧分辨率为1080p(宽1920,高1080)的图像,并使用直方图和前景特征提取方式,提取出当前人形在1080p分辨率下的图像和大致位置,如果此时目标图像即人形图像的分辨率小于等于640*320,则直接将该人形图像输入神经网络执行,否则就将该人形图像的分辨率缩小至640*320再送入神经网络。
101.然后,根据输入预先训练的神经网络模型的图片和网络固件中保存的原始网络模型参数信息,计算当前神经网络每层的输出分辨率,并将神经网路当前层的层名、编号与网络固件中存储的输出层的层名、编号分别进行比较,若一致,神经网络当前层即为输出层,则将网络固件中存储的输出层分辨率替换为计算得到的输出分辨率,若不一致,则该当前层为其他层,将网络固件中存储的与该当前层层名、编号一致的网络层的输出分辨率替换为计算得到的输出分辨率,如果预先训练的神经网络模型有多个输出层,则此处的输出层指的是最后一层输出层,直至网络固件中存储的各层输出分辨率都替换完成,并更新该网络固件中存储的寄存器命令字,启动神经网络硬件进行前行加速,前向加速完成后硬件产生中断,主机则获取前行运行结果,根据前行运行结果进行图像后处理,得到目标的输出框位置以及置信度,其中置信度表示人形的概率,当其大于0.8时表示为人形,使用cpu进行画线显示,从而实现神经网络的软硬件协同检测。
102.其中,将当前待检测图像进行预处理并送入神经网络中后,采集下一帧图像,然后使用直方图和前景提取方式,从中提取出当前人形在1080p分辨率下的大致位置,并与前一帧的人形位置进行对比,此处采用iou交并比方法,例如前一帧人形位置用a表示,当前帧人形位置用b表示,iou交叠面积比为a与b的交集除以a与b的并集,两者交叠比例小于0.9且当前人形图像的分辨率小于等于640*320时,则将当前人形图像直接送神经网络,两者交叠比例小于0.9但当前人形图像的分辨率大于640*320时,则先将当前人形图像的分辨率缩小为640*320再送神经网络,否则使用原来的结果,即当前人形图像并不送网络,以减少的网络运算性能,同时小分辨率又能加速网络运行,缩放裁剪后的图像清晰,只需要满足图像的宽高比在网络训练的限制范围内即可。
103.实施例3
104.如图3所示,一种神经网络软硬件协同检测装置,包括:
105.运行模块10,用于将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;
106.替换模块20,用于用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的;
107.配置模块30,用于在所述网络固件中存储的网络层输出分辨率全部替换完成后,重新配置所述网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。
108.上述装置的一种实施方式可为:运行模块10将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;替换模块20用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的;配置模块30在所述网络固件中存储的网络层输出分辨率全部替换完成后,重新配置所述网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。
109.实施例4
110.如图4所示,一种电子设备,包括存储器401和处理器402,所述存储器401用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器402执行以实现上述的一种神经网络软硬件协同检测方法。
111.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
112.一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现如上述的一种神经网络软硬件协同检测方法。
113.示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器401中,并由处理器402执行,并由输入接口405和输出接口406完成数据的i/o接口传输,以完成本发明,一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机设备中的执行过程。
114.计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可包括,但不仅限于,存储器901、处理器902,本领域技术人员可以理解,本实施例仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入器407、网络接入设备、总线等。
115.处理器402可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器402、数字信号处理器402(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器402可以是微处理器402或者该处理器402也可以是任何常规的处理器402等。
116.存储器401可以是计算机设备的内部存储单元,例如计算机设备的硬盘或内存。存储器401也可以是计算机设备的外部存储设备,例如计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等,进一步地,存储器401还可以既包括计算机设备的内部存储单元也包括外部存储设备,
存储器401用于存储计算机程序以及计算机设备所需的其他程序和数据,存储器401还可以用于暂时地存储在输出器408,而前述的存储介质包括u盘、移动硬盘、只读存储器rom403、随机存储器ram404、碟盘或光盘等各种可以存储程序代码的介质。
117.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
技术特征:1.一种神经网络软硬件协同检测方法,其特征在于,包括以下步骤:将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的;在所述网络固件中存储的网络层输出分辨率全部替换完成后,重新配置所述网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。2.根据权利要求1所述的一种神经网络软硬件协同检测方法,其特征在于,所述将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率之前包括:采集当前待检测图像,并利用前景提取算法从所述当前待检测图像中提取出第一目标图像及所述第一目标图像的位置,若所述第一目标图像的分辨率大于预设的神经网络模型最大输入分辨率,则将所述第一目标图像的分辨率调整为所述最大输入分辨率。3.根据权利要求1或2所述的一种神经网络软硬件协同检测方法,其特征在于,所述方法还包括:获取下一帧待检测图像,并对其进行预处理得到第二目标图像及所述第二目标图像的位置;计算所述第一目标图像位置与所述第二目标图像位置的交并比,若所述交并比小于预设阈值,则将所述第二目标图像输入所述预先训练的神经网络模型中。4.根据权利要求1所述的一种神经网络软硬件协同检测方法,其特征在于,所述用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的,包括:获取网络固件中存储的输出层网络名、编号以及其输出分辨率,所述网络固件为利用神经网络编译器对所述预先训练的神经网络模型进行编译得到的;获取所述当前网络层的网络名与编号,并与所述输出层的网络名与编号进行比对,若一致,则将计算得到的输出分辨率赋值给所述输出层;否则,逐层更新所述网络固件中存储的网络层输出分辨率。5.根据权利要求1所述的一种神经网络软硬件协同检测方法,其特征在于,所述启动神经网络硬件以加速检测之后包括:获取当前神经网络加速后的计算结果,并对所述计算结果进行图像后处理得到检测结果。6.一种神经网络软硬件协同检测装置,其特征在于,包括:运行模块,用于将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;替换模块,用于用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率,所述网络固件为对所述预先训练的神经网络模型进行编译得到的;配置模块,用于在所述网络固件中存储的网络层输出分辨率全部替换完成后,重新配置所述网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。7.根据权利要求6所述的一种神经网络软硬件协同检测装置,其特征在于,所述替换模
块包括:获取单元,用于获取网络固件中存储的输出层网络名、编号以及其输出分辨率,所述网络固件为利用神经网络编译器对所述预先训练的神经网络模型进行编译得到的;比对单元,用于获取所述当前网络层的网络名与编号,并与所述输出层的网络名与编号进行比对,若一致,则将计算得到的输出分辨率赋值给所述输出层;更新单元,用于否则,逐层更新所述网络固件中存储的网络层输出分辨率。8.根据权利要求6所述的一种神经网络软硬件协同检测装置,其特征在于,所述装置还包括:预处理模块,用于采集当前待检测图像,并利用前景提取算法从所述当前待检测图像中提取出第一目标图像及所述第一目标图像的位置,若所述第一目标图像的分辨率大于预设的神经网络模型最大输入分辨率,则将所述第一目标图像的分辨率调整为所述最大输入分辨率。9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如权利要求1~5中任一项所述的一种神经网络软硬件协同检测方法。10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序使计算机执行时实现如权利要求1~5中任一项所述的一种神经网络软硬件协同检测方法。
技术总结本申请公开了一种神经网络软硬件协同检测方法、装置、设备及存储介质,涉及深度学习技术领域,包括:将第一目标图像输入预先训练的神经网络模型中进行前向运行,并计算神经网络当前网络层的输出分辨率;用计算得到的输出分辨率替换网络固件中存储的对应网络层的输出分辨率;在网络固件中存储的网络层输出分辨率全部替换完成后,重新配置网络固件中的寄存器命令字,并启动神经网络硬件以加速检测。本申请中输入神经网络的分辨率可变,既能确保当前分辨率下有检测对象存在,且由于送网络分辨率更加小,不缩放的图像更加清晰,还提升了网络性能,减少了带宽使用。减少了带宽使用。减少了带宽使用。
技术研发人员:王军 朱旭东 吴春选
受保护的技术使用者:杭州雄迈集成电路技术股份有限公司
技术研发日:2022.07.13
技术公布日:2022/11/1