超轻量级网络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 ...
随机推荐
- PyJWT 详解
1.首先,我们需要先了解 JWT 的概念,所以我们先看pyjwt的官网 https://jwt.io/ 2.对于官方 JWT 有两篇博文写的不错分别如下: https://blog.csdn.net/ ...
- 【C#】写一个支持多人聊天的TCP程序
碎碎念 先谈谈我们要实现的效果:客户端可以选择要聊天的对象,或者直接广播消息(类似QQ的私聊和群消息) 那么,该如何实现呢? 首先明确的是,要分客户端和服务器端两个部分(废话) 客户端:选择要发送的对 ...
- 28.1 api-- Object(toString equals)
/* * String toString() : 返回该对象的字符串表示 * return getClass().getName() + "@" + Integer.toHexSt ...
- 八、路由详细介绍之动态路由OSPF(重点)
一.OSPF介绍 OSPF优点:无环路.收敛快.扩展性好.支持认证 二.工作原理: 图中RTA.RTB.RTC每个路由器都会生成一个LSA, 通过LSA泛洪进行互相发送相互学习,形成LSDB (链路状 ...
- Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 官方介绍 Allure Frame ...
- spark error Caused by: java.io.NotSerializableException: org.apache.hadoop.hdfs.DistributedFileSystem
序列化问题多事rdd遍历过程中使用了没有序列化的对象. 1.将未序列化的变量定义到rdd遍历内部.如定义入数据库连接池. 2.常量定义里包含了未序列化对象 ,提出去吧 如下常量要放到main里,不能放 ...
- python3(二十七)property
""" """ __author__ = 'shaozhiqi' # 绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单, # 但是, ...
- 不使用 if-elif 语句,如何优雅地判断某个数字所属的等级?
偶然看到了 stackoverflow 上的一个问题,还挺有启发,故分享一下. 题目大意是:有从 A 到 F 的 5 个等级,现要判断某个数值(从 0 到 1 之间)所属的等级.举例,如数值 > ...
- Jingwen‘s update
Bugs: The checkin button of the question answering page must be pressed twice to check in the result ...
- Vue【你知道吗?】
前言 Vue的由来 Vue最早发布于2014年左右,作者是美中国学生尤雨溪.Vue 的定位就是为前端开发提供一个低门槛,高效率,但同时又能够伴随用户成长的框架 尤雨溪谈Vue.js :缔造自由与真我 ...