一种面向监控视频流场景的神经网络模型推理加速方法

文档序号:1799683 发布日期:2021-11-05 浏览:30次 >En<

阅读说明:本技术 一种面向监控视频流场景的神经网络模型推理加速方法 (Neural network model reasoning acceleration method for monitoring video stream scene ) 是由 陈轶 张文 牛少彰 王茂森 崔浩亮 于 2021-08-10 设计创作,主要内容包括:本发明公开了一种面向监控视频流场景的神经网络模型推理加速方法,以神经网络层级为单位,按照神经网络推理计算方向进行分割,将原先的神经网络模型分割成多个模块,前一个模块的输出作为后一个模块的输入,分割后的多个模块之间利用多进程技术并行处理,即一个模块对应一个进程;神经网络各个模块之间按照多进程方式并行独立计算输入数据,模块进程之间数据传输通过消息队列方式进行。本发明涉及神经网络模型技术领域,具体提供了一种面向监控视频流场景的神经网络模型推理加速方法,该方法从神经网络的前馈特征和层级级联特性出发,利用多进程技术提升神经网络推理计算时的运行速度。(The invention discloses a neural network model reasoning acceleration method facing a monitoring video stream scene, which is characterized in that a neural network hierarchy is taken as a unit, segmentation is carried out according to the neural network reasoning calculation direction, an original neural network model is segmented into a plurality of modules, the output of the former module is taken as the input of the latter module, and the segmented modules are processed in parallel by utilizing a multi-process technology, namely, one module corresponds to one process; input data are independently calculated among all modules of the neural network in a multi-process mode in parallel, and data transmission among module processes is carried out in a message queue mode. The invention relates to the technical field of neural network models, and particularly provides a neural network model reasoning acceleration method for a monitoring video stream scene.)

一种面向监控视频流场景的神经网络模型推理加速方法

技术领域

本发明涉及神经网络模型技术领域,具体为一种面向监控视频流场景的神经网络模型推理加速方法。

背景技术

随着神经网络的不断发展演进,凭借其强大的拟合学习能力在计算机视觉领域取得了优秀的成绩,并且在多项任务中超越了人类水平。同时,物联网时代的到来也使得网络摄像头应用得到了普及。网络摄像头以视频流形式对外提供数据信息,数据较密集程度较高。因此,对于处理视频流的神经网络模型实时性要求较高。神经网络模型提升准确率主要是通过优化内部结构、增加网络层级数量等方式来实现。然而,随着网络层级的加深也极大地增加了神经网络推理延时,这对于时间敏感型项目是难以接受的。

针对该问题,现有的工作主要从提升神经网络算子运算效率和模型压缩两个方面进行优化。在算子运算效率方面,英特尔和一些科研机构分别针对神经网络计算中广泛涉及到的线性代数运算提出自己的计算库MKL和OpenBLAS,通过降低矩阵乘法、求逆、奇异值计算等高级线性代数运算计算复杂度的方式提升神经网络计算效率。

在模型压缩方面,模型压缩方式大致分为模型量化、剪枝、蒸馏三种方式。模型量化主要通过将神经网络计算常用的浮点32位变量按照一定规则压缩至浮点16位或者整数型,但是得益于浮点32位矩阵运算优化方案较为成熟,模型量化后往往只能压缩模型体积并不能有效提升模型运算速度。模型剪枝是希望通过将原有神经网络结构进行稀疏化的方式降低计算时间,但是受限于稀疏矩阵运算的效率,此方案目前并不能减少模型运行时间。模型蒸馏则是通过将训练好的教师模型(大模型)的知识迁移到学生模型(小模型)上,以此达到降低神经网络模型计算量和计算时间的目的。但是,蒸馏后的模型准确率和计算速度与模型蒸馏算法相关,且不同的教师模型蒸馏可能会对应于不同的模型蒸馏算法。因此,模型蒸馏的压缩方式无法被广泛推广。

因此,现有的神经网络模型推理加速方法仍存在较大局限性,无法满足监控视频流场景实时检测运行需求,故本发明提供了一种面向监控视频流场景的神经网络模型推理加速方法。

发明内容

针对上述情况,为弥补上述现有缺陷,本发明提供了一种面向监控视频流场景的神经网络模型推理加速方法,该方法从神经网络的前馈特征和层级级联特性出发,利用多进程技术提升神经网络推理计算时的运行速度。

本发明提供如下的技术方案:本发明一种面向监控视频流场景的神经网络模型推理加速方法,具体包括下列步骤:

步骤一、以神经网络层级为单位,按照神经网络推理计算方向进行分割,将原先的神经网络模型分割成多个模块,前一个模块的输出作为后一个模块的输入,分割后的多个模块之间利用多进程技术并行处理,即一个模块对应一个进程;

