博客
关于我
【论文笔记】DenseNet
阅读量:100 次
发布时间:2019-02-26

本文共 2160 字,大约阅读时间需要 7 分钟。

介绍卷积神经网络与DenseNet的创新结构

卷积神经网络(CNNs)已成为现代视觉物体识别领域的主流技术。尽管CNN最初提出于20世纪90年代,但直到最近,由于硬件性能和网络架构的进步,才真正实现了深度CNN的训练。然而,随着CNN层数的增加,输入信息或梯度经过多层后往往会逐渐消失。这一现象限制了网络的表达能力,影响了模型的性能。

为解决这一问题,本文提出了一种全新的网络连接模式:每一层不仅接收来自其直接上层的输入,还能直接从之前所有层获取feature-maps。这种设计目的是最大化网络内的信息流动,使得每一层都能充分利用前面所有层的输出信息。

DenseNet的创新结构

DenseNet的核心思想是通过稠密连接(dense connectivity)来构建网络。与传统的卷积前馈网络不同,DenseNet中的每一层都从它之前的所有层中接收额外的输入,这意味着每一层都能获取到来自上一层及其之前所有层的feature-maps。具体来说,第l层的输入Xl是由X0, X1, ..., X(l-1)三个feature-maps拼接而成。

DenseNet的结构包括以下关键组件:

1. 组合函数(Composite function)

DenseNet中的每一层都包含一个复合函数,包括批量标准化(BN)、激活函数(ReLU)和3x3卷积层。这些操作确保了网络能够有效地进行非线性特征提取。

2. 池化层(Pooling layers)

为了保证不同feature-maps的尺寸一致,DenseNet采用多个稠密块(dense blocks)进行分解。块与块之间的转换层包含批量标准化、1x1卷积以及2x2平均池化操作。这种设计不仅保证了网络的有效性,还为后续拼接操作提供了必要的条件。

3. 增长率(Growth rate)

DenseNet的核心参数是增长率(growth rate)。假设每一层产生k个feature-maps,则第l层的输入feature-maps数为k0 + k*(l-1),其中k0是输入层的通道数。实验表明,选择较小的k值(如k=12)可以在保证性能的前提下,显著减少网络复杂度。

4. 瓶颈层(Bottleneck layers)

为了进一步优化计算效率,DenseNet引入了瓶颈层(bottleneck layers)。在每个3x3卷积层之前,加入一个1x1卷积层作为瓶颈。这种设计有效地降低了计算复杂度,同时保持了网络的表达能力。

5. 压缩因子(Compression factor)

为提高网络的紧密度,DenseNet可以在转换层中引入压缩因子。输入feature-maps数为m时,其输出尺寸会根据压缩因子进行调整。压缩因子小于1的DenseNet被称为DenseNet-C。

实现细节

DenseNet的具体实现可以通过以下代码框架来理解:

def bn_act_conv_drp(current, num_outputs, kernel_size, scope='block'):    current = slim.batch_norm(current, scope=scope + '_bn')    current = tf.nn.relu(current)    current = slim.conv2d(current, num_outputs, kernel_size, scope=scope + '_conv')    current = slim.dropout(current, scope=scope + '_dropout')    return currentdef block(net, layers, growth, scope='block'):    for idx in range(layers):        bottleneck = bn_act_conv_drp(net, 4 * growth, [1, 1],                                      scope=scope + '_conv1x1' + str(idx))        tmp = bn_act_conv_drp(bottleneck, growth, [3, 3],                               scope=scope + '_conv3x3' + str(idx))        net = tf.concat(axis=3, values=[net, tmp])    return net

6. 实验配置

在ImageNet数据集上,DenseNet的基本配置为{L=40, k=12}。通过多个稠密块和适当的转换层,网络能够有效地捕捉图像中的复杂特征。在实际应用中,DenseNet的性能表现优于传统的卷积网络。

总结

DenseNet通过稠密连接和信息流动的优化,显著提升了卷积神经网络的性能和表达能力。其创新的网络结构不仅解决了深层网络中的梯度消失问题,还为后续的研究提供了新的方向。通过合理的设计和优化,DenseNet已经在多个实践中取得了显著的成果。

转载地址:http://wvbk.baihongyu.com/

你可能感兴趣的文章
nodejs封装http请求
查看>>
nodejs常用组件
查看>>
nodejs开发公众号报错 40164,白名单配置找不到,竟然是这个原因
查看>>
Nodejs异步回调的处理方法总结
查看>>
NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
查看>>
nodejs支持ssi实现include shtml页面
查看>>
Nodejs教程09:实现一个带接口请求的简单服务器
查看>>
nodejs服务端实现post请求
查看>>
nodejs框架,原理,组件,核心,跟npm和vue的关系
查看>>
Nodejs概览: 思维导图、核心技术、应用场景
查看>>
nodejs模块——fs模块
查看>>
Nodejs模块、自定义模块、CommonJs的概念和使用
查看>>
nodejs生成多层目录和生成文件的通用方法
查看>>
nodejs端口被占用原因及解决方案
查看>>
Nodejs简介以及Windows上安装Nodejs
查看>>
nodejs系列之express
查看>>
nodejs系列之Koa2
查看>>
Nodejs连接mysql
查看>>
nodejs连接mysql
查看>>
NodeJs连接Oracle数据库
查看>>