超轻量级网络SqueezeNet网络解读
SqueezeNet网络模型非常小,但分类精度接近AlexNet。
这里复习一下卷积层参数的计算
输入通道ci,核尺寸k,输出通道co,参数个数为:
以AlexNet第一个卷积为例,参数量达到:3*11*11*96=34848
基础模块

包含三个卷积层(蓝色),步长为1,分为squeeze和expand两部分,分别压缩和扩展数据(灰色矩形)的通道数
expand部分中,两个不同核尺寸的结果通过串接层(黄色)合并输出
fire模块有三个可调参数:
- s1:squeeze部分,1x1卷积层的通道数
- e1:expand部分,1x1卷积层的通道数
- e3:expand部分,3x3卷积层的通道数
输入输出尺寸相同。输出通道数不限,输出通道数为e1+e3
在本文提出SqueezeNet结构中,
网络结构

整个网络包含10层
第1层为卷积层,缩小输入图像,提取96维特征
第2到9层为fire模块,每个模块内部先减少通道数(squeeze)再增加通道数(expand)。每两个模块之后,通道数会增加
在1、4、8层之后加入降采样的max pooling,缩小一般尺寸
第10层又是卷积层,为小图的每个像素预测1000类分类得分
最后用一个全图average pooling得到这张图的1000类得分,使用softmax函数归一化为概率
这是一个全卷积网络,避免了如今越来越不受待见的全连接层。由于最后一层提供了全图求平均操作,可以接受任意尺寸的输入。当然,输入还是需要归一化大致相当的尺寸,保持统一尺度
全连接层的参数多,对性能提升帮助不大,现在往往被pooling代替
这个网络达到了和AlexNet相当的分类精度,但模型缩小了50倍
| architecture | model size | top-1 accuracy | top-5 accuracy |
|---|---|---|---|
| AlexNet | 240MB | 57.2% | 80.3% |
| SqueezeNet | 4.8MB | 57.5% | 80.3% |
网络设计的要点
1. 为了使1x1和3x3filter输出的结果有相同的尺寸,在expand modules中,给3x3filter的原始输入添加一个像素的边界(zero-padding)
2. squeeze和expand layers中都是用ReLU作为激活函数
3. 在fire9 module之后,使用Dropout,比例取50%
4. 训练过程中,初始学习率设为为0.04,在训练过程中线性降低学习率
5. 由于caffe中不支持使用两个不同尺寸的filter,在expand layer中实际上使用了两个单独的卷积层(1x1filter和3x3filter),最后将这两层的输出连接在一起,这在数值上等价于使用单层但是包含两个不同尺寸的filter
当然SqueezeNet还可以继续压缩,使模型更小。SqueezeNet采用了一些deep-compression的方法,比如裁剪,量化和编码
裁剪:设置阈值,对于小于阈值的参数直接写0,然后用非零参数再次训练
量化:对参数做聚类,然后每个类别的参数的梯度值相加,作用在聚类中心上
编码:Huffman编码进一步压缩存储
参考:
轻量化模型:SqueezeNet,MobileNet,ShuffleNet以及Xception
超轻量级网络SqueezeNet网络解读的更多相关文章
- [论文阅读]阿里DIN深度兴趣网络之总体解读
[论文阅读]阿里DIN深度兴趣网络之总体解读 目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词解释 ...
- [论文阅读]阿里DIEN深度兴趣进化网络之总体解读
[论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...
- Kube-OVN:大型银行技术团队推荐的金融级云原生网络方案
近日,由TWT社区主办的2021容器云职业技能大赛团队赛的冠军作品:<适用于大中型银行的云原生技术体系建设方案>中,Kube-OVN成为银行技术团队推荐的金融级云原生网络最佳实践.本文部分 ...
- spring boot实现超轻量级网关(反向代理、转发)
在我们的rest服务中,需要暴露一个中间件的接口给用户,但是需要经过rest服务的认证,这是典型的网关使用场景.可以引入网关组件来搞定,但是引入zuul等中间件会增加系统复杂性,这里实现一个超轻量级的 ...
- 分享自己的超轻量级高性能ORM数据访问框架Deft
Deft 简介 Deft是一个超轻量级高性能O/R mapping数据访问框架,简单易用,几分钟即可上手. Deft包含如下但不限于此的特点: 1.按照Transact-SQL的语法语义风格来设计,只 ...
- iOS开发网络篇—网络编程基础
iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过 ...
- iOS开发网络篇—网络编程基础(一)
一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新 ...
- [转] - Linux网络编程 -- 网络知识介绍
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
随机推荐
- docker开机自动启动
方法一: chkconfig docker on 方法二: 1.1是用systemctl: systemctl enable docker 1.2将Docker的docker.service服务移动到 ...
- AJ学IOS(47)之网易彩票帮助界面UIWebView的运用
AJ分享,必须精品 效果: 制作过程 首先是帮助按钮那个地方的点击. 这里是用点击跳转的用的是 NJSettingArrowItem,前面的设置的,从字典通过模型转过来的. // 分享 NJSetti ...
- 基于my-DAQ的温室迷你温室设计
这是一个小项目,采用NI的my-DAQ做数据采集,需要采集的数据有温度(LM35),气体(MQ2),需要控制的设备有风扇.加热棒,另外还有光照亮度调节. 一.数据采集 1.LM35 LM35是模拟输出 ...
- springboot 项目使用阿里云短信服务发送手机验证码
1.注册阿里云账户进行账号实名认证 2.申请短信签名和模板 3.创建access_key和access_secret 4.然后就是代码编写 一.找到产品与服务里面的云通信模块,然后找到短信服务,开通短 ...
- 【转】解决存储过程执行快,但C#程序调用执行慢的问题
这两天遇到一个问题令人比较郁闷,一个大概120行左右的存储过程在SQL Server2012的查询分析器里面执行,速度非常理想,1秒不到,即可筛选抓取到大概500条数据记录.但在C#程序代码里调用,就 ...
- 带你五分钟了解python的函数式编程与闭包
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:梁唐 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...
- paddlehub Test on win10
conda 构建虚拟环境 1)虚拟环境下安装paddlepaddle 1.7 2)pip install paddlehub 3)添加环境变量hub_home,以免模型把c盘撑爆 4)下载的模型在.p ...
- Cocos2d-x在win7下的android交叉编译环境
cocos2d-x在win7下的Android交叉编译环境 2014年4月14日 cocos2d-x环境配置 前面把Visual Studio+Python开发环境配好了,但还没有讲如何在Androi ...
- mac上安装htop
对于经常在mac上使用top命令的童鞋来说,htop会是一个更加好看和更加好用的命令,下面就是在mac上安装htop的步骤 1.首先去htop官网去下载,我下的是最新的2.2.0版本,网址是https ...
- PHP函数:array_key_exists
array_key_exists() - 检查数组里是否有指定的键名或索引. 注意:array_key_exists() 仅仅搜索第一维的键. 多维数组里嵌套的键不会被搜索到. 说明: rray_k ...