PeleeNet:精修版DenseNet,速度猛增至240FPS | NeurIPS 2018
PeleeNet是DenseNet的一个变体,没有使用流行的深度可分离卷积,PeleeNet和Pelee仅通过结构上的优化取得了很不错的性能和速度,读完论文可以学到很多网络设计的小窍门。
来源:晓飞的算法工程笔记 公众号
论文: Pelee: A Real-Time Object Detection System on Mobile Devices

Introduction
基于DenseNet的稠密连接思想,论文通过一系列的结构优化,提出了用于移动设备上的网络结构PeleeNet,并且融合SSD提出目标检测网络Pelee。从实验来看,PeleeNet和Pelee在速度和精度上都是不错的选择。
PeleeNet
PeleeNet基于DenseNet思想,加入了几个关键的改进。
Two-Way Dense Layer

受GoogLeNet的启发,论文将原来的dense layer改为2-way dense layer,如图1b所示,新的路径叠加两个$3\times 3$卷积来学习获取不同的感受域特征,特别是大物体特征。
Stem Block

DenseNet使用stride=2的$7\times 7$卷积对输入进行初步处理,受Inception-v4和DSOD启发,论文设计了一个高效的stem block,结构如图2所示,两条路径能提取不同的特征。这样可以在不带来过多计算耗时的前提下,提高网络的特征表达能力。
Dynamic Number of Channels in Bottleneck Layer

在DenseNet中,使用bottleneck layer进行输入特征的压缩,但是bottleneck layer的输出固定为dense layer输出的4倍。在网络的早些层中,会存在bottleneck layer的输出比输入更多的情况,导致效率下降。为此,论文将bottleneck layer的输出大小跟输入挂钩,保证不大于输入大小,从图4可以看出,修改后计算效率提升了一倍。
Transition Layer without Compression
DenseNet在dense layer间使用transition layer进行特征维度压缩,压缩比为0.5。论文通过实验发现这个操作会减弱网络特征的表达能力,所以将transition layer的输出维度固定为输入的大小,不再压缩。
Composite Function
DenseNet使用Conv-Relu-BN的预激活方式,论文将其修改为Conv-BN-Relu的后激活方式,这样卷积层和BN层在inference时能够进行合并运算,提高计算速度。另外,论文在最后的dense layer添加了$1\times 1$卷积,用以获得更强的特征表达能力。
Architecture

PeleeNet的结构如表1所示,包含一个stem block、4个特征提取阶段以及最后的stride为2的平均池化层。论文纠结使用3个特征提取阶段还是4个特征提取阶段,3个阶段需要stem block更多地缩减特征图大小,考虑到开头过快地减小特征图会大小会减弱网络的表达能力,最终仍采用4个阶段。
Pelee

基于SSD,将PeleeNet作为主干网络并做了几个优化,提出目标检测网络Pelee,主要的优化点如下:
- Feature Map Selection,使用5个尺寸的特征图(19x19, 10x10, 5x5, 3x3, 1x1),为了减少计算消耗,没有使用38x38的特征图。
- Residual Prediction Block,在进行预测之前,使用图4的ResBlock进行特征提取,保证特征表达能力。
- Small Convolutional Kernel for Prediction,由于使用了ResBlock进行了特征的进一步提取,在预测部分可以使用$1\times 1$卷积核加速,准确率与$3\times 3$卷积差不多。
Experiment
PeleeNet

对PeleeNet的key feature进行验证。

与其它轻量级网络对比。


PeleeNet在各种设备上的实际推理速度对比。
Pelee

Pelee与其它网络的设置对比。

各改进措施的性能对比。

与其它网络的在VOC上的性能对比。

各设备上的推理速度对比。

与其它网络的在COCO上的性能对比。
CONCLUSION
PeleeNet是DenseNet的一个变体,没有使用流行的深度可分离卷积,PeleeNet和Pelee仅通过结构上的优化取得了很不错的性能和速度,读完论文可以学到很多网络设计的小窍门
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

