DenseNet学习笔记(核心与resnet进行对比):

  1. 概述:比resnet更优的cnn模型
  2. resnet:
    1. resnet可以训练出更深的cnn模型,实现更高的准确度,resnet模型的核心是通过建立前面层和后面层之间的“短路连接”,有助于训练过程中的反向传播,从而能训练出更深的cnn网络(可能主要是解决梯度消失问题)。
    2. resnet是每个层与前面的某层(一般还是2-3层)短路连接在一起,连接方式是通过元素级相加。
  3. densenet:
    1. 特色:在channel上的连接来实现特征重用。让densenet在参数和计算成本更少的情形下实现比resnet更优的性能。
    2. 连接机制:互相连接所有层,即每个层都接受其前面所有层作为其额外的输入。
    3. densenet中每个层和前面所有层在channel维度上连接,并且作为下一层的输入。
    4. densenet直接连接来自不同层的特征图,可以实现特征重用,提升效率
    5. cnn网络一般要经过pooling 或stride>1的卷积来降低特征图的大小,而densenet的密集连接方式需要特征图大小保持一致。所以densenet网络中使用denseblock+transition结构
      1. denseblock:
        1. 包含很多层的模块,每个层的特征图大小相同。层与层之间采用密集连接方式。denseblock中的非线性组合函数H(·)采用的是BN+Relu+3x3conv的结构。
        2. 所有denseblock中各个层卷积之后均输出k个特征图,即得到的特征图的channel数为k,或者说采用k个卷积核,k是一个超参数。一般情况下,使用较小的k(比如12),就可以得到较佳的性能。
        3. 由于后面层的输入会非常大,denseblock内部可以采用bottleneck层来减少计算量。具体实现:在原有结构中增加1X1conv
      2. transition模块:
        1. 是连接两个相邻的denseblock,并通过pooiling使特征图大小降低。
        2. 主要是连接两个相邻的denseblock,并降低特征图大小。包括一个1X1的卷积和2X2的平均池化。结构为BN+Relu+1X1conv+2X2 avgpooling,transition层可以起到压缩模型的作用。
    6. densenet缺点:很占用显存
    7. 区分三种不同的结构:(参考:https://blog.csdn.net/weixin_41798111/article/details/86494353)
      1. DenseNet:
        1. Dense Block模块:BN+Relu+Conv(3*3)+dropout
        2. transition layer模块:BN+Relu+Conv(1*1)(filternum:m)+dropout+Pooling(2*2)
      2. DenseNet-B:

        1. Dense Block模块:BN+Relu+Conv(1*1)(filternum:4K)+dropout+BN+Relu+Conv(3*3)+dropout

        2. transition layer模块:BN+Relu+Conv(1*1)(filternum:m)+dropout+Pooling(2*2)

      3. DenseNet-BC:

        1. Dense Block模块:BN+Relu+Conv(1*1)(filternum:4K)+dropout+BN+Relu+Conv(3*3)+dropout

        2. transition layer模块:BN+Relu+Conv(1*1)(filternum:θm,其中0<θ<1,文章取θ=0.5) +dropout +Pooling(2*2)

      4. 通俗简述区别:
        1. DenseNet-B在原始DenseNet的基础上,加入Bottleneck layers(主要是在Dense Block模块中加入了1*1卷积,使得将每一个layer输入的feature map都降为到4k的维度,大大的减少了计算量)。解决在Dense Block模块中每一层layer输入的feature maps随着层数增加而增大,则需要加入Bottleneck 模块,降维feature maps到4k维
        2. DenseNet-BC在DenseNet-B的基础上,在transitionlayer模块中加入了压缩率θ参数,论文中将θ设置为0.5,这样通过1*1卷积,将上一个Dense Block模块的输出feature map维度减少一半。

  4. densenet比resnet更优的本质:resnet是以sum方式合并特征,这样就不能反推出原来的输入特征,而concat可以,所以concat方式在保持特征或还原特征方面有优势。
  5. 一个训练过程中的一个小tip:特征提取都是nan:nan是梯度暴涨或梯度消失,可以增大batch_size

你可能感兴趣的:(deeplearning,深度学习,神经网络,cnn)