-
深度神经网络具有强大的特征提取能力,在机器学习领域表现优异[1]。将该类算法部署于嵌入式设备上,从而实现工业现场的物体识别,已经成为众多工业智能装备、机器人系统的迫切需求。深度神经网络模型拥有大量的可训练参数,并且通过增加网络层数和卷积核数量可以进一步提升其性能[2]。然而,随着层数和卷积核数的增加,模型变得更加复杂。而嵌入式系统的硬件计算资源有限,会造成性能与资源之间的矛盾,主要表现在两个方面:一方面,大量参数的学习受限于训练数据的规模,过参数化会导致模型冗余的问题。例如,VGG16模型的参数量可达到552MB[3];另一方面,当训练数据不足时会出现过拟合现象,导致模型泛化能力变差。因此,减小过参数化和过拟合问题的影响是深度神经网络嵌入式应用研究的重点。随着嵌入式硬件的性能提升和机器学习新算法的不断提出,对实时嵌入式物体识别算法网络结构正则化方法的研究也在不断深入。
在正则化方法中,Dropout是非常有效的技术,能够有效防止过拟合[1]。该方法在每轮迭代中,将网络中的神经元以一定的概率丢弃,训练完成后,整体的网络架构还会被使用。文献[1]建议输入层的丢弃概率为0.2,而隐藏层的丢弃概率为0.5,输出层则不需要Dropout。由于在相同层中节点被删除的概率相等,减少了神经元之间复杂的共适应关系,因此,每次神经元的合作运算都是全新的,不会依赖于某个神经元或某种结构,在训练中不会只依赖数据的某个特征。Salehinejad等[4]提出了一种自适应技术,降低了由于数据集不平衡和模型参数初始化过于接近训练数据所造成的不利影响。Chen等[5]提出了DropCluster,在卷积层输出中寻找相关特征的模型权重。Qi等[6]提出使用基于变分推理的Dropout正则化将变分递归神经网络(RNN)推广到更高级的聚类,并在每次迭代时随机删除聚类;然后在模型训练过程中对聚类进行学习和更新,使它们适应数据和RNN架构,如门控递归单元(GRU)。Luo 等[7]提出了一种基于Dropout正则化的多尺度融合(MSF)Dropout方法。首先训练几组具有不同Dropout率组合的网络模型,然后使用改进的遗传算法来计算每个网络模型的最优规模。Tam等[8]提出使用神经网络的Fiedler值作为一个工具进行正则化。Tseng等[9]提出了Gradient Dropout方法,在深度神经网络参数的内环优化中随机降低梯度,从而降低基于梯度的元学习的过拟合风险。Steverson等[10]开发了一个测试框架来评估机器学习网络防御的对抗性鲁棒性,使用了深度强化学习和对抗性自然语言处理的技术,实验结果发现更高概率的Dropout会提高鲁棒性。Cai等[11]提出在卷积操作之前Dropout会有更好的正则化效果。胡辉等[12]提出了一种将Dropblock算法和Dropout算法相结合的正则化策略,实现对整个卷积分类网络的浅层、中层和深层网络进行正则化。这种方法可有效加快分类网络的收敛速度和提升稳定性,还能有效提高深度卷积分类网络的分类准确率。钟忺等[13]提出了多尺度融合Dropout(MSF Dropout)方法。这种方法利用验证数据集对多个不同尺度的网络模型进行训练,通过学习得到符合该数据集特征的最佳尺度组合。MSF Dropout具备自适应数据集的能力,网络能够使用最佳尺度来进行高精确度的预测。当选择了合适的尺度数量和尺度梯度后,这种方法的预测精度获得了明显的提升,还能很好地控制计算时间。刘磊[14]提出了一种统一的Dropout算法框架,将基于不同分布采样的Dropout方法统一到一个基于β分布的Dropout框架中,进而将Dropout方法选择问题转变为一个参数调节问题。这种方法被应用在视网膜病变的检测场景下,验证了鲁棒性和先进性。
为了增强模型泛化能力,Wan等[15]提出将每个神经元的权重或偏置以一定的概率设置为0,而不是将神经元的输出设置为0。为简化网络结构,Molchanov等[16]提出变分Dropout正则化方法,基本思想是同时对全连接层和卷积层进行稀疏化,该方法对性能的影响很小,大大减少了标准卷积网络的参数。Srivastava等[17]提出了一种基于贝叶斯理论的方法,将Dropout解释为深度高斯过程的贝叶斯近似,总结出了一种估计神经网络输出置信度的简单方法,此方法广泛应用在不确定性估计中。Provilkov等[18]提出对BPE算法进行Dropout正则化(BPE-Dropout),使性能获得了很大的提升。
深度神经网络的参数众多,其中有些参数对最终的输出结果贡献不大,这些参数称为冗余参数。为此,一些学者提出了利用剪枝或量化来简化网络结构的方法。文献[19]提出对卷积层进行完全的剪枝,但是对卷积输出层进行剪枝时,也会对网络层造成影响。Courbariaux等[20]提出了二值化神经网络(BNN),将参数进行量化,这种方法既快速又节能,但由于参数的精度下降,一定程度上会降低识别的正确率。
以上防止过参数化和过拟合的研究为提高深度神经网络的性能提供了很好的思路,然而对自适应剪枝和针对特定嵌入式平台的研究还值得进一步深入。受恒虚警检测方法启发,本文提出了一种基于恒虚警检测的Dropout方法(CFAR-Dropout)。其主要思想是通过设计一个恒虚警检测器,计算每个节点的激活值,利用恒虚警思想自适应地调整阈值,从而决定哪些节点需要Dropout。该方法在防止过拟合的同时,其本质上是在Dropout时对不同样本进行了区分,使系统对样本的局部结构特征更加敏感,能趋向于保留对特征更感兴趣的节点。
-
模型和计算平台的契合程度决定了模型的实际表现。本文使用的平台是嵌入式平台PYNQ-Z2,考虑这个平台的运算能力,创建了一种基于VGG16(Visual Geometry Group Network-16)的变种卷积网络模型。VGG16模型[3]包含13层卷积层、5层池化层、3层全连接层。卷积层和全连接层都有权重系数,被称为权重层,共16个权重层(卷积-卷积-池化-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-卷积-卷积-卷积-池化-全连接-全连接-全连接);池化层则不涉及权重。该模型中13层卷积层和5层池化层负责进行特征的提取,最后3层全连接层负责完成分类任务,其网络结构参数如表1所示。这种模型的优点是结构简单、权重参数较少,能在一定程度上防止过拟合,但存在需要训练的特征数量大、训练时间过长和调参难度大等问题。由于需要的特征存储容量大,不利于直接部署在嵌入式系统中。因此,需要对参数进行量化操作,减少运算量。
Type Channel Kernel CONV1 64 3×3 CONV2 64 3×3 MAXPOOL1 64 2×2 CONV3 128 3×3 CONV4 128 3×3 MAXPOOL2 128 2×2 CONV5 256 3×3 CONV6 256 3×3 CONV7 256 3×3 MAXPOOL3 256 2×2 CONV8 512 3×3 CONV9 512 3×3 CONV10 512 3×3 MAXPOOL4 512 2×2 CONV11 512 3×3 CONV12 512 3×3 CONV13 512 3×3 MAXPOOL5 512 2×2 FC1(Dropout) / / FC2(Dropout) / / FC3 / / 表 1 网络结构参数表
Table 1. Network structure
-
Dropout作为消除冗余的重要方法,自从提出就得到了广泛的应用,其工作原理如图1所示。图1(a)示出了原神经网络的节点连接状态,图1(b)示出了Dropout正则化后的节点连接状态,图中虚线圆是被丢弃的节点,虚线箭头是节省的运算通路,可以直观地感受到通过Dropout正则化,运算量将大大减少。
经过Dropout正则化产生的局部网络本身属于原网络的一部分,虽然总的网络个数增加了,但参数却比原网络更少,能有效防止模型过拟合问题。因此,在保持训练复杂度的情况下可以同时得到多个网络的训练结果,当测试时再将这些局部网络组合起来,可以提升网络的泛化性。另一方面,神经网络的节点之间相互影响,很容易拟合到一些噪声,可能产生过拟合现象。Dropout正则化随机选择节点删除,打破了这种相互影响,能有效防止模型的过拟合问题[21]。这个过程可以表示为
式中:f(x)为激活函数;x是该层的输入;W是该层的权值矩阵;y为该层的输出;m为该层的掩膜(mask),mask中每个元素为1的概率为p。
Wan等[15]提出的Dropconnect方法是对Dropout正则化的一种泛化。与式(1)不同的是,式(2)中的M是一个掩模矩阵,相乘后权重以一定的概率被设置为0和1。Dropconnect正则化方法在训练时网络层的输出可以被写成
-
深度神经网络训练期间更新生成的参数包含大量冗余信息。对参数的量化主要包括神经网络层的3个方面:输入激活、突触权重和输出激活。如果所有3个部分都是二进制的,称之为完全二值化;具有一个或两个部分是二进制的情况称为部分二值化[2]。本文对权重进行二值化。
深度神经网络中的目标函数
$F\left( {\omega } \right)$ 可以分解为多个函数${f_1},{f_2}, \cdots ,{f_n}$ 。考虑经验风险最小化,即本文采用的神经网络优化方法是随机梯度下降法(SGD),αt为速率,它在每次迭代中从
${f_1},{f_2}, \cdots ,{f_n}$ 中随机选择一个函数,那么为了使用低精度的权重表示来训练网络,需要使用量化函数Q(x)来将
$ {\omega } $ 量化为$Q\left( {\omega } \right)$ 。通过确定性舍入,均匀确定量化函数,可以获得最接近浮点值的量化值:其中,Δ表示量化步长或分辨率,即可表示的最小正数。考虑二进制权重时,所有权重都被约束为两个值
$\omega \in \left\{ { - 1,1} \right\}$ ,并且统一舍入成为${Q_d}\left( \omega \right) = {\rm{sign}}\left( {\omega } \right)$ 。然后,通过更新来得到新的量化权重:其中,
${\omega _b}$ 表示低精度权重。使用全精度累积梯度更新,并在梯度计算之前对权重进行量化,将精度权值约束为{−1, 1},即完成参数的二值化后,可以显著减少计算参数权重需要消耗的资源,但实验结果的准确性会有一定程度的下降。为了降低这种负面影响,可以适度地增加网络层数,这就需要在实验中进行权衡。
-
恒虚警检测是利用信号和噪声的统计特性等信息来建立最佳判决的数学理论,常用在雷达系统中。它主要解决在受噪声干扰的观测中有无信号的判决问题[22]。恒虚警检测的基本流程是在保持虚警概率α为恒定的条件下对接收机输出的信号和噪声进行判别,以确定目标信号是否存在。通过恒虚警检测保持恒虚警率,可以有效地抗干扰。
在雷达信号检测中,当外界干扰强度变化时,雷达能自动调整其灵敏度,使雷达的虚警概率保持不变,这种特性称为恒虚警率特性。本文受此启发提出了基于恒虚警检测的Dropout正则化方法。设置一个恒虚警率,将深度神经网络神经元的输入看作输入信号,将神经元的激活值看作输出信号。这种方法可以在输入数据不同和输出结果分布不均匀时自适应调整阈值,使分类效果依然良好。
若网络的激活函数为
$y = f\left( x \right)$ ,设其输入为${X = }\left[ {{X_1},{X_2},{X_3}, \ldots ,{X_m}} \right]$ ,权重${\omega = }\left[ {{\omega _1},{\omega _2},{\omega _3}, \ldots ,{\omega _m}} \right]$ ,输出Y为那么,节点的激活值为
式中,M为一个二值掩模矩阵。在Dropout正则化方法中,M是一个服从伯努利分布取值的掩模矩阵,其取值概率设置之后是固定的[1]。在稀疏性Dropout正则化方法中,节点以激活值的中值为阈值取舍,其阈值也是固定的[15]。此时,M中的元素值取决于节点的激活值。当节点的激活值大于阈值λ时,mij取1;激活值小于阈值β时,mij取0。每次进行恒虚警检测后,系统可以自适应地调整阈值λ,阈值λ在每一层都可能不同。
在实验中,神经网络训练需要设置权重初始值,选取的初始值应当尽量使各层激活值的分布有适当的广度。分别使用标准差为1和0.01的高斯分布作为权重初始值时,各层激活值的分布如图2所示。
图 2 权重初始值是标准差为1和0.01的高斯分布时激活值的分布
Figure 2. Initial weight value is the distribution of the activation value for a Gaussian distribution with standard deviations of 1 and 0.01
图2(a)显示标准差为1时,各层激活值呈偏向0和1的分布。偏向0和1的数据分布会造成反向传播中梯度的值不断变小,最后消失,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习,这种现象称为梯度消失。图2(b)显示标准差为0.01时,不同层的激活值过于集中在一个区域,这种现象意味着激活值表现的特征基本相同,很多特征被忽略,最后的识别效果会受影响。为了避免这两种现象,使每一层能根据当前状态自动调整,当前一层节点数为n时,将初始值设为标准差为
$1/\sqrt n $ 的高斯分布。此时激活值的分布如图3所示。图 3 权重初始值是标准差为
$ 1/\sqrt{n} $ 的高斯分布时激活值的分布Figure 3. Initial value of the weight is the distribution of the activation value with a Gaussian distribution of standard deviation
$ 1/\sqrt{n} $ 从图3中可以发现,将权重初始值设为标准差为
$1/\sqrt n $ 的高斯分布时,激活值的分布更有广度,神经网络既不会梯度消失,也不会过于关注某些特征,能更高效地学习。对模型中的某一层进行恒虚警检测时,首先,进行初始化,阈值λ取集合
$\left\{ {{R_1},{R_2}, \ldots ,{R_m}} \right\}$ 的中值;然后,将激活值大于λ的节点定义为高激活值节点Rih,小于λ的节点定义为低激活值节点$R_j^{\rm{l}}\left( {j = n - i} \right)$ ,公式如下:理论上,高激活值的节点代表对样本感兴趣程度高的部分,低激活值的节点代表对样本感兴趣程度低的部分,所以低激活值节点Rjl应该删除。但在实际应用中,数据分布并不均匀,中值并不能很好地区分高低激活,所以本文提出了基于恒虚警检测的Dropout正则化方法。
在雷达系统中,当接收机有信号输入D0,而检测器判为无信号H1时,称为漏警,漏警率为PM;当接收机无信号输入D1,而检测器判为有信号H0时,称为虚警,虚警率为PF。这两个概率都是越小越好,但理论上两者无法同时达到最小。在其他条件一定时,虚警概率越小,漏警概率就会越大;漏警概率越小,虚警概率就会越大。转化为统计的语言就是一个假设检验犯第一类错误和第二类错误的概率,无法同时变小。所以,可采用的做法是给定其中一个错误的概率不超过某个值时,让另一个错误的概率尽量小。本文中让虚警率恒定,使漏警率最小,从而求得阈值。虚警率PF和漏警率PM分别为
利用拉格朗日乘子λ构造目标函数
当PF=α时,漏警率可以达到最小值。此时,目标函数J对输入z求导。可得
然后,可由式(14)求出阈值λ
本文中假定激活值数据服从高斯分布,如果某个节点为高激活值节点Rh,但判为低激活值节点Rl,称为漏警Rhl。如果某个节点为低激活值节点Rl,但判为高激活值节点Rh,这种情况称为虚警Rlh。虚警率PF和漏警率PF分别为
由PF=α,可以求出R0,则λ为
经过以上步骤,得到调整后的阈值,可以将节点分为高激活值节点Rh和低激活值节点Rl。
文献[23]指出相关性接近0的弱相关节点对相关性高的节点有补充作用,所以低激活节点并非全无用。若保留比例为
$\gamma \left( {0 \le \gamma \le 1} \right)$ ,则相应的高激活值节点删除的比率为1-γ。高激活值节点的掩模矩阵中的元素以伯努利概率P+取值为0或1,低激活值节点的掩模矩阵中的元素以伯努利概率P-取值为0或1。按以下方式处理节点
其中:S为保留节点的比率;R+为保留的节点;R-为删除的节点。CFAR-Dropout的原理如图4所示。
当进入新的一层进行计算时,输入发生变化,依旧需要将虚警率保持为α,所以将α称为恒虚警率。经过后文的实验,得出α得最佳取值范围为0.03到0.12,本文取0.1。
-
本文实验在嵌入式平台PYNQ-Z2上完成。PYNQ主要芯片采用ZYNQ XC7Z020,其内部异构双核ARM-A9 CPU+FPGA,PS(ARM)和PL(FPGA)之间通过片上高速AXI总线进行数据交互,能有效克服ARM和FPGA间数据传输的低速、延时、外界干扰等问题。在PYNQ的ARM-A9 CPU上运行的软件包括Jupyter Notebooks网络服务器、 IPython内核和程序包、Linux-Ubuntu以及FPGA的基本硬件库和API。
PC端负责进行数据集的准备和预处理,选择合适的物体识别方案,搭建好网络结构,训练后得到参数权重。通过VIVADO HLS创建卷积Pool和池化Conv IP核,设计的加速电路如图5所示。由于神经网络中的卷积层与全连接层相似,所以全连接层可以复用卷积的IP核。
嵌入式平台PYNQ-Z2加载PC端训练的权重参数,将加速电路的比特流文件烧写在PL端形成加速电路。之后,系统通过相机或者以太网接口开始读取图片或者视频帧。PS端和PL端通过AXI总线进行信息交互, PS端都会调用PL端的加速电路进行运算神经网络的每一层。运算结束后,实现物体识别。系统流程如图6所示。
-
为了测试CFAR-Dropout正则化的效果,以Dropout正则化方法作为比较对象,采用基于VGG16的二值化模型。实验采用3种公开数据集,其中数据集CIFAR-10包含6万张32×32的RGB图片,共分为10个类别,训练数据50 000张图片(每类5 000张),测试数据10 000张图片;数据集MNIST由大小为28×28的手写数字图片组成,包含60 000张训练图片10 000张测试图片;数据集SVHN是真实世界的街景门牌号数据集,结构与MNIST类似,其训练集含有73 257张图像,其测试集含有26 032张图像。
实验中一次输入的数据量不能过大,所以将训练集分为多个批次,分批次训练完成。如果批次数量取值过小,训练数据就会非常难收敛;如果增大批次数量,相对处理速度加快,但所需内存容量增加,所以需要选择合适的批次数量,在内存效率和内存容量之间达到平衡。训练批次数量设置为200,测试集的批次数量设置为100。最终,数据集CIFAR-10和MNIST各测试了100批,共10000次。数据集SVHN测试了261批,共26 032次。所有测试集测试完毕,取各批次错误率的均值,得到平均错误率。
将虚警率α设置为不同大小,对3个数据集进行多次重复实验,其折线图如图7所示。
由图7可知,当α为0.03~0.12时,测试错误率较低。α取值过小,在实际中很难实现,恒虚警检测没有起到作用,最极端的情况下,虚警率取值等于0时,相当于使用标准的Dropout方法;α取值过大,相当于人为增加了误差,错误率也会上升。
(1)正则化方法的过拟合性能测试。将本文的网络模型命名为A,α设置为0.1。采用不同的正则化方法,对数据集CIFAR-10和MNIST各测试了10 000次;对数据集SVHN测试了26 032次,实验结果如表2所示。
Model Method Training error rate/% Testing error rate /% A- MNIST / 1.56 16.32 A- MNIST Dropout 2.95 3.12 A- MNIST CFAR-Dropout 1.89 2.01 A-CIFAR10 / 12.16 22.04 A-CIFAR10 Dropout 14.23 15.26 A-CIFAR10 CFAR-Dropout 12.21 13.51 A-SVHN / 4.46 18.53 A-SVHN Dropout 7.38 7.44 A- SVHN CFAR-Dropout 5.37 5.58 表 2 不同正则化方法的错误率
Table 2. Error rates of different regularization methods
从表2可以看到,当不使用正则化方法时,测试误差远远大于训练误差,产生了过拟合现象。使用Dropout和CFAR-Dropout方法后,测试误差接近训练误差,说明这两种方法都能有效缓解过拟合。CFAR-Dropout在3个数据集上都取得了最好的实验结果,但由于数据集本身不同的特征,CFAR-Dropout方法对训练CIFAR-10数据集的误差降低最明显。与Dropout相比,CFAR-Dropout方法由于更敏感,进一步了降低了训练和测试误差,降低程度在2%左右。
(2)在PYNQ-Z2上的实验。首先,嵌入式PYNQ-Z2读取加载训练好的参数权重,将bit流文件烧录生成加速电路;然后,使用PYNQ-Z2的以太网接口或者摄像头读取图像,进行识别后输出结果。实验结果如表3所示。
Model Method Error rate (LAN)/% Error rate (Cam)/% A- MNIST Dropout 2.98 3.32 A- MNIST CFAR-Dropout 1.93 2.78 A-CIFAR10 Dropout 14.56 15.04 A-CIFAR10 CFAR-Dropout 12.42 13.05 A-SVHN Dropout 7.62 9.68 A- SVHN CFAR-Dropout 5.59 6.05 表 3 不同的正则化方法在PYNQ上的错误率
Table 3. Different regularization methods have different training error rates on PYNQ
从表3可以看到,CFAR-Dropout方法的实测错误率比Dropout方法更低。PYNQ通过以太网接口直接读取图像和训练时的测试误差率差别极小,在0.5%之内,这一现象说明神经网络成功部署在嵌入式平台上,可以正常运行。使用相机拍照时,错误率略微上升。经过分析,这种现象的出现是因为受到外界光照、摄像头性能等因素的影响。
(3)参数量化的效果测试。对神经网络的权重进行二值化之后,速率大大提升,但是准确率会有一定程度的下降。在这种情况下,需要权衡网络大小、速率和精度之间的关系。在MNIST数据集上进行了一组实验,重复实验10 000次,比较了网络层数不同时的浮点错误率和二进制错误率,结果见表4。
Network layer number Binarization error rate/% Floating point error rate/% Energy efficiency ratio 64 6.43 3.78 2.67 128 6.11 2.73 3.35 512 4.11 1.72 3.54 1 024 2.23 1.21 4.23 2 048 1.37 0.98 6.34 表 4 网络层数对正确率的影响
Table 4. Influence of network layer numbers on accuracy
从表4可以发现,当神经元层数比较少时,错误率差别较大;当神经元层数增加时,错误率差别变小,能效比增加。实际应用中,可以通过增加一定层数的方式降低错误率,但当网络层数增加时,运算量又会增大,这就需要对速率和准确率进行权衡,在具体的实验中选择最恰当的网络层数。
实验还表明,参数二值化可以极大地提高运算速率,表5示出了不同网络结构的参数量和运行效率对比结果。
Type Parameters/MB Convolution layer Connection layer GFLOPS VGG16 138.36 13 3 15.5 MobileNet 4.2 5 3 0.54 ResNet50 25.6 53 1 3.9 A 10.5 13 3 241.3 表 5 不同网络结构下参数与运算量变化
Table 5. Variation of parameters and computation under different network structures
对比本文和VGG16的网络结构可以发现,虽然两者结构类似,卷积层和全连接层数量一致,但本文模型的参数量明显减少,只有原网络结构的8%,运行速率明显增加。与其他网络结构对比,本文的网络结构的运行速率在嵌入式上具有明显优势。
-
以一个4×6细胞培养板为例,实验设备包括一台PC、一台PYNQ-Z2、一个摄像头、一个显示器、测试的图片和物体,如图8所示。
(1)数据集的准备。训练需要制作特定数据集,分别控制光照、背景和拍摄角度等变量,拍摄原始数据集图片。但由于原始数据量始终有限,所以需要通过数据增强的方法增加样本数。本文使用的是有监督单样本数据增强,原始图片经过加噪、模糊和颜色变换,然后进行翻转、裁剪、变形和缩放等几何操作,可以生成大量新的数据集图片。将图片转换为类似于CIFAR-10数据集的格式,包含数据:是一个numpy格式数组,阵列的每一行存储一个224×224的彩色图像。标签:是一个列表,索引处的数字指示数组中对应的映像数据。标签名:是一个列表,用来保存标签名。
(2)输入图像的预处理。图像由摄像头输入后,在PYNQ-Z2上进行图像的预处理。图像预处理包括图像尺寸、通道顺序和图像格式标准化的调整,目的是满足识别网络的要求。由于对象本身的透明和反光特殊性,对图像首先进行中值滤波,之后采取了一种边缘提取方法提升准确度,这种方法可以计算出更小的梯度变化。按照这种方法设置好x方向和y方向的3×3边缘检测算子:
图9示出了一般物体的边缘提取结果,图10示出了细胞培养板的边缘提取结果。其中图9(a)、图10(a)为原图,图9(b)、图10(b)为用Canny算子进行边缘提取,图9(c)、图10(c)为用本文算子进行边缘提取。
通过检测可以发现,对于一般物体,Canny算子和本文算子的提取效果近似。对于透明的细胞培养板,本文算子的提取效果更好。原因是透明物体的边缘像素值相差比较小,本文算子通过将滤波器中的权重系数放大,从而增大了像素值间的差异。
由于输入的是640×480、通道顺序为BGR的彩色图像,为了适应识别网络,需要调整图像尺寸为224×224。PYNQ-Z2是ARM+FPGA双核结构,安装了Linux系统,可以使用python进行编译工作。在系统顶层直接调用OpenCv编写函数作相应调整,用相应函数或模块即可调整图像尺寸,变更图像通道顺序,使图像格式符合系统需要。
(3) 实验结果。系统通过bin文件加载好参数权重,再将bit流文件烧录形成加速电路,调用FPGA部分进行加速运算,最终ARM部分输出结果如图11所示。
图11(a)为程序中的判断结果,图11(b)为输出在显示器上的结果。实验步骤包括关键目标检测、语义标注和目标框选。嵌入式PYNQ-Z2目标检测完成后,在识别的物体周围进行目标框选,并在左下角标注物体种类。图11中两图左下角标注均为“4×6细胞培养板”,识别成功。通过函数记录耗时,此次推理过程总共花了1538微秒,而优化之前推理需要250 454 ms,速率显著提升。
-
为进一步提高深度神经网络Dropout正则化算法的性能并验证其在移液机器人物体识别中的应用效果,本文提出了基于恒虚警的Dropout正则化方法(CFAR-Dropout)。实验结果表明,本文方法通过自适应地删减神经元并对参数进行量化优化后,可以有效防止过拟合和过参数化现象。将优化的网络结构部署在嵌入式PYNQ-Z2上后,可以达到更好的识别精度和速率,可以应用于移液机器人系统来有效提高嵌入式物体识别系统的性能。
基于恒虚警的深度神经网络Dropout正则化方法
Dropout Regularization Method of Convolutional Neural Network Based on Constant False Alarm Rate
-
摘要: 为进一步提高深度神经网络算法在嵌入式机器人系统中的物体识别性能,提出了一种基于恒虚警检测的深度神经网络Dropout正则化方法(CFAR-Dropout)。首先,通过对权重进行量化,将权重和激活从浮点数减少到二进制值;然后,设计了一个恒虚警检测器(CFAR),保持一定的虚警率,自适应地删减一些神经元节点,优化参与计算的神经元节点;最后,在嵌入式平台PYNQ-Z2上,使用基于VGG16的优化模型对算法的物体识别性能进行实验验证。实验结果表明,与使用经典的Dropout正则化方法相比,CFAR-Dropout正则化方法的错误率降低了2%,有效防止了过拟合;与原本的网络结构相比,参数量所占内存减少到8%左右,有效防止了过参数化。Abstract: Compared with traditional machine learning algorithms, deploying deep neural networks in embedded systems can significantly improve the performance of robot system object recognition. However, the computing resources and memory capacity of the embedded platform are limited. It is necessary to simplify the network structure and improve the system efficiency through methods such as model pruning and parameter quantification. It is also necessary to prevent overfitting through Dropout regularization and improve the accuracy of system recognition. In order to further improve the object recognition performance of the deep neural network algorithm in the embedded robot system, this paper proposes a deep neural network dropout regularization method based on constant false alarm detection (CFAR-Dropout). First, by quantizing the weights, the weights and activations are reduced from floating point numbers to binary values; then, a constant false alarm detector (CFAR) is designed to maintain a certain false alarm rate and adaptively delete some neuron nodes. Optimize the neuron nodes involved in the calculation; finally, on the embedded platform PYNQ-Z2, an optimization model based on VGG16 is used to experimentally verify the object recognition performance of the algorithm. Experimental results show that, compared with the classic Dropout regularization method, the error rate of the CFAR-Dropout regularization method is reduced by 2%, effectively preventing overfitting; compared with the original network structure, the amount of memory occupied by the parameters is reduced to Around 8%, effectively preventing over-parameterization.
-
Key words:
- object recognition /
- embedded /
- deep neural network /
- constant false alarm /
- regularization
-
表 1 网络结构参数表
Table 1. Network structure
Type Channel Kernel CONV1 64 3×3 CONV2 64 3×3 MAXPOOL1 64 2×2 CONV3 128 3×3 CONV4 128 3×3 MAXPOOL2 128 2×2 CONV5 256 3×3 CONV6 256 3×3 CONV7 256 3×3 MAXPOOL3 256 2×2 CONV8 512 3×3 CONV9 512 3×3 CONV10 512 3×3 MAXPOOL4 512 2×2 CONV11 512 3×3 CONV12 512 3×3 CONV13 512 3×3 MAXPOOL5 512 2×2 FC1(Dropout) / / FC2(Dropout) / / FC3 / / 表 2 不同正则化方法的错误率
Table 2. Error rates of different regularization methods
Model Method Training error rate/% Testing error rate /% A- MNIST / 1.56 16.32 A- MNIST Dropout 2.95 3.12 A- MNIST CFAR-Dropout 1.89 2.01 A-CIFAR10 / 12.16 22.04 A-CIFAR10 Dropout 14.23 15.26 A-CIFAR10 CFAR-Dropout 12.21 13.51 A-SVHN / 4.46 18.53 A-SVHN Dropout 7.38 7.44 A- SVHN CFAR-Dropout 5.37 5.58 表 3 不同的正则化方法在PYNQ上的错误率
Table 3. Different regularization methods have different training error rates on PYNQ
Model Method Error rate (LAN)/% Error rate (Cam)/% A- MNIST Dropout 2.98 3.32 A- MNIST CFAR-Dropout 1.93 2.78 A-CIFAR10 Dropout 14.56 15.04 A-CIFAR10 CFAR-Dropout 12.42 13.05 A-SVHN Dropout 7.62 9.68 A- SVHN CFAR-Dropout 5.59 6.05 表 4 网络层数对正确率的影响
Table 4. Influence of network layer numbers on accuracy
Network layer number Binarization error rate/% Floating point error rate/% Energy efficiency ratio 64 6.43 3.78 2.67 128 6.11 2.73 3.35 512 4.11 1.72 3.54 1 024 2.23 1.21 4.23 2 048 1.37 0.98 6.34 表 5 不同网络结构下参数与运算量变化
Table 5. Variation of parameters and computation under different network structures
Type Parameters/MB Convolution layer Connection layer GFLOPS VGG16 138.36 13 3 15.5 MobileNet 4.2 5 3 0.54 ResNet50 25.6 53 1 3.9 A 10.5 13 3 241.3 -
[1] ALEX K, ILYA S, GEOFFREY E H. Imagenet classification with deep convolutional neural networks[J]. Communications of the ACM, 2017, 60(6): 84-90. doi: 10.1145/3065386 [2] ANDRI R, CAVIGELLI L, ROSSI D, et al. YodaNN: An architecture for ultralow power binary-weight CNN acceleration[J]. IEEE Transactions on CAD of Integrated Circuits and Systems, 2018, 37(1): 48-60. doi: 10.1109/TCAD.2017.2682138 [3] SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[C]//International Conference on Learning Representations. [s. l.]: [s. n.], 2015: 1-14. [4] SALEHINEJAD H, VALAEE S. Ising-dropout: A regularization method for training and compression of deep neural networks[C]//2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). USA: IEEE, 2019: 3602-3606. [5] CHEN L, GAUTIER P, AYDORE S. DropCluster: A structured dropout for convolutional networks[EB/OL]. arxiv. org, (2020-2-7) [2020-10-10]. https:arxiv.org/abs/2002.02997. arXiv preprint arXiv: 2002.02997, 2020. [6] QI J, LIU X, TEJEDOR J. Variational inference-based Dropout in recurrent neural networks for slot filling in spoken language understanding[EB/OL]. arxiv. org, (2020-8-23)[2020-10-10]. https:arxiv.org/abs/2009.01003. [7] LUO R, ZHONG X, CHEN E. Image classification with a MSF dropout[J]. Multimedia Tools and Applications, 2020, 79(7): 4365-4375. [8] TAM E, DUNSON D. Fiedler regularization: Learning neural networks with graph sparsity[EB/OL]. arxiv. org, (2020-3-2)[2020-10-10]. https:arxiv.org/abs/2003.00992?context=cs.LG. [9] TSENG H Y, CHEN Y W, TSAI Y H, et al. Regularizing meta-learning via gradient Dropout[EB/OL]. arxiv. org, (2020-4-13)[2020-10-10]. https:arxiv.org/abs/2004.05859. [10] STEVERSON K, MULLIN J, AHISKALI M. Adversarial robustness for machine learning cyber defenses using log data[EB/OL]. arxiv. org, (2020-6-9)[2020-10-10]. https:arxiv.org/abs/2007.14983v1. [11] CAI S, SHU Y, WANG W, et al. Effective and efficient dropout for deep convolutional neural networks[EB/OL]. arxiv. org, (2019-4-6)[2020-10-10]. https:arxiv.org/abs/1904.03392. [12] 胡辉, 司凤洋, 曾琛, 等. 一种结合Dropblock和Dropout的正则化策略[J]. 河南师范大学学报(自然科学版), 2019, 47(6): 51-56.
[13] 钟忺, 陈恩晓, 罗瑞奇, 等. 多尺度融合dropout优化算法[J]. 华中科技大学学报(自然科学版), 2018, 46(9): 35-39.
[14] 刘磊. 基于深度神经网络的视网膜病变检测方法研究[D]. 合肥: 中国科学技术大学, 2019.
[15] WAN L, ZEILER M, ZHANG S, et al. Regularization of neural networks using dropconnect[J]. Journal of Machine Learning Research, 2013, 28(1): 1058-1066. [16] MOLCHANOV D, ASHUKHA A, VETROV D. Variational dropout sparsifies deep neural networks[C]// Proceedings of the 34th International Conference on Machine Learning. USA: ACM, 2017: 2498-2507. [17] SRIVASTAVA N, HINTON G, KRIZHEVSKY A, et al. Dropout: A simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1): 1929-1958. [18] PROVILKOV I, EMELIANENKO D, VOITA E. Bpe-dropout: Simple and effective subword regularization[EB/OL]. arxiv. org, (2019-10-29)[2020-10-10]. https:arxiv.org/abs/1910.13267. [19] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324. doi: 10.1109/5.726791 [20] COURBARIAUX M, HUBARA I, SOUDRY D, et al. Binarized neural networks: Training deep neural networks with weights and activations constrained to+1 or-1[EB/OL]. arxiv. org, (2016-2-9)[2020-10-10]. https:arxiv.org/abs/1602.02830v3. [21] HEGDE G, RAMASAMY N, KAPRE N. CaffePresso: An optimized library for deep learning on embedded accelerator-based platforms[C]//2016 International Conference on Compliers, Architectures, and Sythesis of Embedded Systems (CASES). USA: IEEE, 2016: 1-10. [22] 何友, 关键, 孟祥伟. 雷达目标检测与恒虚警处理[M]. 北京: 清华大学出版社, 2011: 15-32.
[23] SUN Y, WANG X, TANG X. Sparsifying neural network connections for face recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. USA: IEEE, 2016: 4856-4864. -