PeleeNet:精修版DenseNet,速度猛增至240FPS | NeurIPS 2018的更多相关文章
- 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法
原文:NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩.机器学习及最优化算法 导读 AI领域顶会NeurIPS正在加拿大蒙特利尔举办.本文针对实验室关注的几个研究热点,模型压缩.自 ...
- NeurIPS 2018 中的贝叶斯研究
NeurIPS 2018 中的贝叶斯研究 WBLUE 2018年12月21日 雷锋网 AI 科技评论按:神经信息处理系统大会(NeurIPS)是人工智能领域最知名的学术会议之一,NeurIPS 2 ...
- ChannelNets: 省力又讨好的channel-wise卷积,在channel维度进行卷积滑动 | NeurIPS 2018
Channel-wise卷积在channel维度上进行滑动,巧妙地解决卷积操作中输入输出的复杂全连接特性,但又不会像分组卷积那样死板,是个很不错的想法 来源:晓飞的算法工程笔记 公众号 论文: C ...
- 蚂蚁金服“定损宝”现身AI顶级会议NeurIPS
小蚂蚁说: 长期以来,车险定损(通过现场拍摄定损照片确定车辆损失,以作为保险公司理赔的依据)是车险理赔中最为重要的操作环节.以往传统保险公司的车险处理流程,一般为报案.现场查勘.提交理赔材料.审核.最 ...
- 2018 AI产业界大盘点
2018 AI产业界大盘点 大事件盘点 “ 1.24——Facebook人工智能部门负责人Yann LeCun宣布卸任 Facebook人工智能研究部门(FAIR)的负责人Yann LeCun宣布卸 ...
- InfoQ一波文章:AdaSearch/JAX/TF_Serving/leon.bottou.org/Neural_ODE/NeurIPS_2018最佳论文
和 Nested Partition 有相通之处? 伯克利提出 AdaSearch:一种用于自适应搜索的逐步消除方法 在机器学习领域的诸多任务当中,我们通常希望能够立足预先给定的固定数据集找出问题的答 ...
- zz姚班天才少年鬲融凭非凸优化研究成果获得斯隆研究奖
姚班天才少年鬲融凭非凸优化研究成果获得斯隆研究奖 近日,美国艾尔弗·斯隆基金会(The Alfred P. Sloan Foundation)公布了2019年斯隆研究奖(Sloan Research ...
- (转载) AutoML 与轻量模型大列表
作者:guan-yuan 项目地址:awesome-AutoML-and-Lightweight-Models 博客地址:http://www.lib4dev.in/info/guan-yuan/aw ...
- (转)AutoML 与轻量模型大列表: awesome-AutoML-and-Lightweight-Models
Awesome-AutoML-and-Lightweight-Models 原文:http://bbs.cvmart.net/articles/414/zi-yuan-automl-yu-qing-l ...
随机推荐
- 基于 Source Generators 做个 AOP 静态编织小实验
0. 前言 上接:用 Roslyn 做个 JIT 的 AOP 作为第二篇,我们基于Source Generators做个AOP静态编织小实验. 内容安排如下: source generators 是什 ...
- css进阶 06-CSS开发积累
06-CSS开发积累 #让flex盒子中的子元素们,居中 flex布局常用的三行代码: display: flex; justify-content: center; // 子元素在横轴的对齐方式 ( ...
- k8s之深入解剖Pod(一)
上文说了一下k8s的简单使用,接下来就让我们来具体深入了解一下Pod.为了避免篇幅太长,所以会分成几篇. 目录: Pod定义详解 静态Pod Pod容器共享Volume 一.Pod定义详解 先看一个简 ...
- C#中打印拼接的字符串
实例化打印文档 //声明打印对象 PrintDocument pd = new PrintDocument(); int ilvPreviewIndex = 0; 在打印事件中设置基本属性 priva ...
- [.NET] - 初步认识AutoMapper
初步认识AutoMapper AutoMapper 初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象 前言 通常 ...
- Apache Cassandra——可扩展微服务应用程序的持久数据存储
通过使用微服务,团队可以更快地响应变化,而无需改动整个应用程序.利用微服务,开发团队可以构建出具有鲁棒性和可扩展性的系统,从而适应当今应用程序的需求. 然而,使用微服务也带来了一系列挑战.在本文中 ...
- SpringBoot整合任务调度框架Quartz及持久化配置
目录 本篇要点 SpringBoot与Quartz单机版快速整合 引入依赖 创建Job 调度器Scheduler绑定 自动配置,这里演示SimpleScheduleBuilder 手动配置,这里演示C ...
- .net core 和 WPF 开发升讯威在线客服与营销系统:系统总体架构
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...
- 【linux】系统编程-2-消息队列
目录 前言 4. 消息队列 4.1 概念 4.2 对比 4.3 函数及使用流程 4.3.1 msgget() 4.3.2 msgsng() 4.3.3 msgrcv() 4.3.4 msgctl() ...
- MySQL全面瓦解15:视图
概述 很多时候,我们会有一些很复杂的数据库操作,比如整合用户的行为数据,那这些数据可能包含用户的餐饮.生活日用.充值消费.交通出行.通讯物流.交通出行.医疗保健.住房物业.运动健康... 基于此,我们 ...