一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种卷积神经网络的模型文件分层加载计算方法

2022-06-04 18:53:33 来源:中国专利 TAG:


1.本发明涉及计算机视觉领域,尤其涉及一种卷积神经网络的模型文件分层加载计算方法。


背景技术:

2.随着深度学习在目标识别和检测领域的不断发展,继alexnet以来,vgg、googlenet、resnet等网络向网络层数更深地方向发展,以寻求更好的检测精度。相关研究人员运用增加卷积层数,增加卷积核的个数等方法来提取检测目标的深层次特征;尽管深度网络模型在许多问题中表现优越,但实际应用时受到了时间上和空间上的制约,大而深的网络模型运算量巨大,即使借助于图形处理器,也难以嵌入开发在计算资源和存储资源有限的设备上,时间上也难以满足日常生活中的许多场景需求;而高性能的计算机生产及维护成本较高,不适合大量普及推广。所以,在目前许多应用中,尤其是在移动端与嵌入式系统的应用部署,如自动驾驶、疲劳检测、机器人等受限于集成设备与处理速度,无法加载和计算从几十兆到上百兆不等神经网络模型文件,模型压缩研究应运而生,轻量化的深度神经网络不断被提出,然而一味的对模型进行压缩又会导致检测精度的损失,单纯的压缩无疑是不可取的。
3.对于深度神经网络而言,其模型的大量参数都集中在卷积层中,如何避免深度神经网络的大量模型参数和嵌入式设备有限的计算存储能力之间存在的冲突,使其在一定程度上突破深度网络模型的应用局限,是深度神经网络在嵌入式终端开发应用面临的首要问题。


技术实现要素:

4.针对现有技术存在的上述问题,本发明要解决的技术问题是:如何解决深度神经网络难以嵌入开发在计算资源和存储资源有限的设备上的技术问题。
5.为解决上述技术问题,本发明采用如下技术方案:一种卷积神经网络的模型文件分层加载计算方法,包括如下步骤:
6.s1、将模型文件加载到嵌入式设备的硬盘或sd卡等外部存储设备中,假设该模型文件的大小为mw;
7.s2、将该嵌入式设备的内存大小记为ma,将该检测程序的最大运行内存记为mb,则该嵌入式设备能够分配给模型文件存储的内存大小mc为mc=(m
a-mb)
×
α,α为余量因子,设为0.9;
8.s3、若mw<=mc,则直接将模型文件一次性加载到嵌入式设备的内存中,转至s5;
9.s4、若mw>mc,则模型文件需要分次加载;
10.s5、进行卷积神经网络的前向计算过程。
11.作为改进,所述s4中分次加载的步骤具体如下:
12.记模型文件计划加载次数为n,
13.则前n-1次计划单次加载的模型文件大小为则
14.则第n次计划加载的模型文件大小为
15.为了保证每一次加载的模型文件都是n个层的全部参数,记已加载模型文件大小为mo,mo初始值为0;记l为模型的第l个卷积层,l初始值为1;
16.设第n次(n初始值为1)实际加载的模型文件大小为m
t
,m
t
初始值为第l个卷积层参数所占内存大小;记m
l
为第l个卷积层参数所占内存大小;第n次实际加载模型文件的流程如下:
17.①
若且l《no,则l=l 1,更新m
t
=m
t
m
l
,重复第

步,其中no表示模型卷积层数;
18.②
若则l=l-1,更新m
t
=m
t-m
l

19.③
若则加载模型文件的[mo,mo m
t
]部分,更新mo=mo m
t

[0020]

若mo《mw,更新l=l 1,转到第

步,即开始第n 1次实际加载模型文件的流程;
[0021]