步骤二、读取监控摄像头视频流,根据帧率解码成帧图像作为模型输入数据;

步骤三、神经网络各个模块之间按照多进程方式并行独立计算输入数据,模块进程之间数据传输通过消息队列方式进行,前一个模块(Modulepre)将输出结果传入到消息队列(Queue),后一个模块(Modulenext)从消息队列(Queue)中取数作为该模块的输入数据,以此方式实现神经网络模型的前馈全流程计算。

进一步地,帧图像数据为单个数据时,按照步骤一和步骤二输入所述多进程神经网络模型,从神经网络的输入到输出的整体运算时间为各个模块运行时间之和(Tmodule-sum)与进程之间队列数据进出所需时间(Tqueue-sum)的总和,即Tmodule-sum+Tqueue-sum,总和时间大于整体神经网络原本运算时间(Told)。

进一步地,帧图像数据为多个数据时,按照步骤一和步骤二依次输入到所述多进程神经网络模型,虽然每个数据完成运算的时间仍然大于整体神经网络不分割时的运算时间,但是,数据之间运算最小时间间隔从原先(Told)减少至分割后的单个模块的运算时间(Tmodule)与其进程对应队列的入队、出队操作所需时间(Tqueue)之和的最大值,即Tmodule+Tqueue|max;当|Tmodule+Tqueue|max小于Told时,数据间运算时间间隔缩小;数据间运算时间间隔缩小意味着可以提高监控视频流的帧率,提升监控视频流数据在神经网络处理中的实时性。

进一步地,若各个进程的运算时间存在不一致,消息队列出队、入队频率也会不一致,这种不一致会导致视频流中某帧图像在队列中没有经神经网络处理就被下一帧图像覆盖;对于监控视频流场景而言,视频帧图像是从模拟量中量化得到的,实际情况并不需要每帧图像都进行处理,并且视频帧率也会随神经网络运算速度而设定;此外,这种视频漏帧情况与因神经网络推理速度慢导致的漏帧情况本质是一样的。

采用上述结构本发明取得的有益效果如下:本发明一种面向监控视频流场景的神经网络模型推理加速方法,具有下列有益效果:

(1)相比于模型压缩方法,本发明可以在不降低模型精度的前提下加速模型推理速度;

(2)将多进程技术与神经网络级联特性和前馈特性相结合,从本质上加速神经网络模型推理速度;

(3)相比于同时开启多个神经网络模型,本发明技术方案所占用硬件资源更小。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明一种面向监控视频流场景的神经网络模型推理加速方法实施例的流程框图。

具体实施方式

下面将结合本发明的实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为使本发明的技术方案更加清楚,下面已神经网络vgg16模型为例,结合附图对本发明的各实施步骤进行详细阐述。

步骤1:将神经网络模型vgg16以层级为单位进行分割,每四层分割保存成一个独立模块,分别命名为神经网络模块1(module 1)、神经网络模块2(module 2)、神经网络模块3(module 3)和神经网络模块4(module 4);

步骤2:每个模块之间对应一个消息队列,4个神经网络模块之间创建三个消息队列,分别为消息队列1(queue 1)、消息队列2(queue 2)和消息队列3(queue 3),设定队列为非阻塞类型,并设置其缓存大小;

步骤3:开启进程1,读取监控摄像头视频流,根据帧率解码成帧图像作为模型输入数据,数据发送至消息队列(queue 1);

步骤4:开启进程2,神经网络模块1(module 1)从消息队列1(queue 1)中获取数据进行运算并将运算结果发送至消息队列2(queue 2),运算结果发送完成后从输入源读取下一帧数据输入神经网络模块1(module 1);

步骤5:开启进程3,神经网络模块2(module 2)从消息队列2(queue 2)中获取数据进行运算并将运算结果发送至消息队列3(queue 3),运算结果发送完成后从消息队列2(queue2)读取下一帧数据输入神经网络模块2(module 2);

步骤6:开启进程4,神经网络模块3(module 3)从消息队列3(queue 3)中获取数据进行运算并将运算结果发送至消息队列4(queue 4),运算结果发送完成后从消息队列3(queue3)读取下一个数据输入神经网络模块3(module 3);

步骤7:开启进程5,神经网络模块4(module 4)从消息队列(queue 4)中获取数据进行运算并将运算结果输出,该运算结果即神经网络模型最终运算结果,运算结果发送完成后从消息队列(queue 4)读取下一个数据输入神经网络模块4(module 4)。

要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物料或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物料或者设备所固有的要素。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

6页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于智能网卡的深度学习训练网络迭代更新方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!