tensorflow 模型小型化_模型小型化

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

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

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

1、修改某些卷积层的num_output

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

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

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

c0c998300506a4c70942dc3e018150c4.png

参考论文: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。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css多行超出时,超出高度,显示省略号

.layoutdisplay: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;转载于:https://www.cnblogs.com/cx709452428/p/10457182.html

设计模式系列漫谈之二 - 工厂方法模式

故事 10月1日是小雪的生日。许多追求者都想在生日那天给小雪一份意想不到的惊喜,并且表达自己的爱意。这些追求者绞尽脑汁的为小雪发送一个比较有创意的祝福短信。看来,小雪今年的生日过得肯定非常幸福。但是,小雪的手机还是比较特别&a…

谁控制了我们的浏览器?

http://www.baidu.com/link?url4Qw_a5JHvJi8NPp7of9HqRWN93EPxC2Vy9CPxm3e-KgcO443jRRS_1jzcWDAF8qf5oPPwipv0D6BRQf5XMNi1a 本文遵从GPL协议,欢迎转载。 1、现象是什么? 大约从今年年初开始,很多人就发现,在浏览一些网站的时候&…

java面试题大全答案版文库_java高级面试题带答案

java高级面试题,java面试题大全带答案,线程面试题,java面试宝典20191、[请对以下在J2EE中常用的名词进行解释(或简单描述)](http://www.wityx.com/post/172_1_1.html)2、[socket通信](http://www.wityx.com/post/175_1_1.html)3、[简述线程的…

SP1693 COCONUTS - 题解

SP1693 COCONUTS 题意: 几个士兵在投票,有支持与反对两种选择,每个人有自己的看法,但是他们有时也会为了支持朋友的看法而放弃自己的看法,请求出一种方案,使得违背自己初始看法的人数与看法不一致的朋友对数…

最近特忙

昨天上午上课,中午开支部大会,下午学院职工会议,晚上去东联蛇餐馆吃蛇肉,回来后参加体验英语月闭幕式及英语合唱表演决赛。这中间我还出去给我的论文小组快了一个讨论会。昨天共开了三个会,真是忙得天昏地暗&#xff0…

NoSQL系列:选择合适的数据库

NoSQL系列:选择合适的数据库 为什么使用NoSQL数据库? 阻抗失衡 关系模型和内存中的数据结构不匹配 采用更为方便的数据交互方式提升开发效率 待处理的数据量很大 数据量超过关系型数据库的承载能力 大集群的出现 在成本方面,集群中应用关系数…

mysql历史日志文件_MySQL 历史 binlog 日志处理

MySQL 历史 binlog 日志处理一、问题的引出MySQL binlog 如果不清理会占用服务器的空间,那么怎么处理binlog日志呢二、解决办法1、物理删除df -Th 查看磁盘空间➜ bobbob-pc ~ df -Th文件系统 类型 容量 已用 可用 已用% 挂载点udev devtmpfs 7.8G 0 7.8G 0% /devtmpfs tmpfs 1…

史上最全搞怪WC标志(组图)--设计者太有才了。

转载于:https://www.cnblogs.com/onlyzq/archive/2007/12/22/1010318.html

1 vmware 如何联网,以及行命令令初步

VMware安装Linux(我安装的是ubuntu),没法上网,上网教程见:https://blog.csdn.net/qq_28090573/article/details/78730552 安装完成Linux,进入系统,显示的是图形界面,但是学习Linux&a…

mysql几个timeout参数_MySQL中 timeout相关参数解析

前言:MySQL中有两个关于连接超时的配置项。他们之间在某些条件下会互相继承,那究竟这两个参数会在什么情况下起作用呢?本文将会通过一些测试实例来证明总结两者的相互关系。参数介绍:The number of seconds the server waits for …

XML操作类

publicclassXmlControl:Object { protectedstringstrXmlFile; protectedXmlDocument objXmlDoc newXmlDocument(); publicXmlControl(stringXmlFile, Boolean bOverWrite, stringsRoot) { try{ //如果覆盖模式&#xff…

shell脚本中if的相关参数

转自:http://blog.csdn.net/aaaaatiger/article/details/1713611[ -a FILE ] 如果 FILE 存在则为真。 [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。 [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。 [ -d FILE ] 如果 FILE 存在且是一个…

mysql设置端口_修改mysql端口以及出现的问题

为了提高服务器的安全性,本节课主要讲的是Linux下如何修改Mysql端口。支持Linux环境下大部分系统的修改,如Centos和Ubuntu等。一、编辑my.cnfvi /etc/my.cnf二、在[mysqld]下添加port3506三、重启mysql服务service mysqld restart这里我之前出现了一个…

[转]你打算如何提升自己?

一年一度的金九银十,对于职场人来说,人们比盼望过年过节还期待,过年过节只是得到更好的休息,而金九银十,如果机会适当,得到的是实实在在的提升,职位提升、薪酬提升。在物价和股票都上升的时候&a…

下载安装webstrom及激活

太久没在新电脑上安装websrtom,又有点忘了咋激活。 一、安装 1.直接在浏览器搜索webstrom,打开官网,直接点击download。如下图 2.打开安装包,开始安装,直接点击 next 3.选择安装路径(安装在你想安装的位置&…

CentOS命令行安装配置KVM详细教程

系统为centos 6.4 64位 最小化安装 服务器为dell R720,所以网卡为em0,在vmware作为练习安装学习,同样可以,命令行不是为了显的牛B,而是不用考虑桌面兼容性和其他原因的影响一、查看是否支持虚拟化vmware开启方式虚拟化…

mysql addslashes_PHP函数addslashes和mysql_real_escape_string的区别

首先:不要使用mysql_escape_string,它已被弃用,请使用mysql_real_escape_string代替它。mysql_real_escape_string和addslashes的区别在于:区别一:addslashes不知道任何有关MySQL连接的字符集。如果你给所使用的MySQL连…

WebBrowser 控件 内存溢出 补丁 From Microsoft

在程序中用WebBrowser长时间不停访问不同页面会造成内存溢出,微软给出了补丁,但是似乎没有怎么测试。要获得补丁必须通过邮件申请,我申请了三次才凑够了XP,2003和Vista的补丁,给大家分享。不过微软说没有经过回归测试&…

C#中如何得到Graphics对象

2019独角兽企业重金招聘Python工程师标准>>> 利用Graphics对象,我们可以绘制理想的UI。这里首先介绍C#中如何得到Graphics对象。 /如何得到Graphics对象 1. Control.CreateGraphics();直接通过Control类的公开方法获取。可以是Form,基础控件&…