0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅论深层卷积神经网络的剪枝优化

电子工程师 来源:电子技术应用第12期 作者:马治楠 韩云杰 彭 2021-04-28 10:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

摘要: 随着近几年来深度学习的兴起,其在目标检测、图像分类、语音识别、自然语言处理等机器学习领域都取得了重大的突破,其中以卷积神经网络在深度学习中的运用较多。自VGGNet出现以来,深度学习逐渐向深层的网络发展,网络越来越深,这不仅增大了对硬件平台存储、运行内存的需求,还大大增加了计算量,对硬件平台资源的要求越来越高。

因此将深度学习应用于嵌入式平台尤为困难。对此,通过对模型进行剪枝的方法将训练好的网络模型压缩处理,在基本保证准确率的情况下去除不重要的参数,缩减模型,减小网络的计算复杂度,将深度学习应用于嵌入式平台。

0 引言

深度学习起源于人工神经网络,后来LECUN Y提出了卷积神经网络LeNet-5[1],用于手写数字识别,并取得了较好的成绩,但当时并没有引起人们足够的注意。随后BP算法被指出梯度消失的问题,当网络反向传播时,误差梯度传递到前面的网络层基本接近于0,导致无法进行有效的学习。

2006年HINTON G E提出多隐层的网络可以通过逐层预训练来克服深层神经网络在训练上的困难[2],随后深度学习迎来了高速发展期。一些新型的网络结构不断被提出(如AlexNet、VGGNet、GoogleNet、ResNet等),网络结构不断被优化,性能不断提升,用于图像识别可以达到很好的效果。然而这些网络大都具有更多的网络层,对计算机处理图像的能力要求很高,需要更多的计算资源,一般使用较好的GPU来提高训练速度,不利于在硬件资源(内存、处理器、存储)较低的设备运行,具有局限性。

深度学习发展到目前阶段,其研究大体可以分为两个方向:(1)设计复杂的网络结构,提高网络的性能;(2)对网络模型进行压缩,减少计算复杂度。在本文将讨论第二种情况,去除模型中冗余的参数,减少计算量,提高程序运行速度。

目前很多网络都具有更复杂的架构设计,这就造成网络模型中存在很多的参数冗余,增加了计算复杂度,造成不必要的计算资源浪费。模型压缩大体有以下几个研究方向:(1)设计更为精细的网络结构,让网络的性能更为简洁高效,如MobileNet网络[3];(2)对模型进行裁剪,越是结构复杂的网络越存在大量参数冗余,因此可以寻找一种有效的评判方法,对训练好的模型进行裁剪;

(3)为了保持数据的精度,一般常见的网络模型的权重,通常将其保存为32 bit长度的浮点类型,这就大大增加了数据的存储和计算复杂度。因此,可以将数据进行量化,或者对数据二值化,通过数据的量化或二值化从而大大降低数据的存储。除此之外,还可以对卷积核进行核的稀疏化,将卷积核的一部分诱导为0,从而减少计算量[4]。

本文着重讨论第二种方法,对模型的剪枝,通过对无用权重参数的裁剪,减少计算量。

1 CNN卷积神经网络

卷积神经网络是一种前馈式网络,网络结构由卷积层、池化层、全连接层组成[5]。卷积层的作用是从输入层提取特征图,给定训练集:

6368160324185828021761918.gif

在卷积层后面一般会加一个池化层,池化又称为降采样,池化层可以用来降低输入矩阵的纬度,而保存显著的特征,池化分为最大池化和平均池化,最大池化即给出相邻矩阵区域的最大值。池化层具有减小网络规模和参数冗余的作用。

2 卷积神经网络剪枝

6368160326517124681388836.gif

6368160328756254815269472.gif

2.1 模型压缩的方法