若mo=mw,则整个模型文件已加载完成,结束。
[0022]
作为改进,所述s5进行卷积神经网络的前向计算过程具体步骤如下:若上一步为s4,则根据已载入内存中的模型文件,逐层开始整个卷积神经网络的前向计算过程,当内存中的模型文件都参与计算之后,转至s4进行下一次加载;若上一步为s3,则直接进行前向计算过程直至结束。
[0023]
相对于现有技术,本发明至少具有如下优点:
[0024]
1.本发明运用分步加载的思想对不同大小的模型文件结合具体的嵌入式设备内存空间作分析计算,从而保证以最少的内存访问次数实现模型文件的分步载入,考虑到了实时性的需求,突破了嵌入式设备存储空间较小的限制。
[0025]
2.运用分层计算的思想进行深度卷积神经网络的前向计算过程,区别于现有的实时性较好的端到端的神经网络运算过程,在一些实时性要求不高的应用场景中,结合分步加载机制,在神经网络的一些层设置“暂停”机制,即等到下一步运算所需的参数被载入内存再继续前向计算过程,使算法模型能够嵌入开发在移动终端上,从一定程度上解决了深度卷积神经网络难以落地的问题。
附图说明
[0026]
图1为本发明方法的流程简图。
具体实施方式
[0027]
下面对本发明作进一步详细说明。
[0028]
本发明提出一种卷积神经网络的模型文件分层加载计算方法,将根据不同设备不同的存储能力以及不同算法模型而动态的将模型文件载入到嵌入式设备的内存中,区别于传统的一次性的载入方法,使大而深的卷积神经网络也能够嵌入开发在计算和存储能力有
限的移动终端上,从而解决了深度神经网络难以嵌入开发在计算资源和存储资源有限的设备上的技术问题,进而在一定程度上解决了深度卷积神经网络难以落地到实际应用场景中的问题,具有很好的应用前景。本发明的思路是按照分层(即每层视为一个整体)的思想来进行动态加载和计算的。
[0029]
本发明提出的一种卷积神经网络的模型文件分层加载计算方法,根据具体算法模型动态调整模型文件载入嵌入式设备内存的过程,并采用分层计算方法进行算法模型的运算过程。使用一种动态加载方法将已训练好的模型文件载入到嵌入式设备的内存中,模型文件中保存的是各个卷积层的卷积核参数,卷积核一般为s
×
s的矩阵,单个卷积层的参数个数为s
×
s与该层卷积核个数的乘积,模型文件将参数按照一维数组的格式逐层逐个卷积核存储,动态加载方法的具体步骤如下:
[0030]
模型文件即用来存储卷积神经网络中各个卷积层卷积核参数的文本文件,其中卷积核参数以浮点数格式保存。
[0031]
卷积神经网络的训练过程就是不断更新卷积核参数的过程,最终目的是使网络的性能最优,直观体现就是loss值收敛,将此时的卷积核参数保存下来,得到已训练好的模型文件。采用现有方法进行卷积神经网络的训练。
[0032]
参见图1,一种卷积神经网络的模型文件分层加载计算方法,包括如下步骤:
[0033]
s1、将模型文件加载到嵌入式设备的硬盘或sd卡等外部存储设备中,假设该模型文件的大小为mw。
[0034]
s2、将该嵌入式设备的内存大小记为ma,将该检测程序的最大运行内存记为mb,则该嵌入式设备能够分配给模型文件存储的内存大小mc为mc=(m
a-mb)
×
α,α为余量因子,设为0.9。
[0035]
s3、若mw<=mc,则直接将模型文件一次性加载到嵌入式设备的内存中,转至s5。
[0036]
s4、若mw>mc,则模型文件需要分次加载。
[0037]
s5、进行卷积神经网络的前向计算过程。
[0038]
具体的,所述s4中分次加载的步骤具体如下:
[0039]
根据卷积神经网络前向传播的原理可知,输入图像数据将逐层通过backbone中的卷积层进行卷积运算直至检测头,经过处理后输出结果。因此需要保证每一次加载的模型文件都是n个层的完整参数,n介于1和模型卷积层数no之间。
[0040]
记模型文件计划加载次数为n,
[0041]
则前n-1次计划单次加载的模型文件大小为则
[0042]
则第n次计划加载的模型文件大小为
[0043]
由于卷积神经网络的前向计算过程是逐层进行的,因此为了保证每一次加载的模型文件都是n个层的全部参数,n为1到最大卷积层数之间的任意整数,记已加载模型文件大小为mo,mo初始值为0;记l为模型的第l个卷积层,l初始值为1;
[0044]
设第n次(n初始值为1)实际加载的模型文件大小为m
t
,m
t
初始值为第l个卷积层参数所占内存大小;记m
l
为第l个卷积层参数所占内存大小;第n次实际加载模型文件的流程如下:
[0045]

若且l《no,则l=l 1,更新m
t
=m
t
m
l
,重复第

步,其中no表示模型卷积层数;
[0046]

若则l=l-1,更新m
t
=m
t-m
l

[0047]

若则加载模型文件的[mo,mo m
t
]部分,更新mo=mo m
t

[0048]

若mo《mw,更新l=l 1,转到第

步,即开始第n 1次实际加载模型文件的流程;
[0049]

若mo=mw,则整个模型文件已加载完成,结束。
[0050]
具体的,所述s5进行卷积神经网络的前向计算过程具体步骤如下:若上一步为s4,则根据已载入内存中的模型文件,逐层开始整个卷积神经网络的前向计算过程,当内存中的模型文件都参与计算之后,转至s4进行下一次加载;若上一步为s3,则直接进行前向计算过程直至结束。
[0051]
本发明提出一种卷积神经网络的模型文件分层加载计算方法,在不考虑实时性的前提下,能够将深度卷积神经网络应用到内存资源极为有限的嵌入式设备中,突破了传统神经网络以高性能计算机为基础的限制;若对实时性有较高需求,则可以先对算法模型做轻量化处理,再结合本发明提出的方法,从而实现在嵌入式终端的应用。
[0052]
memory:内存需求,用来衡量卷积神经网络各卷积层的内存占用情况。
[0053]
parameters:即参数个数,用来衡量一个卷积神经网络的规模。
[0054]
下面以卷积神经网络vgg16为例,来分析其原本的内存需求和参数量,对比使用本发明中的方法运行时的内存需求和参数量。由于vgg16的最后三层为全连接层,因此这里我们只列出前13层卷积层。表1为vgg16各卷积层的参数个数和内存需求表。
[0055]
表1
[0056][0057][0058]
从表1可以看出,若采用常用的卷积神经网络加载方法,即需要一次性将整个模型文件加载到内存中,需要占用56mb的内存大小,这对于大多数小内存的嵌入式设备而言,其移植开发就变得十分困难。而采用本文提出的动态加载和分层计算方法,其最小内存需求仅为12mb,相比之前降低了78%,效果十分显著。
[0059]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献