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

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

3天内不再提示

深度学习模型小型化处理的五种方法

汽车玩家 来源:博客园 作者:Peyton_Li 2020-01-28 17:40 次阅读

实习终于结束了,现把实习期间做的基于人体姿态估计的模型小型化的工作做个总结。

现在深度学习模型开始走向应用,因此我们需要把深度学习网络和模型部署到一些硬件上,而现有一些模型的参数量由于过大,会导致在一些硬件上的运行速度很慢,所以我们需要对深度学习模型进行小型化处理。模型小型化旨在保证模型效果不会明显下降的情况下降低模型的参数量,从而提高模型的运算速度。

以下是几种模型小型化的方法:

1、修改某些卷积层的num_output

其实很多模型的参数都有冗余,有些层根本不需要很多的卷积核,所以,通过修改该参数可以降低一部分的参数量。

2、使用分离通道卷积(depthwise separable convolution)

对某些卷积层使用分离通道卷积的方法。使用分离通道卷积可以去掉一部分冗余的参数。分离通道卷积与常用卷积的不同之处在于,标准卷积操作中,每个卷积核都要对输入的所有通道的特征进行卷积,然后结合生成一个对应的特征。分离通道卷积中,分为两步,第一步使用分离通道卷积,每个卷积核只对一个通道进行卷积。第二步,使用1x1的标准卷积整合分离通道卷积输出的特征。分离通道卷积时,各个通道之间的特征信息没有交互,之后会采用一个1*1的标准卷积运算,使分离通道卷积输出的特征的通道之间的信息有了一个交互。在tensorflow中,有对应的tf.nn.depthwise_conv2d接口可以很方便地实现分离通道卷积。

标准卷积和分离通道卷积的示意图如下

深度学习模型小型化处理的五种方法

参考论文:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

3、使用channel shuffle方法

channel shuffle方法是在分离通道卷积方法的基础上做的改进,将分离通道卷积之后的1*1的全卷积替换为channel shuffle。

参考论文:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

4、使用ThiNet方法

ThiNet方法是寻找一些对输出特征贡献较小的卷积核,将其裁剪掉,从而降低参数量。属于第一种方法的延伸。

参考论文:ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression

5、改变网络结构

现在常见的网络结构有:以VGG为代表的单支流网络结构,GoogLeNet的Inception类型的网络结构,ResNet的残差结构,还有DenseNet的结构(类似残差结构,把残差结构中特征的相加变为特征拼接)。在曾经的ImageNet的比赛中,GoogLeNet取得了比VGG更好的成绩,但是GoogLeNet的参数量却比VGG小很多,这说明通过改变网络结构,我们不仅可以减低模型的参数量,还可能会提升模型的效果。

前四种方法都是在原有网络上进行的操作,一般不会对网络结构造成太大改变。而第五种方法则是彻底改变了网络的结构。

我们将模型的参数量降低后,如果随机初始化,模型由于参数量较小,很难达到原有的效果,所以构造了新的网络之后还会涉及到重构。

重构其实是为了得到一个较好的初始化模型。我们一般去重构网络的倒数第二层的输出特征,因为最终的结果都是在倒数第二层的输出特征上得到的。但有时我们还会去重构其他卷积层输出的特征,比如一个较深的网络,我们单纯地去重构倒数第二层的特征也很难得到一个较好的初始化模型,因为监督信息(即重构时的loss)太靠后,前面的层很难学习到,所以有时我们可以将网络分为几个部分,依次重构,先重构前面的,然后使用重构好的模型去重构后面的部分。

使用ThiNet方法,每裁剪完一层之后都要做finetunign,然后再裁剪下一层。我们也可以每裁剪完一层之后去做重构,全部都裁剪完之后,做姿态估计训练。

我们还可以重构和姿态估计训练一起做,使用两个监督信息(即重构和姿态估计两个loss)使模型边重构边训练,我们将其称为mimick。

这就是我在模型小型化的工作中使用到的一些方法。但如何使用这些方法才能得到一个好的结果,这还需要亲自去尝试。

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

    关注

    73

    文章

    5239

    浏览量

    119912