本文用以下方法修剪模型:(1)首先使用迁移学习的方法对网络训练,然后对网络进行微调,使网络收敛并达到最优,保存模型;(2)对保存的模型进行修剪,并再次训练,对修剪后的模型参数通过训练进行微调,如此反复进行,直到检测不到可供裁剪的卷积核;(3)对上一步裁剪后的模型再次训练,直到训练的次数达到设定的标准为止。具体的流程如图2所示。

6368160330249990105358372.gif

上述的处理流程比较简单,重点是如何评判网络模型中神经元的重要性。本文用价值函数C(W)作为评判重要性的工具。对于数据集D,经训练后得到网络模型Model,其中的权重参数为:

6368160333748393145490252.gif

6368160334423386497570206.gif

2.2 参数评估

网络参数的评估在模型压缩中有着非常重要的作用。一般采用下面的这种方法,通过比较权重参数的l2范数的大小,删除l2范数较小的卷积核[8]。除此之外,还可以通过激活验证的方法对参数进行评判,将数据集通过网络前向传播,对于某个网络节点,若有大量通过激活函数后的数值为0或者小于一定的阈值,则将其舍去。

2.2.1 最小化l2范数

6368160338676043048249929.gif

3 实验结果

3.1 训练和剪枝结果

本设计在Ubuntu16.04系统,搭载1080Ti显卡的高性能服务器上进行实验,使用Pytorch深度学习框架进行训练和测试。本设计使用VGG16网络,对16类常见的路面障碍物图片进行训练,其中数据集中的训练集有24 000张图片,训练集12 000张图片。在VGG16网络中有16个卷积网络层,共4 224个卷积核。采用迁移学习的方法对其进行训练,设置epoch为30,训练的结果如图3所示。

6368160341543245505133610.gif

图3纵轴表示训练的准确率,横轴表示迭代次数,最后的训练准确率为97.97%。

将上面的训练参数保存为模型,对其进行剪枝,分5次对其修剪,首先会根据l2范数最小值筛选出要修剪的网络层中的卷积核,每次去除512个卷积核,修剪后模型中剩余的卷积核数量如图4所示。

6368160344351030337201847.gif

图4中纵轴表示模型中保留的卷积核的数量,从最初的4 224降到1 664,裁剪率达到60.6%。5次迭代修剪后的准确率如图5所示。

6368160346057263738960776.gif

对修剪后的网络重新训练得到最终的修剪模型,训练过程如图6所示。

6368160347963495239166655.gif

最后达到98.7%的准确率。剪枝前模型大小为512 MB,剪枝后模型可以缩小到162 MB,将模型的内存占用降低了68.35%。

3.2 嵌入式平台下的移植测试

在嵌入式平台树莓派3代B型上移植Pytorch框架,树莓派3b拥有1.2 GHz的四核BCM2837 64位ARM A53处理器,1 GB运行内存,板载BCM43143WiFi。由于树莓派运行内存有限,故增加2 GB的swap虚拟内存,用于编译Pytorch框架源码。将在GPU服务器上训练好的网络模型移植到嵌入式平台,对其进行测试。

对123张测试图片进行检测分类,载入裁剪前的原始模型,用时109.47 s,准确率为95.08%。载入剪枝后的模型,同样对123张图片进行测试,用时41.85 s,准确率达到96.72%。结果如图7所示,可以看到对模型裁剪后时间上减少了61%,速度有了很大提升。

6368160351333774869500050.gif

4 结论

目前深度学习是一个热门的研究方向,在图像检测、分类、语音识别等方面取得了前所未有的成功,但这些依赖于高性能高配置的计算机,也出现了各种深度学习框架以及网络模型,但是可以预见深度学习即将迈入一个发展平缓期,如果不能有一个宽阔的应用领域,深度学习的发展将很快被搁浅。诚然,将其应用于嵌入式平台将会是一个非常好的发展方向。相信未来深度学习在嵌入式领域会有一个更大的突破,部署于移动平台将不再是一个难题。

