论文笔记Densely Connected Convolutional Networks v1

1. 标题及来源

Dense Connected Convolutional Networks. CVPR_2017
该论文一共有5个版本,这是第一个版本

2. 阅读目的

1.  了解DenseNet的设计思想
2.  了解如何优化网络结构(目标识别或者分类的难度不同,并不需要将它们都在网络的最后一层输出)

3. 领域

网络结构设计

4. 拟解决的问题

1.  设计更深的网络结构
2.  设计更深网络结构出现的梯度消失/爆炸问题

5. 提出的方法

5.1 整体网络结构

论文笔记Densely Connected Convolutional Networks v1
每个Dense Block之间都通过transition层连接,在transition层中有一个1x1卷积和一个池化,1x1卷积的输出通道数量和输入特征数量相同。通过加transition层的方式实现池化操作。
lthl^{th}层的输入通道数是k×(l1)+k0k0k \times (l - 1) + k_0,k_0表示输出的通道数。为了防止网络过宽,k通常取12(L=40),24(L=100)

5.2 Dense Block

论文笔记Densely Connected Convolutional Networks v1
每一层都接收之前所有层的特征图并且把自身的特征图传给后面所有的层。
假设当前层是L,那么L层会接收1, 2, …, L - 1层所有的特征,这些特征都作为单独的输入(concat)输入到第L层中,xl=Hl([x0,x1,,xl1])x_l = H_l([x_0, x_1, \cdots, x_{l - 1}])[x0,x1,,xl1][x_0, x_1, \cdots, x_{l - 1}]表示对这些特征图进行concat
ResNet是将特征进行相加,xl=Hl(xl1)+xl1x_l = H_l(x_{l - 1}) + x_{l - 1}

6. 结果

论文笔记Densely Connected Convolutional Networks v1
在100层的DenseNet网络中,k从12增加到24,在C10上的表现降低,不一定是由过拟合问题引起的。因为作者针对这点,作了另外一个实验,使用DenseNet(L=100, k=12),然后不使用Dropout,在C10和C100上的结果分别是8.85%和32.53%,几乎超过了表中所有方法(除FractalNet with dropout)。当k从12增加到24时,这种误差波动在波动范围内,所以无法判断是否是由过拟合引起。

论文笔记Densely Connected Convolutional Networks v1
The weight norm serves as an approximate for the dependency of a convolutional layer on its preceding layers(权重范数是卷积层在其前层上的依赖性的近似值)
图中每列表示layer,每行表示对应的特征图,每个像素点表示卷积层与特征图关联的权重的范数。
点越偏近黄色,该层越充分利用该特征图;点越偏近深蓝色,表明该层未利用该特征图。
论文笔记Densely Connected Convolutional Networks v1

7. 改进&存在的问题

8. 可借鉴的点

1.  特征的reuse方式
2.  网络结构的设计思想(将不同层特征直接进行重用,并且重用每一层的特征)

9. 知识补充

9.1 对论文的个人理解

DenseNet中每一层都可以和损失函数有直接"交流"(可以直接通过损失函数计算梯度,而不需要层层回传,也正是因为这点,所以避免了梯度消失和梯度爆炸)。
DenseNet每一层都很"窄"(channel数量非常少,只有12或者24),然后每层学习一些特征,每层都会接收之前所有层的特征,相当于对这些特征进行了重组,充分利用这些特征。举个不是很恰当的例子:例如猫的识别,在第一层网络中,学习了猫的毛发特征,可能是一些点或者线,然后在第二层网络中,学习了猫的一些轮廓信息,在第三层中,学习了猫的身体信息,第四层中,学习了猫的头部信息。在分类时,分类器会接收所有的这些特征,然后基于这些特征来判断是否是一个猫。ps:实际的学习过程可能并没有这么快,此处只是一个假设,用于理解该网络的设计理念

9.2 高低层特征融合

参考博客:https://blog.csdn.net/xys430381_1/article/details/88370733