DenseNet 论文学习笔记

DenseNet

今日研读了作者Zhuang Liu的论文DenseNet,下面是学习的一些笔记
如有错误可在评论区中提出~
论文地址:https://arxiv.org/pdf/1608.06993.pdf
在这里插入图片描述

Introduction

密集连接网络,对于每一层,输入来自前面网络的所有特征。
随着网络层数的不断加深,对网络的训练方式也在不断改善,LeNet5,VGG,HighwayNet,ResNet

ResNet

ResNet(residual neural Network)改进了传统卷积神经网络的前馈传播方式,使得神经网络不再是直接连接上一层的输出到下一层的输入。通过skip-connection的连接方式将每一层的输出与输入使用identity function求和,一同传入下一层。
在这里插入图片描述
这个做法使得梯度可直接从后层流入前层。但是也存在着缺陷,identity function求和的做法可能存在信息的丢失,阻碍信息在整个网络中的传播。

Dense connectivity

DenseNet引入了Dense conncetivity的概念,将前面所有层的输出在网络宽度维度上直接拼接,作为特征输入到后层中,这有利于信息的重用,并且不会导致信息丢失,增强了特征信息在网络中的流动。(可看上图理解连接方式)
在这里插入图片描述

Composite function

论文中定义H()函数为Composite function,且有三个连续的操作组成:

  1. BN
  2. ReLU
  3. Conv3x3

Transition layers

通过降采改变特征的大小,连接Dense Block的层叫做Transition layers(转接层),由三部分组成:

  1. BN
  2. conv 1x1
  3. average pool 2x2

Growth rate K

增长率K是网络的超参数,控制网络宽度。
通过K可计算出第l层的输入特征个数:K0 + K(l -1),其中K为输入的深度
这是个经验值,需要通过大量的实验去调整来适应不同的数据集

Bottleneck layers(DenseNet-B)

瓶颈层,即使DenseNet每层只产生K个特征,但是这仍然存在大量的输入,有论文中提到在Conv3x3卷积层前加入Conv1x1卷积层能减少特征的数量,从而加快计算的效率。

  1. BN
  2. ReLU
  3. Conv1x1 : 4k
  4. BN
  5. ReLU
  6. Conv3x3

Compression

为了减少特征,可对特征进行压缩。如果密集层输出m个特征,则使转阶层输出θ*m个特征。(0 < θ <= 1)

  1. θ = 1,特征不改变
  2. θ < 1,DenseNet-C
  3. 当使用了Bottleneck + Compression,此时的网络为 DenseNet-BC

Implementation Details

在这里插入图片描述在这里插入图片描述

Pytorch 实现

Github:等有时间再来更新代码~

发布了23 篇原创文章 · 获赞 33 · 访问量 3241

猜你喜欢

转载自blog.csdn.net/shipsail/article/details/103071752