作者:马治楠 韩云杰 彭琳钰 周进凡 林付春 刘宇红

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4697

    浏览量

    89576
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66850
  • 卷积神经网络

    关注

    4

    文章

    371

    浏览量

    12719
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自动驾驶中常提的卷积神经网络是个啥?

    在自动驾驶领域,经常会听到卷积神经网络技术。卷积神经网络,简称为CNN,是一种专门用来处理网格状数据(比如图像)的深度学习模型。CNN在图像处理中尤其常见,因为图像本身就可以看作是由像
    的头像 发表于 11-19 18:15 1841次阅读
    自动驾驶中常提的<b class='flag-5'>卷积</b><b class='flag-5'>神经网络</b>是个啥?

    CNN卷积神经网络设计原理及在MCU200T上仿真测试

    数的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题。当x&gt;0 时,梯度恒为1,无梯度耗散问题,收敛快;当x&lt;0 时,该层的输出为0。 CNN
    发表于 10-29 07:49

    NMSIS神经网络库使用介绍

    :   神经网络卷积函数   神经网络激活函数   全连接层函数   神经网络池化函数   Softmax 函数   神经网络支持功能
    发表于 10-29 06:08

    构建CNN网络模型并优化的一般化建议

    通过实践,本文总结了构建CNN网络模型并优化的一般化建议,这些建议将会在构建高准确率轻量级CNN神经网络模型方面提供帮助。 1)避免单层神经网络:我们清楚
    发表于 10-28 08:02

    卷积运算分析

    的数据,故设计了ConvUnit模块实现单个感受域规模的卷积运算. 卷积运算:不同于数学当中提及到的卷积概念,CNN神经网络中的卷积严格意义
    发表于 10-28 07:31

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    , batch_size=512, epochs=20)总结 这个核心算法中的卷积神经网络结构和训练过程,是用来对MNIST手写数字图像进行分类的。模型将图像作为输入,通过卷积和池化层提取图像的特征,然后通过全连接层进行分类预
    发表于 10-22 07:03

    CICC2033神经网络部署相关操作

    读取。接下来需要使用扩展指令,完成神经网络的部署,此处仅对第一层卷积+池化的部署进行说明,其余层与之类似。 1.使用 Custom_Dtrans 指令,将权重数据、输入数据导入硬件加速器内。对于权重
    发表于 10-20 08:00

    液态神经网络(LNN):时间连续性与动态适应性的神经网络

    1.算法简介液态神经网络(LiquidNeuralNetworks,LNN)是一种新型的神经网络架构,其设计理念借鉴自生物神经系统,特别是秀丽隐杆线虫的神经结构,尽管这种微生物的
    的头像 发表于 09-28 10:03 708次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    卷积神经网络如何监测皮带堵料情况 #人工智能

    卷积神经网络
    jf_60804796
    发布于 :2025年07月01日 17:08:42

    BP神经网络卷积神经网络的比较

    BP神经网络卷积神经网络在多个方面存在显著差异,以下是对两者的比较: 一、结构特点 BP神经网络 : BP神经网络是一种多层的前馈
    的头像 发表于 02-12 15:53 1324次阅读

    如何优化BP神经网络的学习率

    优化BP神经网络的学习率是提高模型训练效率和性能的关键步骤。以下是一些优化BP神经网络学习率的方法: 一、理解学习率的重要性 学习率决定了模型参数在每次迭代时更新的幅度。过大的学习率可
    的头像 发表于 02-12 15:51 1432次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为一种常用的机器学习模型,具有显著的优点,同时也存在一些不容忽视的缺点。以下是对BP神经网络优缺点的分析: 优点
    的头像 发表于 02-12 15:36 1596次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算法是BP
    的头像 发表于 02-12 15:18 1288次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural N
    的头像 发表于 02-12 15:15 1358次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络   人工神经网络模型之所
    的头像 发表于 01-09 10:24 2259次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法