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

    文章

    5503

    浏览量

    121154
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    基于优化数据处理深度信念网络模型的入侵检测方法

    针对目前网络中存在的对已知攻击类型的入侵检测具有较高的检测率,但对新出现的攻击类型难以识别的缺陷问题,提出了一基于优化数据处理深度信念网络(DBN)模型的入侵检测
    发表于 12-01 15:59 0次下载
    基于优化数据<b class='flag-5'>处理</b>的<b class='flag-5'>深度</b>信念网络<b class='flag-5'>模型</b>的入侵检测<b class='flag-5'>方法</b>

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

    模型驱动的深度学习方法近年来,深度学习在人工智能领域一系列困难问题上取得了突破性成功应用。
    的头像 发表于 01-24 11:30 4926次阅读
    <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 1972次阅读
    一<b class='flag-5'>种</b><b class='flag-5'>小型化</b>射频收发前端的设计详细教程

    如何使用MATLAB实现深度学习方法研究分析

    训练 CNN 需要相当大量的数据,因为对于典型的图像分类问题,其需要学习几百万个权值。从头开始训练 CNN 的另一个常见做法是使用预先训练好的模型自动从新的数据集提取特征。这种方法称为迁移学习
    的头像 发表于 09-16 15:11 5785次阅读
    如何使用MATLAB实现<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的<b class='flag-5'>方法</b>研究分析

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

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

    介绍3种方法跨时钟域处理方法

    介绍3跨时钟域处理方法,这3种方法可以说是FPGA界最常用也最实用的方法,这三种方法包含了单
    的头像 发表于 09-18 11:33 2.2w次阅读
    介绍3<b class='flag-5'>种方法</b>跨时钟域<b class='flag-5'>处理</b><b class='flag-5'>方法</b>

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

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

    实现更好5G的种方法.zip

    实现更好5G的种方法
    发表于 01-13 09:07 0次下载

    深度学习模型优化与调试方法

    深度学习模型在训练过程中,往往会遇到各种问题和挑战,如过拟合、欠拟合、梯度消失或爆炸等。因此,对深度学习
    的头像 发表于 07-01 11:41 820次阅读

    人脸检测的种方法各有什么特征和优缺点

    人脸检测是计算机视觉领域的一个重要研究方向,主要用于识别和定位图像中的人脸。以下是常见的人脸检测方法及其特征和优缺点的介绍: 基于肤色的方法 特征:基于肤色的
    的头像 发表于 07-03 14:47 835次阅读

    深度学习模型量化方法

    深度学习模型量化是一重要的模型轻量化威廉希尔官方网站 ,旨在通过减少网络参数的比特宽度来减小模型大小和加速推
    的头像 发表于 07-15 11:01 494次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>模型</b>量化<b class='flag-5'>方法</b>

    AI大模型深度学习的关系

    AI大模型深度学习之间存在着密不可分的关系,它们互为促进,相辅相成。以下是对两者关系的介绍: 一、深度学习是AI大
    的头像 发表于 10-23 15:25 727次阅读

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练。
    的头像 发表于 10-28 14:05 208次阅读
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练的<b class='flag-5'>方法</b>