精华内容
下载资源
问答
  • 深度卷积神经网络

    2017-07-31 21:09:25
    深度卷积神经网络
  • 深度卷积神经网络详解深度卷积神经网络详解深度卷积神经网络详解深度卷积神经网络详解深度卷积神经网络详解
  • 深度卷积神经网络,如:AlexNet AlexNet与LeNet结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集ImageNet。 卷积神经网络就是含卷积层的网络。AlexNet是浅层神经网络和深度神经网络的分界..

    作为小白,看到DCNN,一直想知道与CNN的区别,也没找到明确的说法,以下是自己的一点想法,欢迎指正!

     

    目录

    一、CNN与DCNN

    二、基于pytorch的实现

    1.LeNet-5

    2.AlexNet


    一、CNN与DCNN

    卷积神经网络,如:LeNet

    深度卷积神经网络,如:AlexNet

    AlexNet是第一个现代深度卷积网络模型,首次使用了许多现代深度卷积网络的技术方法,比如,采用ReLu作为非线性激活函数,使用Dropout防止过拟合,是用数据增强提高模型准确率,使用GPU进行并行训练等。

    AlexNet与LeNet结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集ImageNet。

    卷积神经网络就是含卷积层的网络。AlexNet是浅层神经网络和深度神经网络的分界线。

    (选自书《动手学深度学习》、《神经网络与深度学习》)

    二、基于pytorch的实现

    参考卷积神经网络之 - Lenet

    LeNet、AlexNet模型实现(pytorch)

    1.LeNet-5:

    来自《神经网络与深度学习》

    Input -> conv1 (6) -> pool1 -> conv2 (16) -> pool2 -> fc3 (120) -> fc4 (84) -> fc5 (10) -> softmax

    代码实现与原文存在一定差异

    import torch
    import torch.nn as nn
    import torch.nn.functional as func
    
    class LeNet5(nn.Module):
        def __init__(self,num_classes, grayscale=False):
            """
                  num_classes: 分类的数量
                  grayscale:是否为灰度图
                  """
            super(LeNet5, self).__init__()
    
            self.grayscale = grayscale
            self.num_classes = num_classes
    
            if self.grayscale:  # 可以适用单通道和三通道的图像
                in_channels = 1
            else:
                in_channels = 3
    
            self.conv1 =self.conv1 = nn.Conv2d(in_channels, 6, kernel_size=5)
            self.conv2 = nn.Conv2d(6, 16, kernel_size=5)
            self.fc1 = nn.Linear(16*5*5, 120)
            self.fc2 = nn.Linear(120, 84)
            self.fc3 = nn.Linear(84, num_classes)
    
        def forward(self, x):
            x = func.max_pool2d(self.conv1(x), 2)   # 原始的模型使用的是 平均池化
            x = func.max_pool2d(self.conv2(x), 2)
            x = x.view(x.size(0), -1)
            x = self.fc3(self.fc2(self.fc1(x)))
            x = func.softmax(x,dim=1)
            return x
    
    #(最后模拟了一个输入,输出一个分类器运算后 10 个 softmax 概率值)
    num_classes = 10  # 分类数目
    grayscale = True  # 是否为灰度图
    data = torch.rand((1, 1, 32, 32))
    print("input data:\n", data, "\n")
    model = LeNet5(num_classes, grayscale)
    x= model(data)
    print(x)
    

    2.AlexNet

     

    preview

    来自《神经网络与深度学习》

     

    假设输入为32*32大小图像,代码实现与上文所述存在一定差异。

    import torch
    import torch.nn as nn
    class AlexNet(nn.Module):
        def __init__(self,num_classes, grayscale=False):
    
            super(AlexNet, self).__init__()
            self.grayscale = grayscale
            self.num_classes = num_classes
            if self.grayscale:  # 可以适用单通道和三通道的图像
                in_channels = 1
            else:
                in_channels = 3
    
            self.features = nn.Sequential(
                nn.Conv2d(in_channels, 96, kernel_size=11,padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=2),
                nn.Conv2d(96, 256, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=2),
                nn.Conv2d(256, 384, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.Conv2d(384, 384, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.Conv2d(384, 256, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=2),
            )
            self.classifier = nn.Sequential(
                nn.Dropout(),
                nn.Linear(256 * 3 * 3, 4096),
                nn.ReLU(inplace=True),
                nn.Dropout(),
                nn.Linear(4096, 4096),
                nn.ReLU(inplace=True),
                nn.Linear(4096, 10),
            )
    
        def forward(self, x):
            x = self.features(x)
            x = x.view(x.size(0), 256 * 3 * 3)
            x = self.classifier(x)
            return x
    
    #最后模拟了一个输入,输出一个分类器运算后的值
    num_classes = 10  # 分类数目
    grayscale = True  # 是否为灰度图
    data = torch.rand((1, 1, 32, 32))
    print("input data:\n", data, "\n")
    model = AlexNet(num_classes,grayscale)
    x=model(data)
    print(x)

    展开全文
  • 基于深度卷积神经网络的图像分类算法
  • 深度卷积神经网络基本介绍

    万次阅读 多人点赞 2018-05-29 18:22:48
    关于深度卷积神经网络的前世今生,就不在此处进行过多的介绍。在此,主要对网络的各个组成部分进行简要介绍:图1 基本的深度卷积网络结构 通过图1可知深度卷积神经网络主要是由输入层、卷积层、激活函数、池化层、...

        关于深度卷积神经网络的前世今生,就不在此处进行过多的介绍。在此,主要对网络的各个组成部分进行简要介绍:



    图1 基本的深度卷积网络结构

           通过图1可知深度卷积神经网络主要是由输入层、卷积层、激活函数、池化层、全连接层和输出层组成。以下将以人脸识别为例对网络的各个组成部分进行简单的介绍:

            输入层:深度卷积网络可直接将图片作为网络的输入,通过训练提取特征,但是为了获得更好的效果,通常需要将图片进行预处理,在人脸识别中,就需要进行人脸检测等处理(MTCNN是一种较好的人脸检测方法)。此外,在样本不足的情况下会需要进行样本增强处理,包括旋转、平移,剪切、增加噪声、颜色变换等。

            卷积层:通过卷积运算实质是对输入进行另一种表示,若将卷积层视为黑盒子,那么我们可以将输出看作是输入的另外一种表示,而整个网络的训练也就是训练出这种表示所需的中间参数。图2为一般神经网络的示意图:


    图2 简单神经网络

            图2中w和b即为网络训练所需得到的参数,在卷积层中需要添加激活函数对运算进行非线性化。深度卷积网络将小的神经网络串联起来构成深度神经网络,主要有两种特殊的处理方式:

    1. 采用局部感受野:神经元仅与其相邻的上一层神经元相连接,通过对学习到的局部特征进行组合形成最后的全局特征。
    2. 采用权值共享:同一个卷积核在对不同的局部感受野进行操作时,采用相同的权值参数,能够减少网络运行过程中所需的参数计算量。通过每一层的多个卷积核获得图片的不同特征,不需要特意考虑特征在图片中的具体位置,该处理方式使得其在分析和处理图片任务上具有显著优势


    图3 卷积操作示意图


            图3为某个三维图进行卷积处理,同一卷积核对不同输入层进行卷积操作,得到一组输出,多个卷积核得到多少个输出。不同的图层和不同的输入图处理方法相似,中间的卷积运算时一种对参数进行处理的过程,而最后决定分类个数的是最后一层全连接层的个数。如100张图片,大小为32*32,图片为3维,即输入为100*32*32*3,通过大小为3*3的256个卷积核进行边缘补充后计算,输出为100*32*32*256,即在该层的卷积运算仅需对256个卷积核进行共享就可实现卷积操作,大大减少了所需参数。

            卷积运算输入和输出窗口的大小变化为:,其中W为输入的长/宽(输入长宽不一定相等),F为卷积核的大小,P为边缘补充个数,S为步长(卷积间隔个数),如图3中,输入为5*5,卷积核的大小为3*3,边缘补充为1,步长为2,其计算即为N=(5-3+1*2)/2+1,故而输出为3*3。

            vggnet通过实验证明三个3*3的卷积核效果比一个7*7的卷积核效果好,2个3*3的卷积核比一个5*5的网络效果好。此外,resnet提出的残差网络结构能有效的避免网络中参数泛华的问题。

            池化层:是卷积神经网络中的一种对数据进行的特殊处理操作,通过池化处理缩小图片特征尺寸,能有效的去除由上一层的结果作为输入而带来的计算量较大的问题,图4为常使用的池化方法。


    图4 平均池化和最大池化

          2*2的池化可以使特征图大小减半,后常采用大小为3*3,步长为2,pad=0的卷积核替换池化层,可实现类似的效果。

          激活函数:网络中卷积操作和池化操作都是线性操作,而生活中的大量样本,在进行分类时并不是线性关系,因而需要在网络中引入非线性元素使得网络能解决非线性问题。常见的激活函数如下:


    图5 Relu函数及其改进函数

            全连接层:该层是网络中消耗参数最多的层,若全连接层的输入是4*4*100,全连接层的输出是512,则该层需要4*4*100* 512个参数;而一般的卷积层,若卷积核为4*4,输出为512,则仅需4*4*512个参数。常见的网络会含有两个全连接层,第二个全连接层的输出与分类个数的输出对应,而近期有文献表明,第一个卷积层是可以通过全局平均池化层等替换。

            以上是通过个人学习进行的简要总结,若有不对的地方大家可以指出,期待与大家共同学习进步。


    展开全文
  • AlexNet深度卷积神经网络

    AlexNet深度卷积神经网络

    ImageNet Classification with Deep Convolutional Neural Networks

    Taylor Guo, 2017年10月10日 星期二

    3 架构

    3.1 ReLU

    3.2 并行 GPU 训练

    3.3 Local Response Normalization

    3.4 Overlapping Pooling

    3.5 总体架构

    5卷积层 + 3 全连接层
    全连接层的输出,送入1000路softmax,最后归类到1000个类标签中

    这里写图片描述

    参考资料

    从AlexNet理解卷积神经网络的一般结构

    展开全文
  • 深度学习-深度卷积神经网络发展

    万次阅读 2018-07-09 11:12:23
    AlexNet网络现代意义上的深度卷积神经网络起源于AlexNet网络,它是深度卷积神经网络的鼻祖。这个网络相比之前的卷积网络最显著的特点是层次加深,参数规模变大。网络结构如下图所示:这个网络有5个卷积层,它们中的...

    AlexNet网络


    现代意义上的深度卷积神经网络起源于AlexNet网络,它是深度卷积神经网络的鼻祖。这个网络相比之前的卷积网络最显著的特点是层次加深,参数规模变大。网络结构如下图所示:





    这个网络有5个卷积层,它们中的一部分后面接着max-pooling层进行下采样;最后跟3个全连接层。最后一层是softmax输出层,共有1000个节点,对应ImageNet图集中 1000个图像分类。网络中部分卷基层分成2个group进行独立计算,有利于GPU并行化以及降低计算量。


    这个网络有两个主要的创新点:

    1. 新的激活函数ReLU

    2. 标准化(Local Response Normalization

    3. dropout机制。dropout的做法是在训练时随机的选择一部分神经元进行休眠,另外一些神经元参与网络的优化,起到了正则化的作用以减轻过拟合。

    4. 数据增强(data augmentation


    参考:https://blog.csdn.net/guoyunfei20/article/details/78122504

    ZFNet网络

    通过反卷积(转置卷积)进行卷积网络层可视化的方法,以此分析卷积网络的效果,并指导网络的改进,在AlexNet网络的基础上得到了效果更好的ZFNet网络。

    论文是在AlexNet基础上进行了一些细节的改动,网络结构上并没有太大的突破。该论文最大的贡献在于通过使用可视化技术揭示了神经网络各层到底在干什么,起到了什么作用。如果不知道神经网络为什么取得了如此好的效果,那么只能靠不停的实验来寻找更好的模型。使用一个多层的反卷积网络来可视化训练过程中特征的演化及发现潜在的问题;同时根据遮挡图像局部对分类结果的影响来探讨对分类任务而言到底那部分输入信息更重要。下图为典型反卷积网络示意图:



    ZFNet网络结构如下图所示:



    ZFNet在保留AlexNet的基本结构的同时利用反卷积网络可视化的技术对特定卷积层的卷积核尺寸进行了调整,第一层的卷积核从11*11减小到7*7,将stride从4减小到2,Top5的错误率比AlexNet比降低了1.7%。

    参考:https://blog.csdn.net/qq_31531635/article/details/71104334

    GoogLeNet网络


    文献提出了一种称为GoogLeNet网络的结构(Inception-V1)。在AlexNet出现之后,针对图像类任务出现了大量改进的网络结构,总体来说改进的思路主要是增大网络的规模,包括深度和宽度。但是直接增加网络的规模将面临两个问题,首先,网络参数增加之后更容易出现过拟合,在训练样本有限的情况下这一问题更为突出。另一个问题是计算量的增加。GoogLeNet致力于解决上面两个问题。


    GoogLeNet由Google在2014年提出,其主要创新是Inception机制,即对图像进行多尺度处理。这种机制带来的一个好处是大幅度减少了模型的参数数量,其做法是将多个不同尺度的卷积核,池化层进行整合,形成一个Inception模块。典型的Inception模块结构如下图所示:



    上图的模块由3组卷积核以及一个池化单元组成,它们共同接受来自前一层的输入图像,有三种尺寸的卷积核,以及一个max pooling操作,它们并行的对输入图像进行处理,然后将输出结果按照通道拼接起来。因为卷积操作接受的输入图像大小相等,而且卷积进行了padding操作,因此输出图像的大小也相同,可以直接按照通道进行拼接。


    从理论上看,Inception模块的目标是用尺寸更小的矩阵来替代大尺寸的稀疏矩阵。即用一系列小的卷积核来替代大的卷积核,而保证二者有近似的性能。


    上图的卷积操作中,如果输入图像的通道数太多,则运算量太大,而且卷积核的参数太多,因此有必要进行数据降维。所有的卷积和池化操作都使用了1x1卷积进行降维,减少参数量,即降低图像的通道数。因为1x1卷积不会改变图像的高度和宽度,只会改变通道数。


    GoogleNet网络结构如下图所示:



    GoogleNet在ILSVRC 2014的比赛中取得分类任务的第一名,top-5错误率6.67%。相较于之前的AlexNet-like网络,GoogleNet的网络深度达到了22层,参数量减少到AlexNet的1/12,可以说是非常优秀且非常实用的模型。


    为了降低网络参数作者做了2点尝试,一是去除了最后的全连接层,用全局平均池化替代。全连接层几乎占据了AlexNet中90%的参数量,而且会引起过拟合,去除全连接层后模型训练更快并且减轻了过拟合。用全局平均池化层取代全连接层的做法借鉴了Network In Network(以下简称NIN)论文。二是GoogleNet中精心设计的Inception模块提高了参数的利用效率,这一部分也借鉴了NIN的思想,形象的解释就是Inception模块本身如同大网络中的一个小网络,其结构可以反复堆叠在一起形成大网络。不过GoogleNet比NIN更进一步的是增加了分支网络。

    参考:https://www.cnblogs.com/Allen-rg/p/5833919.html

    VGG网络     

    VGG网络由著名的牛津大学视觉组(Visual Geometry Group)2014年提出,并取得了ILSVRC 2014比赛分类任务的第2名(GoogleNet第一名)和定位任务的第1名。同时VGGNet的拓展性很强,迁移到其他图片数据上的泛化性非常好。VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和池化尺寸(2x2)。到目前为止,VGGNet依然经常被用来提取图像特征,被广泛应用于视觉领域的各类任务。


    VGG网络的主要创新是采用了小尺寸的卷积核。所有卷积层都使用3x3卷积核,并且卷积的步长为1。为了保证卷积后的图像大小不变,对图像进行了填充,四周各填充1个像素。所有池化层都采用2x2的核,步长为2。全连接层有3层,分别包括4096,4096,1000个节点。除了最后一个全连接层之外,所有层都采用了ReLU激活函数。下图为VGG16结构图:



    VGG与Alexnet相比,做了以下改进:

    1.去掉了LRN层(局部响应归一化层),作者实验中发现深度卷积网络中LRN的作用并不明显

    2.采用更小的连续3x3卷积核来模拟更大尺寸的卷积核,例如2层连续的3x3卷积层可以达到一层5x5卷积层的感受野,但是所需的参数量会更少,两个3x3卷积核有18个参数(不考虑偏置项),而一个5x5卷积核有25个参数。后续的残差网络等都延续了这一特点


    残差网络


    残差网络(Residual Network)用跨层连接(Shortcut Connections)拟合残差项(Residual Representations)的手段来解决深层网络难以训练的问题,将网络的层数推广到了前所未有的规模,作者在ImageNet数据集上使用了一个152层的残差网络,深度是VGG网络的8倍但复杂度却更低,在ImageNet测试集上达到3.57%的top-5错误率,这个结果赢得了ILSVRC2015分类任务的第一名,另外作者还在CIFAR-10数据集上对100层和1000层的残差网络进行了分析。VGG19网络和ResNet34-plain及ResNet34-redisual网络对比如下:




    之前的经验已经证明,增加网络的层数会提高网络的性能,但增加到一定程度之后,随着层次的增加,神经网络的训练误差和测试误差会增大,这和过拟合还不一样,过拟合只是在测试集上的误差大,这个问题称为退化。


    为了解决这个问题,作者设计了一种称为深度残差网络的结构,这种网络通过跳层连接和拟合残差来解决层次过多带来的问题,这种做法借鉴了高速公路网络(Highway Networks)的设计思想,与LSTM有异曲同工之妙。这一结构的原理如下图所示:



    后面有文献对残差网络的机制进行了分析。得出了以下结论:残差网络并不是一个单一的超深网络,而是多个网络指数级的隐式集成,由此引入了多样性的概念,它用来描述隐式集成的网络的数量;在预测时,残差网络的行为类似于集成学习;对训练时的梯度流向进行了分析,发现隐式集成大多由一些相对浅层的网络组成,因此,残差网络并不能解决梯度消失问题。


    为了进一步证明残差网络的这种集成特性,并确定删除掉一部分跨层结构对网络精度的影响,作者进行了删除层的实验,在这里有两组实验,第一组是删除单个层,第二组是同时删除多个层。为了进行比较,作者使用了残差网络和VGG网络。实验结果证明,除了个别的层之外,删掉单个层对残差网络的精度影响非常小。相比之下,删掉VGG网络的单个层会导致精度的急剧下降。这个结果验证了残差网络是多个网络的集成这一结论。


    第三组实验是对网络的结构进行变动,集调整层的顺序。在实验中,作者打乱某些层的顺序,这样会影响一部分路径。具体做法是,随机的交换多对层的位置,这些层接受的输入和产生的输出数据尺寸相同。同样的,随着调整的层的数量增加,错误率也平滑的上升,这和第二组实验的结果一致。


    但是笔者认为作者的这种解释有些牵强。普通意义上的集成学习算法,其各个弱学习器之间是相互独立的,而这里的各个网络之间共享了一些层,极端情况下,除了一层不同之外,另外的层都相同。另外,这些网络是同时训练出来的,而且使用了相同的样本。

    GoogleNet-Inception-Like网络改进系列

    Inception-V2(GoogleNet-BN)

    作者基于GoogleNet的基本结构进行了改进,Top1错误率相较减少了2个百分点,主要做了以下的改进:

    1.加入了BN层,减少了Internal Covariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯

    2.学习VGG用2个3x3的conv替代Inception模块中的5x5,既降低了参数数量,也加快了计算速度。


    Inception-V3

    Inception-V3一个最重要的改进是卷积核分解(Factorization),将7x7的卷积核分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),我们称为非对称分解,如下图所示。这样做既可以加速计算减少参数规模,又可以将1个卷积拆成2个卷积,使得网络深度进一步增加,增加了网络的非线性。

    除此以外作者对训练优化的算法也做了改进:
    1.通过改进AdaGrad提出了RMSProp一种新的参数优化的方式。RMSprop是Geoff Hinton提出的一种自适应学习率方法。AdaGrad会累加之前所有的梯度平方,而RMSprop仅仅是计算对应的平均值,因此可缓解AdaGrad算法学习率下降较快的问题。 实验证明RMSProp在非凸条件下优化结果更好。
    2.采用了Label Smoothing的策略,该方法是一种通过在输出标签中添加噪声,实现对模型进行约束,降低模型过拟合程度的一种正则化方法。

    Inception-V4
    Inception-v4相较于v3版本增加了Inception模块的数量,整个网络变得更深了。

    Xception
    Xception是Google针对Inception v3的另一种改进,主要是采用Depthwise Separable Convolution来替换原来Inception v3中的卷积操作, 在基本不增加网络复杂度的前提下提高了模型的效果。什么是Depthwise Separable Convolution? 通常,在一组特征图上进行卷积需要三维的卷积核,也即卷积核需要同时学习空间上的相关性和通道间的相关性。Xception通过在卷基层加入group的策略将学习空间相关性和学习通道间相关性的任务分离,大幅降低了模型的理论计算量且损失较少的准确度。
    Xception网络结构如下图所示:
    Inception-ResNet v1/v2
    作者基于Inception-v3和Inception-v4将残差网络的思想进行融合,分别得到了Inception-ResNet-v1和Inception-ResNet-v2两个模型。不仅提高了分类精度而且训练的稳定性也得到增强。
    Inception-ResNet-v2 网络结构如下图所示:
    NASNet
    此论文由Google brain出品,是在之前的一篇论文NAS-Neural Architecture Search With Reinforcement Learning的基础做了突破性的改进,使得能让机器在小数据集(CIFAR-10数据集)上自动设计出CNN网络,并利用迁移学习技术使得设计的网络能够被很好的迁移到ImageNet数据集,验证集上达到了82.7%的预测精度,同时也可以迁移到其他的计算机视觉任务上(如目标检测)。该网络的特点为:
    1.延续NAS论文的核心机制,通过强化学习自动产生网络结构。
    2.采用ResNet和Inception等成熟的网络拓扑结构减少了网络结构优化的搜索空间,大型网络直接由大量的同构模块堆叠而成,提高学习效率。
    3.在CIFAR-10上进行了架构搜索,并将最好的架构迁移到ImageNet图像分类和COCO物体检测上。
    下图为采用AutoML设计的Block结构:


    WRN(wide residual network)


    作者认为,随着模型深度的加深,梯度反向传播时,并不能保证能够流经每一个残差模块(residual block)的权重,以至于它很难学到东西,因此在整个训练过程中,只有很少的几个残差模块能够学到有用的表达,而绝大多数的残差模块起到的作用并不大。因此作者希望使用一种较浅的,但是宽度更宽的模型,来更加有效的提升模型的性能。



    ResNet原作者针对CIFAR-10所使用的的网络,包含三种Residual Block,卷积通道数量分别是16、32、64,网络的深度为6*N+2。而在这里,WRN作者给16、32、64之后都加了一个系数k,也就是说,作者是通过增加Residual Block卷积通道的数量来使模型变得更宽,从而N可以保持很小的值,就可以是网络达到很好的效果。 


    CIFAR-10和CIFAR -100性能对比:


       

    上述实验表明单独增加模型的宽度是对模型的性能是有提升的。不过也不能完全的就认为宽度比深度更好,两者只有相互搭配,才能取得更好的效果。


    ResNeXt


    作者提出 ResNeXt 的主要原因在于:传统的提高模型准确率的做法,都是加深或加宽网络,但是随着超参数数量的增加(比如通道数,卷积核大小等),网络设计的难度和计算开销也会增加。因此本文提出的 ResNeXt 结构可以在不增加参数复杂度的前提下提高准确率。


    这篇论文提出了ResNeXt网络,同时采用了VGG堆叠的思想和Inception 的 split-transform-merge 思想,但是可扩展性比较强,可以认为是在增加准确率的同时基本不改变或降低模型的复杂度。这里提到一个名词cardinality,原文的解释是the size of the set of transformations,如下图(a)(b) cardinality=32所示:



    通过实验给出了下面的结论:

    1.证明ResNeXt比ResNet更好,而且Cardinality越大效果越好

    2.增大Cardinality比增大模型的width或者depth效果更好


    当时取得了state-of-art的结果,虽然后来被其它的网络结构超越,但就在最近Facebook 在图像识别技术上又有了新突破,基于ResNeXt 101-32x48d在ImageNet测试中准确度达到创纪录的 85.4%!(使用了35亿张图像,1.7万主题标签进行模型训练,规模史无前例!!!笔者这里不下什么结论,各位看官自行体会...)


    DenseNet


    DenseNet 是一种具有密集连接的卷积神经网络。在该网络中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有层输出的并集,而该层所学习的特征图也会被直接传给其后面所有层作为输入。DenseNet的一个优点是网络更窄,参数更少,很大一部分原因得益于dense block的设计,后面有提到在dense block中每个卷积层的输出feature map的数量都很小(小于100),而不是像其他网络一样动不动就几百上千的宽度。同时这种连接方式使得特征和梯度的传递更加有效,网络也就更加容易训练。下面是DenseNet 的一个示意图:



    DenseNet可以有效地减少网络参数规模,达到减轻过拟合的效果,对小数据集合的学习很有效果。但是由于中间输出的feature map数量是多层Concat的结果,导致网络在训练和测试的时候显存占用并没有明显的优势,计算量也没有明显的减少!


    MobileNet


    MobileNets是Google针对手机等嵌入式设备提出的一种轻量级的深层神经网络,网络设计的核心Separable Convolution可以在牺牲较小性能的前提下有效的减少参数量和计算量。Separable Convolution将传统的卷积运算用两步卷积运算代替:Depthwise convolution与Pointwise convolution,如下图所示:


    从图中可以明确的看出,由于输入图片为三通道,Depthwise conv的filter数量只能为3,而传统的卷积方法会有3x3总共9个filter。


    后续的MobileNet-v2主要增加了残差结构,同时在Depthwise convolution之前添加一层Pointwise convolution,优化了带宽的使用,进一步提高了在嵌入式设备上的性能。可分离卷积如下图所示:


    参考:https://mp.weixin.qq.com/s/28GtBOuAZkHs7JLRVLlSyg


    展开全文
  • VGGNet由牛津大学计算机视觉组合和Google DeepMind公司研究员一起研发的深度卷积神经网络。它探索了卷积神经网络的深度和其性能之间的关系,通过反复的堆叠33的小型卷积核和22的最大池化层,成功的构建了16~19层深的...
  • 基于深度卷积神经网络的图像去噪方法

    万次阅读 多人点赞 2018-04-26 18:52:43
    基于深度卷积神经网络的图像去噪方法 摘要:图像去噪在图像处理中仍然是一个具有挑战性的问题。作者提出了一种基于深度卷积神经网络(DCNN)的图像去噪方法。作者设计的不同于其他基于学习的方法:一个DCNN来实现...
  • 深度卷积神经网络结构演变

    千次阅读 2018-12-07 16:54:33
    今天看到一篇来自公众号讲解深度卷积神经网络结构的文章,获益匪浅,结合之前的笔记,自己做一个总结便于查询,笔者主要是提出各个网络的创新点等,具体的概念博文中不作解释,有更多更好详细的讲解。即本文旨在了解...
  • 深度卷积神经网络TensorFlow GPU实现

    千次阅读 2017-06-11 23:13:52
    深度卷积神经网络TensorFlow GPU实现
  • 基于深度卷积神经网络的图像分类

    千次阅读 2019-06-14 15:20:03
    基于深度卷积神经网络的图像分类摘要1 引言3 架构3.1 ReLU非线性3.2 多GPU训练3.4 重叠池化3.5 整体架构4 减少过拟合4.1 数据增强4.2 失活(Dropout)6 结果7 探讨 《ImageNet Classification with Deep Convolutional...
  • 深度卷积神经网络之AlexNet

    千次阅读 2019-02-13 22:40:00
    摘要:我们训练了一个大型的深度卷积神经网络,将ImageNet LSVRC-2010比赛中的120万张高分辨率图像分成1000个不同的类别。在测试数据上,我们实现了第1位和第5位错误率分别为37.5%和17.0%,大大优于之前的先进水平。...
  • 神经网络学习小记录28——深度卷积神经网络各种改进结构块汇总学习前言1、残差网络2、不同大小卷积核并行卷积3、利用(1,x),(x,1)卷积代替(x,x)卷积4、采用瓶颈(Bottleneck)结构5、深度可分离卷积6、改进版深度可分离...
  • 深度卷积神经网络最新进展综述

    千次阅读 2019-11-07 09:49:23
    深度卷积神经网络最新进展综述摘要1、引言合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一...
  • 深度卷积神经网络中的patch

    千次阅读 2020-12-09 00:07:26
    在阅读基于深度卷积神经网络的图像识别、分类或检测的文献时经常看到“patch”,不是很能理解,后来就总结了一下。 通过阅读,“patch”似乎是CNN输入图像的其中一小块,但它究竟是什么呢?当使用CNN解决问题时,...
  • 深度卷积神经网络 2.1 为什么要进行实例化 实际上,在计算机视觉任务中表现良好的神经网络框架,往往也适用于其他任务。 2.2 经典网络 LeNet-5 AlexNet VGG LeNet-5 主要针对灰度图像 随着神经网络...
  • 更好的理解分析深度卷积神经网络

    千次阅读 2017-02-07 09:19:25
    PKU Visualization Blog 北京大学可视化与可视分析博客 ...更好的理解分析深度卷积神经网络(Towards Better Analysis of Deep Convolutional Neural Networks ) ...深度卷积神经网络(CNNs)在特征
  • 基于深度卷积神经网络的玉米病害识别 1、研究思路 算法模型是先将图像预处理,应用Tripletloss双卷积神经网络结构学习玉米图像特征,再使用SIFT算法提取图像纹理细节,最后通Softmax对图像进行标签分类。训练集采用...
  • 基于深度卷积神经网络的农作物病害识别 1、研究思路 运用深度学习的方法,基 于ResNet-50以及 InceptionV3、MobileNet等神经网络,并在这些基础结构上改进部分模型。该研 究主要从两个方面对卷积神经网络进行优化,...
  • 深度卷积神经网络的14种设计模式

    千次阅读 2018-08-02 14:28:02
    深度卷积神经网络的14种设计模式 2016年11月07日 15:23:50 阅读数:1509 机器之心编译 参与:吴攀、武竞、李泽南、蒋思源、李亚洲  这篇论文的作者是来自美国海军研究实验室的 Leslie N. Smith 和来自美国...
  • 论文地址基于深度卷积神经网络的遥感影像车辆检测本文基于超像素分割算法实现对车辆检测窗口的定位。车辆检测窗口的识别是基于深度卷积神经网络实现的。通过数据扩充将带标记的样本应用于深度卷积神经网络进行特征和...
  • 基于深度卷积神经网络的图像去噪方法 摘要:图像去噪在图像处理中仍然是一个具有挑战性的问题。作者提出了一种基于深度卷积神经网络(DCNN)的图像去噪方法。作者设计的不同于其他基于学习的方法:一个DCNN...
  • a.数据准备 最近读到一篇论文,关于水稻...搭建了一个深度卷积神经网络如下图所示: 假设输入图像的大小为W,卷积核的大小为F,卷积核的移动步幅为S=2,填充P被用于填充在输入图像边界,通常P=0, 所以卷积后的图像...
  • 深度学习系列Part2:迁移学习和微调深度卷积神经网络 2016-08-30 16:28:36 深度学习 卷积神经网络  0 0 0 本文是微软数据科学家 Anusua Trivedi 所写的《Deep Learning》系列文章的第二部分...
  • 好像还挺好玩的GAN2——DCGAN利用深度卷积神经网络实现生成学习前言什么是DCGAN神经网络构建1、Generator2、Discriminator训练思路实现全部代码 学习前言 我又死了我又死了我又死了! 什么是DCGAN DCGAN的全称是...
  • 深度卷积神经网络CNN中shortcut的使用

    千次阅读 2019-03-31 13:01:06
    导语 shortcut(或shortpath,中文“直连”或“捷径”)是CNN模型发展中出现的一种非常有效的... 前言 自2012年Alex Krizhevsky利用深度卷积神经网络(CNN)(AlexNet [1])取得ImageNet比赛冠军起,CNN在计算...
  • 本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台(Tencent Deep Learning Platform)中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框架。  将深度卷积神经网络(Convolutional Neural ...
  • 深度卷积神经网络在图像分类、目标检测、语义分割等许多视觉理解任务上都取得了重大突破。一个关键的原因是大规模数据集的可用性,比如 ImageNet,这些数据集支持对深度模型的培训。然而,数据标记是昂贵的,特别是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,333
精华内容 6,533
关键字:

深度卷积神经网络