精华内容
下载资源
问答
  • MSDNet 多尺度密集卷积网络的有效预测
  • 文章目录前言Dense BlockGrowth rateBottleneckTransition layer压缩因子DenseNet网络结构DenseNet优缺点Pytorch实现DenseNet 前言 DenseNet是CVPR2017的最佳论文,由康奈尔大学黄高博士(Gao Huang)、清华大学本科...

    前言

    DenseNet是CVPR2017的最佳论文,由康奈尔大学黄高博士(Gao Huang)、清华大学本科生刘壮(Zhuang Liu)、Facebook 人工智能研究院研究科学家 Laurens van der Maaten 及康奈尔大学计算机系教授 Kilian Q. Weinberger 所作,有兴趣的同学可以结合原文阅读。

    ResNet通过前层与后层的“短路连接”(Shortcuts),加强了前后层之间的信息流通,在一定程度上缓解了梯度消失现象,从而可以将神经网络搭建得很深,具体可以参考ResNet残差网络及变体详解。更进一步,这次的主角DenseNet最大化了这种前后层信息交流,通过建立前面所有层与后面层的密集连接,实现了特征在通道维度上的复用,不但减缓了梯度消失的现象,也使其可以在参数与计算量更少的情况下实现比ResNet更优的性能。连接方式可以看下面这张图:

    在这里插入图片描述
    标准的 L 层卷积网络有 LL 个连接,即每一层与它的前一层和后一层相连,而DenseNet将前面所有层与后面层连接,故有 (1+2+...+L)L=(L+1)L/2(1+2+...+L)*L=(L+1)*L/2 个连接。这里看完有些摸不着头脑没关系,接下来我们会具体展开。

    Dense Block

    Dense Block是DenseNet的一个基本模块,这里我们从一般的神经网络说起:
    在这里插入图片描述
    上图是标准神经网络的一个图,输入和输出的公式是Xl=Hl(Xl1)X_l = H_l(X_{l-1}),其中HlH_l是一个组合函数,通常包括BN、ReLU、Pooling、Conv操作,Xl1X_{l-1}是第 ll 层输入的特征图,XlX_{l}是第 ll 层输出的特征图。
    在这里插入图片描述
    上图则是ResNet的示意图,我们知道ResNet是跨层相加,输入和输出的公式是Xl=Hl(Xl1)+Xl1X_l = H_l(X_{l-1})+X_{l-1}
    在这里插入图片描述
    而对于DesNet,则是采用跨通道concat的形式来连接,用公式来说则是Xl=Hl(X0,X1,...,Xl1X_l = H_l(X_0,X_1,...,X_{l-1}),这里要注意所有的层的输入都来源于前面所有层在channel维度的concat,我们用一张动图体会一下:
    在这里插入图片描述
    特征传递方式是直接将前面所有层的特征concat后传到下一层,而不是前面层都要有一个箭头指向后面的所有层,这与具体代码实现是一致的,后面会具体的实现。

    这里要注意,因为我们是直接跨通道直接做concat,所以这里要求不同层concat之前他们的特征图大小应当是相同的,所以DenseNet分为了好几个Dense Block,每个Dense Block内部的feature map的大小相同,而每个Dense Block之间使用一个Transition模块来进行下采样过渡连接,这个后文会介绍。

    Growth rate

    假如输入特征图的channel为K0K_0,那么第 ll 层的channel数就为 K0+(l1)KK_0+(l-1)K,我们将其称之为网络的增长率(growth rate)。因为每一层都接受前面所有层的特征图,即特征传递方式是直接将前面所有层的特征concat后传到下一层,所以这个KK不能很大,要注意这个K的实际含义就是这层新提取出的特征。
    在这里插入图片描述

    Bottleneck

    在刚才Dense Block中的非线性组合函数是指BN+ReLU+3x3 Conv的组合,尽管每前进一层,只产生K张新特征图,但还是嫌多,于是在进行3×3卷积之前先用一个 1×1卷积将输入的特征图个数降低到 4*k,我们发现这个设计对于DenseNet来说特别有效。所以我们的非线性组合函数就变成了BN+ReLU+1x1 Conv+BN+ReLU+3x3 Conv的结构,由此形成的网络结构我们称之为DenseNet-B
    在这里插入图片描述

    增加了1x1的卷积的Dense Block也称为Bottleneck结构,实现细节如下:
    在这里插入图片描述
    有以下几个细节需要注意:

    1. 每一个Bottleneck输出的特征通道数是相同的,例如这里的K=32。同时可以看到,经过concat操作后的通道数是按K的增长量增加的,因此这个K也被称为GrowthRate。
    2. 这里1×1卷积的作用是固定输出通道数,达到降维的作用,1×1卷积输出的通道数通常是GrowthRate的4倍。当几十个Bottleneck相连接时,concat后的通道数会增加到上千,如果不增加1×1的卷积来降维,后续3×3卷积所需的参数量会急剧增加。比如,输入通道数64,增长率K=32,经过15个Bottleneck,通道数输出为64+15*32=544,再经过第16个Bottleneck时,如果不使用1×1卷积,第16个Bottleneck层参数量是3*3*544*32=156672,如果使用1×1卷积,第16个Bottleneck层参数量是1*1*544*128+3*3*128*32=106496,可以看到参数量大大降低。
    3. Dense Block采用了激活函数在前、卷积层在后的顺序,即BN-ReLU-Conv的顺序,这种方式也被称为pre-activation。通常的模型relu等激活函数处于卷积conv、批归一化batchnorm之后,即Conv-BN-ReLU,也被称为post-activation。作者证明,如果采用post-activation设计,性能会变差。想要更清晰的了解pre-activition,可以参考我的博客ResNet残差网络及变体详解中的Pre Activation ResNet。

    Transition layer

    在这里插入图片描述

    两个相邻的Dense Block之间的部分被称为Transition层,具体包括BN、ReLU、1×1卷积、2×2平均池化操作。通过1×1卷积层来减小通道数,并使用步幅为2的平均池化层减半高和宽,从而进一步降低模型复杂度。

    压缩因子

    为进一步提高网络的紧密度,我们可以在转换层(transition layers)减少feature-maps的数量。我们引入一个压缩因子θ\theta,假定上一层得到的feature map的channel大小为mm,那经过Transition层就可以产生 θm\theta m 个特征,其中θ\theta在0和1之间。在DenseNet-C中,我们令θ\theta=0.5。当模型结构即含瓶颈层,又含压缩层时,我们记模型为DenseNet-BC。

    DenseNet网络结构

    DenseNet网络构成如下:
    在这里插入图片描述
    上图中,增长率K=32,采用pre-activation,即BN-ReLU-Conv的顺序。

    以DenseNet-121为例,看下其网络构成:

    1. DenseNet-121由121层权重层组成,其中4个Dense block,共计2×(6+12+24+16) = 116层权重,加上初始输入的1卷积层+3过渡层+最后输出的全连接层,共计121层;
    2. 训练时采用了DenseNet-BC结构,压缩因子0.5,增长率k = 32;
    3. 初始卷积层有2k个通道数,经过7×7卷积将224×224的输入图片缩减至112×112;Denseblock块由layer堆叠而成,layer的尺寸都相同:1×1+3×3的两层conv(每层conv = BN+ReLU+Conv);Denseblock间由过渡层构成,过渡层通过1×1卷积层来减小通道数,并使用步幅为2的平均池化层减半高和宽。最后经过全局平均池化 + 全连接层的1000路softmax得到输出。

    DenseNet优缺点

    DenseNet的优点主要有3个:

    1. 更强的梯度流动
      在这里插入图片描述
      DenseNet可以说是一种隐式的强监督模式,因为每一层都建立起了与前面层的连接,误差信号可以很容易地传播到较早的层,所以较早的层可以从最终分类层获得直接监管(监督)。
    2. 能够减少参数总量
      在这里插入图片描述
      3.保存了低维度的特征
      在这里插入图片描述
      在标准的卷积网络中,最终输出只会利用提取最高层次的特征。
      在这里插入图片描述
      在DenseNet中,它使用了不同层次的特征,倾向于给出更平滑的决策边界。这也解释了为什么训练数据不足时DenseNet表现依旧良好。

    DenseNet的不足在于由于需要进行多次Concatnate操作,数据需要被复制多次,显存容易增加得很快,需要一定的显存优化技术。另外,DenseNet是一种更为特殊的网络,ResNet则相对一般化一些,因此ResNet的应用范围更广泛。

    实验效果

    这里给出DenseNet在CIFAR-100和ImageNet数据集上与ResNet的对比结果,首先来看下DenseNet与ResNet在CIFAR-100数据集上实验结果,如下图所示,可以看出,只有0.8M大小的DenseNet-100性能已经超越ResNet-1001,并且后者参数大小为10.2M。

    在这里插入图片描述

    下面是DenseNet与ResNet在ImageNet数据集上的比较,可以看出,同等参数大小时,DenseNet也优于ResNet网络。其它实验结果见原论文。
    在这里插入图片描述

    Pytorch实现DenseNet

    首先实现DenseBlock中的内部结构,这里是BN+ReLU+1x1 Conv+BN+ReLU+3x3 Conv结构,最后也加入dropout层以用于训练过程。

    class _DenseLayer(nn.Sequential):
        """Basic unit of DenseBlock (using bottleneck layer) """
        def __init__(self, num_input_features, growth_rate, bn_size, drop_rate):
            super(_DenseLayer, self).__init__()
            self.add_module("norm1", nn.BatchNorm2d(num_input_features))
            self.add_module("relu1", nn.ReLU(inplace=True))
            self.add_module("conv1", nn.Conv2d(num_input_features, bn_size*growth_rate,
                                               kernel_size=1, stride=1, bias=False))
            self.add_module("norm2", nn.BatchNorm2d(bn_size*growth_rate))
            self.add_module("relu2", nn.ReLU(inplace=True))
            self.add_module("conv2", nn.Conv2d(bn_size*growth_rate, growth_rate,
                                               kernel_size=3, stride=1, padding=1, bias=False))
            self.drop_rate = drop_rate
    
        def forward(self, x):
            new_features = super(_DenseLayer, self).forward(x)
            if self.drop_rate > 0:
                new_features = F.dropout(new_features, p=self.drop_rate)
            # 在通道维上将输入和输出连结
            return torch.cat([x, new_features], 1)
    

    据此,实现DenseBlock模块,内部是密集连接方式(输入特征数线性增长):

    class _DenseBlock(nn.Sequential):
        """DenseBlock"""
        def __init__(self, num_layers, num_input_features, bn_size, growth_rate, drop_rate):
            super(_DenseBlock, self).__init__()
            for i in range(num_layers):
                layer = _DenseLayer(num_input_features+i*growth_rate, growth_rate, bn_size,
                                    drop_rate)
                self.add_module("denselayer%d" % (i+1), layer)
    

    此外,实现Transition层,它主要是一个卷积层和一个池化层:

    class _Transition(nn.Sequential):
        """Transition layer between two adjacent DenseBlock"""
        def __init__(self, num_input_feature, num_output_features):
            super(_Transition, self).__init__()
            self.add_module("norm", nn.BatchNorm2d(num_input_feature))
            self.add_module("relu", nn.ReLU(inplace=True))
            self.add_module("conv", nn.Conv2d(num_input_feature, num_output_features,
                                              kernel_size=1, stride=1, bias=False))
            self.add_module("pool", nn.AvgPool2d(2, stride=2))
    

    最后我们实现DenseNet网络:

    class DenseNet(nn.Module):
        "DenseNet-BC model"
        def __init__(self, growth_rate=32, block_config=(6, 12, 24, 16), num_init_features=64,
                     bn_size=4, compression_rate=0.5, drop_rate=0, num_classes=1000):
            """        
            :param growth_rate: 增长率,即K=32
            :param block_config: 每一个DenseBlock的layers数量,这里实现的是DenseNet-121
            :param num_init_features: 第一个卷积的通道数一般为2*K=64
            :param bn_size: bottleneck中1*1conv的factor=4,1*1conv输出的通道数一般为factor*K=128
            :param compression_rate: 压缩因子
            :param drop_rate: dropout层将神经元置0的概率,为0时表示不使用dropout层
            :param num_classes: 分类数
            """
            super(DenseNet, self).__init__()
            # first Conv2d
            self.features = nn.Sequential(OrderedDict([
                ("conv0", nn.Conv2d(3, num_init_features, kernel_size=7, stride=2, padding=3, bias=False)),
                ("norm0", nn.BatchNorm2d(num_init_features)),
                ("relu0", nn.ReLU(inplace=True)),
                ("pool0", nn.MaxPool2d(3, stride=2, padding=1))
            ]))
    
            # DenseBlock
            num_features = num_init_features
            for i, num_layers in enumerate(block_config):
                block = _DenseBlock(num_layers, num_features, bn_size, growth_rate, drop_rate)
                self.features.add_module("denseblock%d" % (i + 1), block)
                num_features += num_layers*growth_rate
                if i != len(block_config) - 1:
                    transition = _Transition(num_features, int(num_features*compression_rate))
                    self.features.add_module("transition%d" % (i + 1), transition)
                    num_features = int(num_features * compression_rate)
    
            # final bn+ReLU
            self.features.add_module("norm5", nn.BatchNorm2d(num_features))
            self.features.add_module("relu5", nn.ReLU(inplace=True))
    
            # classification layer
            self.classifier = nn.Linear(num_features, num_classes)
    
            # params initialization
            for m in self.modules():
                if isinstance(m, nn.Conv2d):
                    nn.init.kaiming_normal_(m.weight)
                elif isinstance(m, nn.BatchNorm2d):
                    nn.init.constant_(m.bias, 0)
                    nn.init.constant_(m.weight, 1)
                elif isinstance(m, nn.Linear):
                    nn.init.constant_(m.bias, 0)
    
        def forward(self, x):
            features = self.features(x)
            out = F.avg_pool2d(features, 7, stride=1).view(features.size(0), -1)
            out = self.classifier(out)
            return out
    

    【参考文档】
    深入解析DenseNet(含大量可视化及计算)
    来聊聊DenseNet及其变体PeleeNet、VoVNet
    稠密连接网络(DenseNet)
    深度学习网络篇——DenseNet
    论文笔记DenseNet
    DenseNet:比ResNet更优的CNN模型
    Densely Connected Convolutional Networks

    展开全文
  • pytorch代码:https://github.com/WangXiaoCao/attention-is-all-you-need-pytorch 参考博客:... 1.模型结构 每一层网络的输入是前边所有层输出的连接。 公式: 网络的整体结构: 网络...

    pytorch代码:https://github.com/WangXiaoCao/attention-is-all-you-need-pytorch

    参考博客:https://blog.csdn.net/sinat_33761963/article/details/83958802

    1.模型结构

    每一层网络的输入是前边所有层输出的连接。

    公式:

     

    网络的整体结构:

    网络包括:(1)feature block即图中第一个卷积块;(2)dense block,该网络结构中有3个block,每个块中有n个dense层,即图中灰色圆圈,该层代表与前边几层输出相连接;白色圆圈表示上一层的输出;(3)transition block,包括卷积层和池化层;(4)classification block,包括pooling,linear;(5)预测层,用softmax进行分类。

    2.重点理解dense block

    2.1 dense layer

    每一个灰色圆圈代表BN + ReLU + (Bottleneck) + 3x3conv + (Dropout)。模型中出现k值,是预先设定的,k = 32。

    其中Bottleneck是可选的,主要目的是为了减少特征图数量;Dropout同样也是可选的,用于防止过拟合。

    对于第一个块中的第一个圆圈来讲,输入是56x56x64---->56x56x64---->56x56x64---->(56x56x128---->56x56x128---->56x56x128)---->56x56x32(kernel_size=3, channel = k)---->56x56x32。

    2.2 dense block

    layer0(如块中白色圆圈):56x56x64---->56x56x32;

    layer1:56x56x(32*1)---->56x56x32;只接收到layer0额输出;

    layer2:56x56x(32*2)---->56x56x32;接收到layer0和layer1的输出,将两个输出的channel拼接自然得到32*2个channel;

    layer3:56x56x(32*3)---->56x56x32;接收到layer0,layer1和layer2的输出;

    layer4:56x56x(32*4)---->56x56x32;接收到layer0,layer1,layer2和layer3的输出;

    .........

    layer n:56x56x(32*n)---->56x56x32;接收到layer0,layer1,layer2.....layer n-1的输出。

    具体的网络模型如图。

    展开全文
  • 因此,基于密集卷积神经网络提出一种结合局部与全局特征的联合监督识别方法,以密集卷积神经网络为基础得到图像特征,通过结合局部特征(卷积神经网络特征)与全局特征(方向梯度直方图特征)进行分类,分类器目标...
  • 泛连接的密集连接卷积网络的新架构
  • An optimized dense convolutional neural network model for disease recognition and classification ...提出了一种优化的密集卷积神经网络结构用于玉米叶部病害的识别和分类,优化后的DenseNet模型准确率达到98.06%

    An optimized dense convolutional neural network model for disease recognition and classification in corn leaf

    1、期刊信息

    期刊名:Computers and Electronics in Agriculture
    在这里插入图片描述

    2、研究思路

    关键词:人工智能、深度学习、玉米病害识别、卷积神经网络
    提出了一种优化的密集卷积神经网络结构用于玉米叶部病害的识别和分类,优化后的DenseNet模型准确率达到98.06%,参数和计算时间更少。

    3、研究现状介绍

    【1】张等人(2015)提出了一种***改进的遗传算法支持向量机***。作者收集并分类了6种玉米叶部病害。进行以下步骤对疾病进行分类:对于图像处理,将JPEG图像转换为BMP格式。
    【2】阿列根(2017)使用***KNN(K-近邻)和人工神经网络(ANN)分类算法***对三种类型的玉米叶部疾病(普通锈病、叶枯病、叶斑病)进行了分类。
    【3】张等(2018)提出了一种改进的GoogLeNet和Cifar 10模型,用于对8种玉米叶部病害(南方叶枯病、褐斑病、锈病、圆斑病、条斑病、弯孢叶斑病、灰斑病、北方叶枯病)进行分类。总共收集了9个类别的500幅图像(8个类别的病玉米叶片和一个健康叶片)。图像上采用了数据增强技术。
    【4】Bhatt等人(2019年)开发了一个使用CNN架构(VGG16、inception-v2、ResNet50、mobileNet-v1)识别玉米叶片疾病的系统,并应用了自适应增强和基于决策树的分类器的组合来区分似乎相似的疾病。

    4、研究两点

    【1】提出了一种优化的玉米叶部病害识别和分类的DenseNet体系结构。
    【2】所提出的CNN架构采用更少的参数,并且在计算上具有成本效益。

    5、技术介绍

    NASNet:对计算资源的需求随着数据集的增加而增长。Zoph等人(2017)提出了一种在小数据集上搜索架构构建块的方法,并将该块转移到更大的数据集。NASNET在ImageNet上实现了82.7%的前1名和96.2%的前5名最先进的准确性。

    6、实验条件

    在这里插入图片描述

    7、数据集

    从不同来源手动收集总共12,332张250 × 250像素尺寸的图片,这些图片分为4类作物:普通锈病(3816张图像)、健康作物(3720张图像)、灰斑病叶斑病(1644张图像)、白叶枯病(3152张图像)。

    8、模型设置

    monitor = ‘val_acc’, min_delta = 0.01, patience = 3
    learning rate of 0.001(default learning rate of Adam)

    9、论文研究出现的图和表

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 本文是 CVPR 2017 论文 Densely connected convolutional networks. 的翻译学习,因为作者本人水平有限,如有不准确的地方还望...我们认同这个观察结果,并引入密集卷积网络(DenseNet),该网络以前馈的方式将每一...

    本文是 CVPR 2017 论文 Densely connected convolutional networks. 的翻译学习,因为作者本人水平有限,如有不准确的地方还望读者不吝赐教。

    摘要

    最近的工作表明,卷积网络如果在靠近输入的层和靠近输出的层之间包含较短的连接,就可以更深入,更准确,更有效地进行训练。我们认同这个观察结果,并引入密集卷积网络(DenseNet),该网络以前馈的方式将每一层连接到其他每一层。传统的具有L层的卷积神经网络 具有 L个连接,我们的网络则具有 L(L+12\frac{L(L+1}{2} 个直接的连接(每一层之间以及每一层和它的后续层都有连接)。对于每一个层,它之前层的所有 feature-map 被用作输入,它本身的feature-map 被用作它所有后续层的输入。DenseNets 具有几个令人着迷的优势:他们减轻了梯度消失问题,增强了特征传播,鼓励功能重用,并大大减小了参数数量。我们在四个高度竞争的对象识别基准测试任务上评估我们提出的体系结构(CIFAR-10,CIFAR-100, SVHN, and ImageNet)在大多数情况下,DenseNets都比现有技术有了重大改进,同时所需的计算更少,从而可以实现高性能。代码和预训练模型可在以下位置获得:https://github.com/liuzhuang13/DenseNet。
    在这里插入图片描述
    图片1:增长率为k = 4的5层密集块,每层都将所有先前的特征图作为输入。

    介绍

    卷积神经网络(CNN)已成为视觉对象识别的主要机器学习方法。尽管它们最初是在20多年前引入的[18],但计算机硬件和网络结构的改进才使 真正的深度卷积神经网络 的训练成为可能。最初的LeNet5 【19】由5层组成,VGG具有19 【29】,去年的 HighWay Network【34】 和 Residual Networks (ResNets) 【11】 突破了 100层的屏障。随着CNN越来越深入,出现了新的研究问题:当有关输入或梯度的信息经过许多层时,它可能会在到达网络末尾(或开始)时消失并“冲洗掉”。许多最近的出版物都解决了这个或相关的问题。ResNets【11】和Highway Networks【34】通过身份连接将信号从一层旁路到另一层。随机深度【13】通过在训练过程中随机丢弃各层来缩短ResNets,以提供更好的信息和梯度流。FractalNets 【17】重复地将几个并行层与不同数量的卷积块组合在一起,以获得较大的标称深度,同时在网络中保持许多短路径。尽管这些不同的方法在网络拓扑和训练过程方面有所不同,但是它们都具有一个关键特征:它们创建了从之前层到后面层的短路径。

    在本文中,我们提出了一种架构,可以将这种见解提炼为简单的连接模式:为了确保最大程度的信息在网络中各层之间流动,我们将所有层(具有匹配的feature-map大小)彼此直接连接。为了保留前馈特性,每个层都从所有先前的图层获取附加输入,并将其自身的特征图传递给所有后续层。图1示意了这种布局。更重要的是,与ResNets相比,我们永远不会在将特征传递到图层之前通过求和来组合特征。相反,我们通过级联特征来组合它们。因此,第 L层具有L个输入,由所有前面的卷积块的feature-map组成。它自身的feature-map 被传递到所有后续层。这样一个L层的网络中就具有 L(L+1)2\frac{L(L+1)}{2} 个连接,而不是像传统的结构那样具有 L 个连接。由于其密集的连通性模式,我们将我们的方法称为密集卷积网络(DenseNet)。

    一个可能违反直觉的效果是,这种密集的连接模式与传统的卷积网络相比,需要更少的参数,因为它不需要重新学习冗余的特征图。可以将传统的前馈体系结构视为具有状态的算法,该状态会逐层传递。每一层都从其上一层读取状态,并写入下一层。它会更改状态,但还会传递需要保留的信息。ResNets【11】通过附加身份转换使该信息保留变得明确。ResNets的最新变体【13】表明,许多层的贡献很小,实际上可以在训练过程中随机丢弃。他使ResNets的状态类似于(展开的)递归神经网络[21],但是ResNets的参数数量大得多,因为每一层都有自己的权重。我们提出的DenseNet体系结构明确区分了添加到网络的信息和保留的信息。DenseNet层非常狭窄(例如,每层12个过滤器),仅向网络的“集合知识”添加少量特征图,而其余特征图保持不变–并且最终分类器根据网络中的所有特征图做出决策。

    除了更好的参数效率外,DenseNets 的一大优势是它们改善了整个网络中的信息流和梯度,这使它们易于训练。每层都可以直接从损失函数和原始输入信号访问梯度,从而导致隐式深度监督【20】。这有助于训练更深层次的网络体系结构。此外,我们还观察到密集连接具有正则化效果,从而减少了训练集大小较小的任务的过度拟合。

    我们在四个竞争激烈的基准数据集(CIFAR-10,CIFAR-100,SVHN和ImageNet)上评估DenseNet。与现有算法相比,我们的模型需要的参数往往要少得多,而且精度相当。此外,在大多数基准测试任务上,我们的性能明显优于当前最新的结果。

    相关工作

    自从最初发现以来,对网络体系结构的探索一直是神经网络研究的一部分。神经网络的流行最近也复兴了这一研究领域。现代网络中越来越多的业内人士扩大了架构之间的差异,并激发了对不同连通性模式的探索和对旧研究思想的重新审视。

    在1980年代的神经网络文学中,已经研究了类似于我们提出的密集网络布局的级联结构【3】。他们的开拓性工作专注于 以逐层方式训练的 完全连接的多层感知器。最近,使用批量梯度下降训练的全连接级联网络被提出【40】。尽管此方法对小型数据集有效,但仅可扩展到具有数百个参数的网络。在【9,23,31,41】中,发现通过跳跃连接 在CNN中使用多级特征 对于各种视觉任务都是有效的。与我们的工作平行,【1】为与我们类似的跨层连接的网络推导了一个纯粹的理论框架。

    Highway Networks 【34】是最早提供有效训练100层以上的端到端网络的手段的建筑之一。通过与选通单元一起使用旁路路径,可以毫无困难地优化具有数百层的公路网。旁路路径被认为是简化这些非常深层网络训练的关键因素。ResNets 【11】进一步支持了这一点,其中纯身份映射用作旁路路径。ResNets在许多具有挑战性的图像识别,定位和检测任务(例如ImageNet和COCO对象检测)中取得了令人印象深刻的创纪录性能【11】。最近,随机深度作为成功训练1202层ResNet的方法被提出【13】。随机深度通过在训练过程中随机丢弃图层来改善对深层残差网络的训练。这表明可能不需要所有层,并且强调了深层(残留)网络中存在大量冗余。我们的论文部分地受到了这一观察的启发。具有预激活功能的ResNets还可以训练具有1000多个层的最新网络【12】。

    一个正交方法,用于使网络更深(例如借助跳过连接) 增加网络宽度。 GoogLeNet 【36,37】使用“inception module”,该模块 由不同大小的过滤器生成的特征图 连接起来。在【38】中,提出了具有广泛广义残差块的ResNets的变体。实际上,只要深度足够,只需增加ResNets每层中的过滤器数量就可以提高其性能【42】。FractalNets还使用广泛的网络结构在多个数据集上取得了竞争性成果【17】。

    DenseNets 并未从极深或极宽的架构中获得代表性的功能,而是通过特征重用来挖掘网络的潜力,从而产生易于训练且参数高效的浓缩模型。不同层学习的级联特征图会增加后续层输入的变化并提高效率。这构成了DenseNet和ResNet之间的主要区别。与也将不同层的功能连接在一起的 Inception networks 【36,37】相比,DenseNets更简单,更高效。

    还有其他显著的网络体系结构创新也产生了竞争结果。Network in Network(NIN)【22】结构将微多层感知器包含到卷积层的过滤器中,以提取更复杂的特征。在深度监督网络(DSN)【20】中,内部层由辅助分类器直接监督,这可以加强早期层接收到的梯度。梯形网络【27,25】将横向连接引入自动编码器中,从而在半监督学习任务上产生了令人印象深刻的准确性。在【39】中,提出了深度融合网络(DFN)来通过组合不同基础网络的中间层来改善信息流。具有最小化重建损失的途径的网络扩展,也被证明可以改善图像分类模型【43】。

    密集网

    假设有单个图像 x0x_0 通过一个卷积神经网络。网络包含 L 个层,每层都执行一个非线性转换 Hl()H_{l}(\cdot),这里 l 是层的索引。 Hl()H_{l}(\cdot) 可以是诸如 卷积,池化,Relu激活,batch normalizatioin 的复合函数。我们将输出的第 l 层表示为 xlx_l

    ResNets 传统的卷积前馈网络连接第 l 层的输出作为第 l+1 层的输入【16】,这引起了如下的层转换: Xl=Hl(xl1)X_l=H_l(x_{l-1}) 。reset 【11】增加一个跳过连接,绕过非线性变换,通过一个身份函数:
    xl=Hl(xl1)+xl1(1)x_l=H_l(x_{l-1})+x_{l-1} \quad \quad (1)
    ResNets的一个优点是,梯度可以直接通过身份函数从后面的层流到前面的层。但是,身份函数和 HlH_l 的输出通过求和相结合,可能会阻碍网络中的信息流。

    Dense connective: 为了进一步改善层之间的信息流,我们提出了一种不同的连接模式:我们引入了从任何层到所有后续层的直接连接。图1显示了所得DenseNet的布局。因此,第l层接收所有先前层的特征图:x0xl1x_0,\cdots x_{l-1} 作为输入:
    xl=Hl([x0,x1,,xl1])(2)x_l=H_l([x_0,x_1,\cdots,x_{l-1}]) \quad\quad (2)
    这里 [x0,x1,,xl1][x_0,x_1,\cdots,x_{l-1}] 是前面 0,1,2,,l10,1,2,\cdots,l-1 层的级联。由于其紧密的连接性,我们将此网络架构称为“密集卷积网络”(DenseNet)。为了易于实现,我们将等式(2)中的 Hl()H_l(\cdot) 的多个输入串联到一个张量中。

    复合功能 我们将 Hl()H_l(\cdot) 定义为三个连续运算的复合函数:批量归一化(BN)【14】,然后是 ReLU 【6】和一个 3×3的卷积(Conv)。

    池化层 当特征图的大小改变时,等式(2)中使用的级联操作不可行。然而,卷积网络的重要组成部分是降低特征图大小的下采样层。为了便于在我们的体系结构中进行下采样,我们将网络划分为多个密集连接的密集块。看图2,我们将块之间的层称为过渡层,它们进行卷积和池化。我们的实验中使用的过渡层包括批处理规范化层和1×1卷积层,然后是一个 2×2的平均池化层。
    在这里插入图片描述
    图片2:具有三个密集块的深 DenseNet。两个相邻块之间的层称为过渡层并且通过卷积和池化更改功能图大小。

    增长率 如果每一个函数 Hl()H_l(\cdot) 生成 k 个特征图,则 第 l 层具有 k0+k×(l1)k_0+k \times (l-1) 其中 k0k_0 是输入层的通道数。DenseNet与现有网络体系结构之间的一个重要区别是DenseNet可以具有非常狭窄的层,例如k = 12。我们指的是网络的超参数增长率。我们在第4节中表明,相对较小的增长率足以在我们测试的数据集上获得最新的结果。对此的一种解释是,每个层都可以访问其块中的所有先前的特征图,因此可以访问网络的“集体知识”。可以将特征图视为网络的全局状态。每个图层都将自己的 k 个特征图添加到此状态。增长率控制着每一层为全局状态贡献多少新信息。写入后的全局状态可以在网络中的任何位置进行访问,并且与传统的网络体系结构不同,无需将其逐层复制。

    瓶颈层 尽管每一层仅生成k个输出特征图,但通常具有更多输入。在【37,11】中已经指出,可以在每次3×3卷积之前引入1×1卷积作为瓶颈层,以减少输入特征图的数量,从而提高计算效率。我们发现此设计对DenseNet特别有效,并且我们将具有此类瓶颈层的网络称为DenseNet-B,即HlH_l的 BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)版本。在我们的实验中,我们让每个1×1卷积产生4个特征图。

    压缩 为了进一步提高模型的紧凑性,我们可以减少过渡层的特征图数量。如果密集块包含m个特征图,则让下面的过渡层生成 θm\lfloor\theta_m\rfloor 个输出特征图,其中0<θ10<\theta\leq1称为压缩因子。当θ=1\theta=1 时,跨过过渡层的特征图数量保持不变。我们将θ<1\theta<1 的DenseNet称为DenseNet-C,并在实验中将 θ\theta 设置为0.5。当同时使用瓶颈层 以及一个θ<1\theta<1 的过渡层时,我们将模型称为DenseNet-BC。

    实施细节 在除 ImageNet 之外的所有数据集上,我们实验中使用的DenseNet具有三个密集块,每个密集块具有相等的层数。在进入第一个密集块之前,在输入图像上执行具有16个(或者 DenseNet-BC增长率的两倍)输出通道的卷积。对于内核尺寸为3×3的卷积层,输入的每一侧都用一个像素补零,以保持特征图尺寸固定。我们使用1×1卷积,然后使用2×2平均池作为两个连续密集块之间的过渡层。在最后一个密集块的末尾,执行全局平均池化,然后附加softmax分类器。三个密集块中的特征图大小分别为32×32、16×16和8×8。我们使用配置为{L = 40,k = 12},{L = 100,k = 12}和{L = 100,k = 24}的基本DenseNet结构进行试验。对于DenseNet-BC,评估 配置为{L = 100,k = 12},{L = 250,k = 24}和{L = 190,k = 40}网络

    在ImageNet上的实验中,我们在224×224输入图像上使用具有4个密集块的DenseNet-BC结构。初始卷积层包括2k个大小为7×7的卷积,步幅为2;其他所有图层的特征图数量也取自设置k。表1显示了我们在ImageNet上使用的确切网络配置。

    在这里插入图片描述
    表1:用于ImageNet的DenseNet体系结构。所有网络的增长率为 k =32。请注意,表中显示的每个“ conv”层对应于序列 BN-ReLU-Conv。

    4 实验

    我们通过经验证明DenseNet在多个基准数据集上的有效性,并与最新的体系结构进行比较,尤其是与ResNet及其变体进行比较。
    在这里插入图片描述
    表格2:CIFAR和SVHN数据集的错误率(%)。k 表示网络的增长率。超过所有竞争方法的结果均为粗体,而总体最佳结果为蓝色。“ +”表示标准数据扩充(转换和/或镜像)。∗表示结果由我们自己决定。使用Dropout获得DenseNets的所有没有数据扩充的结果(C10,C100,SVHN)。与ResNet相比,DenseNets使用更少的参数时可实现更低的错误率。如果没有数据扩充,DenseNet的性能将大大提高。

    4.1 数据集

    CIFAR. 两个CIFAR数据集【15】包含32×32像素的彩色自然图像。CIFAR-10(C10)包含从10类和100种CIFAR-100(C100)中绘制的图像。训练集和测试集分别包含50,000张和10,000张图像,我们保留5,000张训练图像作为验证集。我们采用了标准的数据扩展方案(镜像/移位),该方案被广泛用于这两个数据集【11、13、17、22、28、20、32、34】。我们在数据集名称(例如C10 +)的末尾用“ +”号表示此数据扩充方案。对于预处理,我们使用通道均值和标准偏差对数据进行归一化。对于最终运行,我们使用所有50,000张训练图像,并在训练结束时报告最终测试错误。

    SVHN. 街景门牌号码(SVHN)数据集[24]包含32×32彩色数字图像。训练集中有73,257张图像,测试集中有26,032张图像,其他训练有531,131张图像。遵循常规做法[7、13、20、22、30],我们使用所有训练数据,不进行任何数据扩充,并从训练集中分割出具有6,000个图像的验证集。我们选择训练期间验证误差最小的模型,并报告测试误差。我们遵循[42]并将像素值除以255,因此它们在[0,1]范围内。

    ImageNet. ILSVRC 2012分类数据集[2]包含来自1,000个类别的120万张用于训练的图像和50,000张用于验证的图像。我们采用与[8、11、12]中相同的数据增强方案来训练图像,并在测试时应用大小为224×224的单作物或10作物。根据[11,12,13],我们报告验证集的分类错误。

    4.2 训练

    所有网络均使用随机梯度下降(SGD)进行训练。在CIFAR和SVHN上,我们使用批量大小64 分别训练300和40个 epochs 。初始学习率设置为0.1,然后除以训练时期总数的50%和75%的10。在ImageNet上,我们训练了90个 epoch 的模型,批量大小为256。最初将学习率设置为0.1,然后在epoch 30和60的时候降低10倍。请注意,DenseNet的简单实现可能会导致内存效率低下。要减少GPU上的内存消耗,请参阅我们关于DenseNets的内存高效实现的技术报告【26】。

    根据【8】,我们使用 10410^{-4} 的权重衰减和0.9的奈斯特洛夫动量【35】而没有衰减。我们采用【10】引入的权重初始化。对于没有数据增强的三个数据集,即C10,C100和SVHN,我们在每个卷积层(第一个卷积层除外)之后添加一个dropout 层【33】,并将dropout 概率设置为0.2。对于每个任务和模型设置,仅对测试错误进行一次评估。

    4.3 CIFAR和SVHN的分类结果

    我们使用不同的深度 L 和 增长率 k 来训练 DenseNet 。表2显示了CIFAR和SVHN的主要结果。为了突出总体趋势,我们将所有结果标记为优于现有的最新粗体显示,而总体最佳结果显示为蓝色。
    在这里插入图片描述
    表格3(左边):ImageNet验证集上的前1个和前5个错误率,并进行了单次/十次测试。
    图片3(右边):ImageNet验证数据集上DenseNets和ResNets top-1错误率(单次测试)的比较,作为测试期间学习的参数(左)和FLOP的函数(右)。

    准确性. 可能最明显的趋势可能来自表2的最后一行,这表明在所有CIFAR数据集上,L = 190和k = 40的DenseNet-BC均优于现有的最新技术。它在C10 +上的错误率为3.46%,在C100 +上的错误率为17.18%,远低于广泛的ResNet架构所实现的错误率【42】。我们在C10和C100上获得的最佳结果(不进行数据增强)甚至更令人鼓舞:两者均比使用分路路径正则化的Fractal-Net低近30%【17】。在SVHN上,具有 dropout 层的时候,L = 100andk = 24的DenseNet也超过了广泛的ResNet所获得的当前最佳结果。但是,250层的DenseNet-BC不能比较短的DenseNet-BC进一步提高性能。可以用SVHN解释这是一个相对容易的任务,而极深的模型可能会过拟合训练集。

    容量. 在没有压缩或瓶颈层的情况下,DenseNets的总体趋势是随着L 和 k 的增加而表现更好。我们将此主要归因于模型容量的相应增长。这个通过C10 +和C100 +列更好的进行了演示。在C10 +上,随着参数数量从1.0M增加到7.0M到27.2M,错误从5.24%下降到4.10%,最后下降到3.74%。在C100 +上,我们观察到了类似的趋势。这表明DenseNets可以利用更大和更深层模型的增强表示能力。这也表明它们没有残留网络的过度拟合或优化困难【11】。

    参数效率. 表2中的结果表明,DenseNets比其他体系结构(尤其是ResNets)更有效地利用参数。具有瓶颈结构并在过渡层减小尺寸的DenseNet-BC特别有效。例如,我们的250层模型仅具有1530万个参数,但始终优于其他具有超过3000万个参数的模型(例如FractalNet和Wide ResNets)。我们还着重指出,L = 100和k = 12的DenseNet-BC的性能(例如,C10 +的误差为4.51%vs 4.62%,C100 +的误差为22.27%vs 22.71%)可与使用90%的参数的1001层预激活ResNet媲美。图4(右图)显示了C10 +上这两个网络的训练损失和测试错误。1001层deepResNet收敛到较低的训练损耗值,但测试误差相似。我们将在下面更详细地分析这种影响。

    过度拟合. 更有效地使用参数的一个积极副作用是DenseNets不太容易过度拟合。我们观察到,在不进行数据扩充的数据集上,DenseNet体系结构相对于先前工作的改进尤其明显。在C10上,改善表示相对误差降低了29%,从7.33%降低到5.19%。在C100上,减少幅度约为30%,从28.20%降至19.64%。在我们的实验中,我们观察到了在单个设置中的潜在过度拟合:在C10上,通过将k = 12增加到k = 24产生的参数的4倍增长导致误差从5.77%到5.83%的适度增加。DenseNet-BC瓶颈和压缩层似乎是应对这种趋势的有效方法。
    在这里插入图片描述
    图片4:左:DenseNet变体之间C10 +上参数效率的比较。中:DenseNet-BC与(预激活)ResNets之间的参数效率比较。 DenseNet-BC需要大约1/3的参数作为ResNet,以实现可比的精度。右图:参数超过10M的1001层预激活ResNet [12]和仅参数0.8M的100层DenseNet的训练和测试曲线。

    4.4 ImageNet上的分类结果

    我们在ImageNet分类任务中评估了具有不同深度和增长率的DenseNet-BC,并将其与最新的ResNet架构进行了比较。为了确保两种架构之间的公平比较,我们采用了【8】的ResNet采用公开可用的Torch实施方案,从而消除了所有其他因素,例如数据预处理和优化设置的差异。我们仅用DenseNet-BC网络替换ResNet模型,并使所有实验设置与用于ResNet的设置完全相同。

    我们在表3中报告了ImageNet上DenseNets的单次裁剪和10次裁剪验证错误。图3显示了DenseNets和ResNets的单作物top-1验证错误与参数数量(左)和FLOP(右)的关系。图中的结果表明,DenseNets的性能与最新的ResNets相当,而所需的参数和计算量却大大减少,以实现可比的性能。例如,具有20M参数模型的DenseNet-201产生的验证错误与参数超过40M的101层ResNet产生相似的验证错误。从右面板可以观察到类似的趋势,该图将验证误差绘制为FLOP数量的函数:DenseNet的计算量与ResNet-50相当,而ResNet-101的计算量却是ResNet-50的两倍。

    值得注意的是,我们的实验设置暗示我们使用针对ResNets优化的超参数设置,但不适用于DenseNets。可以想象,更广泛的超参数搜索可以进一步提高DenseNet在ImageNet上的性能。

    5.讨论

    从表面上看,DenseNets与ResNets非常相似:ResNets:等式(2)不同于式(1)仅在于将 Hl()H_l(\cdot) 的输入串联起来而不是求和。但是,这种看似很小的修改的含义导致两种网络体系结构的行为实质上不同。

    模型紧凑度 输入级联的直接结果是,所有随后的层都可以访问通过DenseNet层中的任何一层学习的特征图。这鼓励了整个网络中功能的重用,并导致了更紧凑的模型。图4的左两图显示了一个实验的结果,该实验旨在比较DenseNets所有变体的参数效率(左)和可比较的ResNet体系结构(中)。我们在C10 +上训练多个具有不同深度的小型网络,并绘制它们的测试精度作为网络参数的函数。与其他流行的网络体系结构(例如AlexNet [16]或VGG-net [29])相比,具有预激活功能的ResNet使用较少的参数,而通常可以获得更好的结果[12]。因此,我们将DenseNet(k = 12)与该架构进行比较。DenseNet的培训设置与上一节相同。

    该图显示DenseNet-BC始终是DenseNet的参数最有效的变体。此外,为了达到相同的精度水平,DenseNet-BC仅需要大约ResNets(中间图)参数的1/3。此结果与ImageNetwe的结果一致,如图3所示。图4中的右图显示,仅具有0.8M可训练参数的DenseNet-BC能够达到与具有10.2M参数的1001层(预激活)ResNet [12]相当的精度。

    隐式深度监督 密集卷积网络精度提高的一种解释可能是各个层通过较短的连接而受到损耗函数的额外监视。可以解释DenseNets来执行一种“深度监督”。深度监督的好处以前已经在深度监督的网络(DSN; [20])中得到了证明,该网络的每个隐含层都有分类器,从而迫使中间层学习判别特征。

    DenseNets以隐式方式执行类似的深度监控:网络顶部的单个分类器通过最多两个或三个过渡层对所有层提供直接监控。但是,DenseNets的损失函数和梯度实际上不那么复杂,因为在所有层之间共享相同的损失函数。

    随机 vs 确定连接 密集卷积网络与剩余网络的随机深度正则化之间存在有趣的联系[13]。在随机深度中,残留网络中的各层会随机掉落,从而在周围各层之间建立直接连接。由于池化层从未被丢弃,因此网络会产生与DenseNet类似的连接模式:如果所有中间层都被随机丢弃,则在同一池化层之间的任何两层都将直接连接的可能性很小。尽管这些方法最终会完全不同,但是DenseNet对随机深度的解释可能会为这种正则化工具的成功提供见识。

    特征重用 根据设计,DenseNets允许各层访问其先前所有层的特征图(尽管有时通过过渡层)。我们进行了一项实验,以调查受过训练的网络是否利用了这一机会。我们首先在C10 +上训练DenseNet,L = 40 并且 k = 12。对于一个块内的每个卷积层L,我们计算分配给各层连接的平均(绝对)权重。图5显示了所有三个密集块的热图。平均绝对重量用作卷积层与其先前层之间依赖性的替代。位置(L,S)中的红点表示,平均而言,层L充分利用了之前生成的S层的特征图。可以从图中得出几个观察结果:

    • 所有层将权重分布在同一块内的许多输入上。这表明,由非常早的层提取的特征确实确实被深层在同一密集块中直接使用。
    • 过渡层的权重也将其权重分布在前一个密集块内的所有层上,指示信息通过少量间接从DenseNet的第一层流向最后一层。
    • 第二个和第三个密集块内的层始终将最小的权重分配给过渡层(三角形的最上一行)的输出,表明过渡层输出许多冗余特征(平均权重较低)。这与DenseNet-BC的出色结果保持了一致,这些输出正是经过压缩的。
    • 尽管最右边显示的最终分类层也使用了整个密集块的权重,但似乎对最终特征图的关注程度很高,这表明网络后期可能会产生一些更高级的特征
      在这里插入图片描述
      图片5: 经过训练的DenseNet中卷积层的平均绝对过滤器权重。像素的颜色(S,L)编码将卷积层连接到密集块内的L的权重的平均L1范数(通过输入特征图的数量标准化)。用黑色矩形突出显示的三列对应于两个过渡层和分类层。第一行对连接到密集块输入层的权重进行编码。

    6. 结论

    我们提出了一种新的卷积网络架构,我们称之为密集卷积网络(DenseNet)。它引入了具有相同要素图大小的任何两个图层之间的直接连接。我们表明,DenseNets自然可以扩展到数百层,而没有任何优化困难。在我们的实验中,随着参数数量的增加,DenseNets往往会不断提高精度,而不会出现性能下降或过度拟合的迹象。在多个环境下,它在多个高度竞争的数据集上均取得了最先进的结果。此外,DenseNets需要更少的参数和更少的计算来实现最新性能。由于我们在研究中采用了针对残留网络优化的超参数设置,因此我们认为,可以通过更详细地调整超参数和学习率时间表来进一步提高DenseNets的准确性。

    在遵循简单的连接规则的同时,DenseNets自然地集成了身份映射,深度监督和多样化深度的属性。它们允许在整个网络中重复使用功能,因此可以学习更紧凑的模型,并且根据我们的实验,可以得到更准确的模型。由于其紧凑的内部表示形式和减少的功能冗余,DenseNets可能是基于卷积特征(例如[4、5])的各种计算机视觉任务的良好特征提取器。我们计划在以后的工作中使用DenseNets研究这种特征转移。

    参考文献

    [1] C. Cortes, X. Gonzalvo, V. Kuznetsov, M. Mohri, andS. Yang. Adanet: Adaptive structural learning of artificialneural networks.arXiv preprint arXiv:1607.01097, 2016. 2
    在这里插入图片描述

    展开全文
  • 向量数据:密集连接网络(Dense层) 图像数据:二维卷积神经网络 声音数据(比如波形):一维卷积神经网络(首选)或循环神经网络 文本数据:一维卷积神经网络(首选)或循环神经网络 时间序列数据:循环神经...
  • 注:本文源自本人的硕士毕业论文,未经许可,严禁转载!...在本章中,论文首先研究密集卷积网络(DenseNet)的结构和工作原理,随后本人提出一些改进意见,包括增加密集块中的层数、使用复合型综合函数...
  • 本文提出了一种使用反馈自校正系统与密集连接卷积网络相结合的水质监测方法。 我们找到了一种有效的方法来校正模型输出,并创新了生物水质监测方法。 鱼类运动轨迹是所有文献中所使用的各种水质分类特征的综合表达,...
  • CVPR 2017最佳论文解读:密集连接卷积网络
  • 密集连接方式引入到反卷积网络中,提出了一种新型的深层密集反卷积神经网络。该网络共有51层卷积权重层,能够自动学习多层级图像的特征,充分挖掘图像信息,并且该网络是端对端可训练的,避免了深层网络中信息传递...
  • 什么是DenseNet? ... 我们知道,当靠近输入的层和靠近输出的层之间的连接越短,卷积神经网络就可以做得更深,精度更高且可以更加有效的训练。而DenseNet在此基础上将每一层与之前所有层相连接。传统的L层卷
  • https://www.jianshu.com/p/0b8fc900abef https://blog.csdn.net/u014380165/article/details/75142664
  • 密集连接卷积网络 摘要 最近的研究表明,如果卷积网络在接近输入层和接近输出层的层之间包含更短的连接,那么它在本质上可以更深入、更准确、更有效地进行训练。在本文中,我们接受了这一观察,并介绍了稠密卷积网络...
  • 前言在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确...
  • 针对这些问题,提出多维加权密集连接卷积神经网络模型实现对多光谱卫星云图的云检测。跨层连接能够实现网络中所有层之间的信息流,从而减少训练过程中的梯度消失导致收敛困难的问题。特征图之间连接的权值不同使得...
  • 近几年来,随着卷积神经网络(CNNs)的迅速发展,学术界涌现出一大批非常高效的模型,如 GoogleNet、VGGNet、ResNet 等,在各种计算机视觉任务上均崭露头角。但随着网络层数的加深,网络在训练过程中的前传信号和...
  • 在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 468
精华内容 187
关键字:

密集卷积网络