收藏 人收藏

    评论

    相关推荐

    电感计算公式与种方法

    由Q值决定谐振电感: l 单位: 微亨第种方法:线圈电感的计算公式1、针对环行CORE,有以下公式可利用: (IRON)L=N2.AL L= 电感值(H)H-DC=0.4πNI / l N= 线圈
    发表于 11-02 09:19

    AI工程师 10 个深度学习方法

    处理。以下10种方法均可应用于这些框架。1、反向传播反向传播是一计算函数偏导数(或梯度)的简单方法,它的形式是函数组合(如神经网络)。在使用基于梯度的
    发表于 03-07 20:17

    基于MySQL根据出生日期计算年龄的种方法

    MySQL根据出生日期计算年龄的种方法比较
    发表于 04-01 14:49

    新颖的天线小型化技术及其应用介绍

    。由于传统的天线已经无法满足未来的挑战,这就意味着必须相应地发展天线技术以适应无线系统发展的要求。目前分形正成为满足未来产品要求的一有效方法。他能够使得我们有效地设计小型化天线或把多个无线电通信元件
    发表于 06-12 08:26

    labview调用深度学习tensorflow模型非常简单,附上源码和模型

    本帖最后由 wcl86 于 2021-9-9 10:39 编辑 `labview调用深度学习tensorflow模型非常简单,效果如下,附上源码和训练过的模型:[hide][/h
    发表于 06-03 16:38

    深度学习模型是如何创建的?

    具有深度学习模型的嵌入式系统应用程序带来了巨大的好处。深度学习嵌入式系统已经改变了各个行业的企业和组织。
    发表于 10-27 06:34

    基于深度学习和3D图像处理的精密加工件外观缺陷检测系统

    点四:丰富的2D/3D图像软硬件接口,配合被测金属金加工件的形状、轮廓精度拥有丰富的成像硬件、运动机构以及执行机构的选择。 基于深度学习和3D图像处理的精密加工件外观缺陷检测系统已
    发表于 03-08 13:59

    什么是深度学习?使用FPGA进行深度学习的好处?

    什么是深度学习为了解释深度学习,有必要了解神经网络。神经网络是一模拟人脑的神经元和神经网络的计算模型
    发表于 02-17 16:56

    芯片功能测试的种方法

    芯片功能测试常用5种方法有板级测试、晶圆CP测试、封装后成品FT测试、系统级SLT测试、可靠性测试。
    发表于 06-09 16:25

    模型驱动深度学习的标准流程与学习方法解析

    模型驱动的深度学习方法近年来,深度学习在人工智能领域一系列困难问题上取得了突破性成功应用。
    的头像 发表于 01-24 11:30 4649次阅读
    <b class='flag-5'>模型</b>驱动<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的标准流程与<b class='flag-5'>学习方法</b>解析

    一种小型化射频收发前端的设计详细教程

    介绍了一种新颖的小型化射频收发前端设计方法,采用这种方法在LTCC基片上实现了一款L波段双频段射频收发前端,其 电路尺寸仅为6.5 mm × 5mm × 0.5mm。
    发表于 05-03 14:04 1780次阅读
    一种<b class='flag-5'>小型化</b>射频收发前端的设计详细教程

    基于深度学习模型的点云目标检测及ROS实现

    近年来,随着深度学习在图像视觉领域的发展,一类基于单纯的深度学习模型的点云目标检测方法被提出和应
    的头像 发表于 11-05 16:47 1.7w次阅读

    结合基扩展模型深度学习的信道估计方法

    结合基扩展模型深度学习的信道估计方法
    发表于 06-30 10:43 62次下载

    模型为什么是深度学习的未来?

    与传统机器学习相比,深度学习是从数据中学习,而大模型则是通过使用大量的模型来训练数据。
    的头像 发表于 02-16 11:32 1674次阅读

    深度学习的由来 深度学习的经典算法有哪些

    深度学习作为机器学习的一个分支,其学习方法可以分为监督学习和无监督学习。两
    发表于 10-09 10:23 364次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>的由来 <b class='flag-5'>深度</b><b class='flag-5'>学习</b>的经典算法有哪些