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

本文共 2171 字,大约阅读时间需要 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 current
def 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/

你可能感兴趣的文章
mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
查看>>
MySQL高级-MySQL并发参数调整
查看>>
MySQL高级-视图
查看>>
MySQL:判断逗号分隔的字符串中是否包含某个字符串
查看>>
Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
查看>>
Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置自动刷新源码解析
查看>>
Nacos集群搭建
查看>>
nacos集群搭建
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(2):环境搭建
查看>>
Neo私链
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
NetApp凭借领先的混合云数据与服务把握数字化转型机遇
查看>>
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>