博客
关于我
【论文笔记】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/

你可能感兴趣的文章
Nginx Location配置总结
查看>>
Nginx log文件写入失败?log文件权限设置问题
查看>>
Nginx Lua install
查看>>
nginx net::ERR_ABORTED 403 (Forbidden)
查看>>
Nginx SSL私有证书自签,且反代80端口
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
nginx 代理解决跨域
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
查看>>
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 多端口配置和访问异常问题的排查与优化
查看>>
Nginx 如何代理转发传递真实 ip 地址?
查看>>
Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 学习(一):Nginx 下载和启动
查看>>
nginx 常用指令配置总结
查看>>