轻量级检测网络Pelee和DenseNet
参考链接:https://blog.csdn.net/huang_nansen/article/details/87207312
提到轻量级神经网络,大家都会提到MobileNet V1 V2 和 ShuffleNet V1 V2,似乎较少看到大家提到PeleeNet,网上搜到的结果也不多,这篇博客会简单介绍一下PeleeNet以及以它为backbone的检测网络Pelee,还有它的前身DenseNet。
1. DenseNet
这里推荐一篇博文,讲解DenseNet很详细:
https://blog.csdn.net/u014380165/article/details/75142664/
DenseNet发表于2017年的一篇论文Densely Connected Convolutional Networks ,该网络的创新点在于对特征的充分利用,与ResNet相比,DenseNet对特征的利用更加充分,并且通过bottleneck和transition layers降低了计算量。
网络结构图:
图中为一个包含5个层的Dense block我们可以看出,在一个Dense block中,上一层不止会连接下一层,还会连接之后的所有层,并且在Dense block最后,会添加Transition layer来缩小计算量。
跳跃连接是一种解决梯度消失的好方法,ResNet中就使用了这种方法来解决梯度消失。
ResNet中的跳跃连接可以用下面的公式表示,其中H表示非线性变换。
与ResNet不同的是,Dense的非线性变换包含了之前的所有层。
DenseNet的具体网络结构如下:
可以看到,在Dense Block之间,作者使用了Transition layer,一个Transition layer包含一个BN层,一个1x1卷积核的卷积层(卷积核个数为输入个数的一半)和一个2x2的平均池化层。由于网络中后一层与前面所有层相连,到深层网络时,通道数非常大,会导致计算量非常大,作者使用1x1卷积缩小通道数的同时结合了通道间的信息,使用平均池化缩小特征图,降低了计算量。以DenseNet-169为例,Dense Block(3)中第32层需要输入为1248通道,其中一个分支连接另一个分支的输出,另一个分支首先使用bottleneck(1x1卷积)将1248通道缩小为128通道,再进行32通道的3x3卷积,输出的结果与另一个分支相连,得到1248+32=1280通道的特征图,为了进一步缩小计算量,在输入Dense Block(4)之前,作者使用Transition layer,将Dense Block(3)的输出用1x1的卷积缩小为640通道的特征图,并使用2x2,步长为2的平均池化层缩小特征图为原来的一半大小。
2.PeleeNet
PeleeNet是以DenseNet为基础的变型,目的是为了将网络轻量化,应用于移动设备。
网络的主要思想有以下五点:
(1) Two-Way Dense Layer
作者借鉴GoogleNet中多尺度的方法,与Dense Block中的层结合,设计出两路稠密层,一条通道使用1个1x1的卷积核升维,然后接1个3x3的卷积层降维,另一个通道使用1x1卷积升维后,使用2个3x3卷积降维,目的是与另一个通道具有不同感受野。
(2) Stem layer
作者在网络开头使用Stem layer,在增加少量计算量的同时,极大的提升了网络的表达能力。
(3) Dynamic Number of Channels of Bottleneck Layer
在DenseNet中,每一个Dense Block的层中的bottleneck层的通道数都为固定值,作者发现这会导致网络开头一些层中的bottleneck的通道数远超过输入通道数,导致计算量增大。在PeleeNet中,作者动态的设置bottleneck层的通道数。
(4) Transition Layer without Compression
作者发现Transition Layer使用一半输入通道数,会降低网络的表达能力,PeleeNet中Transition Layer的通道数与输入通道数一致。
(5) Composite Function
使用后激活方法代替前激活方式,将relu放在最后,方便后期bn层与conv层结合,提升计算速度。(不知是否理解错误,在官方DenseNet caffe中,relu是放在bn层之后的,也就是后激活方式)
peleeNet模型结构如下:
3. Pelee
PeleeNet作者还提出了以PeleeNet为基础的轻量级检测网络Pelee,与以VGG为基础网络的SSD相比,为了降低计算量,作者使用19x19大小特征图的层作为SSD的第一层预测层。
预测层大小分别为:19 x 19, 10 x 10, 5 x 5, 3 x 3, 1 x 1
MobileNet 同样未使用38 x 38的特征图作为预测层,但添加了2 x 2的预测层来保持6尺度SSD检测。
在我的应用场景中,Pelee的表现远超出了ShuffleNet V2-SSD的表现,也有可能是调参之前没烧香,继续调试中。
————————————————
版权声明:本文为CSDN博主「huang_nansen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huang_nansen/article/details/87207312
轻量级检测网络Pelee和DenseNet相关推荐
- ICCV2019 | 旷视提出轻量级目标检测网络ThunderNet
ICCV2019 | 旷视提出轻量级目标检测网络ThunderNet 本文作者:Liyang 作者学校:复旦大学 论文地址:https://arxiv.org/pdf/1903.11752.pdf 源 ...
- 基于轻量级卷积网络的小目标检测--轻量级骨干网络部分
基于thundernet框架+dlanet网络+shufflenetv2卷积模块的小目标检测--轻量级骨干网络 前言 1 骨干网络框架DSNet(dlanet网络+shufflenetv2) 1.1 ...
- RefineDetLite:腾讯提出轻量级高精度目标检测网络
点击我爱计算机视觉标星,更快获取CVML新技术 前几天腾讯公布了一篇论文RefineDetLite: A Lightweight One-stage Object Detection Framewor ...
- 轻量级实时目标检测网络--ThunderNet:轻量级实时检测网络
网络的整体结构 网络的整体结构包括,backbone部分和detection 部分,骨干网络是SNet,这个网络i是基于shuffleNetV2进行修改得到的.网络的检测部分,利用了压缩的RPN网络, ...
- 基于物联网流量指纹的安全威胁轻量级检测方法
[摘 要]针对传统物联网深度包流量检测效率过低问题,提出一种基于物联网流量指纹的安全威胁轻量级检测方法.首先采用数据重构的方法获取流量时空数据,然后采用深度学习的方法提取流量数据时空特征(即流量数据 ...
- C++检测网络端口是否被占用
C++检测网络端口是否被占用 最近在使用Nginx搭建Web服务器,Nginx(发音同 engine x)是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在 ...
- 全网最最最轻量级检测网络 yolo-fastest 快速上手
文章目录 0x01 Yolo-Fastest 0x02 Prepare step1 clone step2 make step3 run darknet 0x03 Train step1 获取权重文件 ...
- CMD——ping及用其检测网络故障
Ping命令全称Packet Internet Grope,即因特网包探测器.通过调用ICMP(因特网控制报文协议),发送一份ICMP回显请求给目的主机,并等待返回ICMP回显应答.一般用来测试源主机 ...
- 一种投影法的点云目标检测网络
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文来源于早期的一篇基于投影法的三维目标检测文章<An Euler-Region-Pr ...
最新文章
- 安卓系列七(广播机制)
- 【 Notes 】RFID Preliminary Introduction
- 新的html页面拼接类库(简易的模板引擎)
- MemoryStream的一些问题
- 记录git命令:本地创建项目后如何上传到github上
- 控制反转IOC与依赖注入DI
- Vue 开发中常见报错与处理
- 这种反爬虫手段有点意思,看我破了它!
- 20220228:力扣第282场周赛(下)
- 大牛总结的 Git 使用技巧,写得太好了!
- C#获取当前时区转换方法
- svn合并不同树_SVN分支与合并【超详细的图文教程】(转载)
- python—Django面试题汇总
- 基于虚拟仿真技术的数字化工厂管理系统
- 【一年总结】记我的大一生活
- Excel随机 除法 打印版下载
- 批量生成Code128- C条码
- 计算机音乐我还是曾经那个少年,我还是曾经的那个少年什么歌曲
- linux 校园网 自动认证,使用 Padavan 路由器实现校园网自动 Web 认证
- AU降噪 李兴兴
热门文章
- linux中wait与waitpid的差别
- Linux 文件系统的目录结构
- TCP/IP详解--第十一章
- 利用FreeNas创建WebDAV共享并实现ssl加密
- linux非lvm分区在线扩容,怎么给不是LVM的根分区扩容
- openstack neutron-fwaas 中的几个概念
- mysql 常用命令集_mysql 常用命令集锦[绝对精华]
- 反编译得到的java文件好多错误 val$query什么意思_这部分代码有错么?一直提示输入框$(#msg).val()得到的值未定义...
- MavenSelenium测试自动化教程
- java免费低代码开发平台,steedos-platform