全卷积神经网络_卷积神经网络和全卷积神经网络 - CSDN
  • 卷积神经网络(CNN) 卷积层 卷积层尺寸的计算原理 标准卷积计算举例 1 x 1 卷积计算举例 全连接层计算举例 附:TensorFlow 中卷积层的简单实现 激励层 池化层 池化层的作用 输出层 VGG的特点: 全卷积...

    目录

    卷积神经网络(CNN)

    卷积层

    卷积层尺寸的计算原理

    标准卷积计算举例

    1 x 1 卷积计算举例

    全连接层计算举例

    附:TensorFlow 中卷积层的简单实现

    激励层

    池化层

    池化层的作用

    输出层

    VGG的特点:

    全卷积网络(FCN)

    核心思想

    1.卷积化(convolutionalization)

     2.上采样(Upsampling)

    3.跳跃结构(Skip Architecture)

    网络结构

    训练

    第1阶段 ​

    第2阶段 ​

    第3阶段 ​

    第4阶段 ​


    卷积神经网络(CNN)

    卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。

    CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

    卷积:一组固定的权重和不同窗口内数据做内积

     

    卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。

     

    CNN网络一共有5个层级结构:

    • 输入层
    • 卷积层
    • 激活层
    • 池化层
    • 全连接FC层

    卷积层

    卷积层中每一个节点的输入只是上一层神经网络的一小块,一般为3x3或者5x5。

    卷积层试图将神经网络中的每一小块进行更加深入的分析从而得到抽象程度更高的特征。

    卷积层尺寸的计算原理

                             

    • 输入矩阵格式:四个维度,依次为:样本数、图像高度、图像宽度、图像通道数
    • 输出矩阵格式:与输出矩阵的维度顺序和含义相同,但是后三个维度(图像高度、图像宽度、图像通道数)的尺寸发生变化。
    • 权重矩阵(卷积核)格式:同样是四个维度,但维度的含义与上面两者都不同,为:卷积核高度、卷积核宽度、输入通道数、输出通道数(卷积核个数)
    • 输入矩阵、权重矩阵、输出矩阵这三者之间的相互决定关系
      • 卷积核的输入通道数(in depth)由输入矩阵的通道数所决定。(红色标注)
      • 输出矩阵的通道数(out depth)由卷积核的输出通道数所决定。(绿色标注)
      • 输出矩阵的高度和宽度(height, width)这两个维度的尺寸由输入矩阵、卷积核、扫描方式所共同决定。计算公式如下。(蓝色标注)

    \begin{cases} height_{out} &= (height_{in} - height_{kernel} + 2 * padding) ~ / ~ stride + 1\\[2ex] width_{out} &= (width_{in} - width_{kernel} + 2 * padding) ~ / ~ stride + 1 \end{cases}

     

    * 注:以下计算演示均省略掉了 Bias ,严格来说其实每个卷积核都还有一个 Bias 参数。

    padding是增加各个边的pixels的数量,目的是保持feature map 不要太小,但也没必要超过原图的大小,所以不可以任意数量;
    padding的上限是维持feature map 大小与原图大小一致,具体增加pixel的数量多少,由filter(滤波器)的尺寸【也就是卷积核的大小】和stride大小共同决定;

    输出层每一个深度的计算过程。

    比如,输入层是28*28*3的图像,filter为3*3*3的滤波器。那么3个通道的filter会相应的每一个通道相互独立计算,然后再将3个通道的值相加在一起。下图是每一个filter的计提的计算过程。现在就是CNN卷积的处理过程。   

    标准卷积计算举例

    以 AlexNet 模型的第一个卷积层为例,
    - 输入图片的尺寸统一为 227 x 227 x 3 (高度 x 宽度 x 颜色通道数),
    - 本层一共具有96个卷积核,
    - 每个卷积核的尺寸都是 11 x 11 x 3。
    - 已知 stride = 4, padding = 0,
    - 假设 batch_size = 256,
    - 则输出矩阵的高度/宽度为 (227 - 11) / 4 + 1 = 55

    \begin{matrix} & \mathbf{Batch} & \mathbf{Height} && \mathbf{Width} && \mathbf{In~Depth} && \mathbf{Out~Depth}\\[2ex] \mathbf{Input} & \quad\quad 256 \quad\quad \times & \color{blue}{227} & \times & \color{blue}{227} & \times & \color{red}{3} \\[2ex] \mathbf{Kernel} &\quad\quad\quad\quad\quad & \color{blue}{11} & \times & \color{blue}{11} & \times & \color{red}{3} & \times & \color{green}{96} \\[2ex] \mathbf{Output} & \quad\quad 256 \quad\quad \times & \color{blue}{55} & \times & \color{blue}{55} &&& \times & \color{green}{96} \end{matrix}

     

    1 x 1 卷积计算举例

    后期 GoogLeNet、ResNet 等经典模型中普遍使用一个像素大小的卷积核作为降低参数复杂度的手段。
    从下面的运算可以看到,其实 1 x 1 卷积没有什么神秘的,其作用就是将输入矩阵的通道数量缩减后输出(512 降为 32),并保持它在宽度和高度维度上的尺寸(227 x 227)。

    \begin{matrix} & \mathbf{Batch} & \mathbf{Height} && \mathbf{Width} && \mathbf{In~Depth} && \mathbf{Out~Depth}\\[2ex] \mathbf{Input} & \quad\quad 256 \quad\quad \times & \color{blue}{227} & \times & \color{blue}{227} & \times & \color{red}{512} \\[2ex] \mathbf{Kernel} &\quad\quad\quad\quad\quad & \color{blue}{1} & \times & \color{blue}{1} & \times & \color{red}{512} & \times & \color{green}{32} \\[2ex] \mathbf{Output} & \quad\quad 256 \quad\quad \times & \color{blue}{227} & \times & \color{blue}{227} &&& \times & \color{green}{32} \end{matrix}

     

    全连接层计算举例

    实际上,全连接层也可以被视为是一种极端情况的卷积层,其卷积核尺寸就是输入矩阵尺寸,因此输出矩阵的高度和宽度尺寸都是1。

    \begin{matrix} & \mathbf{Batch} & \mathbf{Height} && \mathbf{Width} && \mathbf{In~Depth} && \mathbf{Out~Depth}\\[2ex] \mathbf{Input} & \quad \quad 256 \quad \quad \times & \color{blue}{32} & \times & \color{blue}{32} & \times & \color{red}{512} \\[2ex] \mathbf{Kernel} &\quad\quad\quad\quad\quad & \color{blue}{32} & \times & \color{blue}{32} & \times & \color{red}{512} & \times & \color{green}{4096} \\[2ex] \mathbf{Output} & \quad \quad 256 \quad \quad \times & \color{blue}{1} & \times & \color{blue}{1} &&& \times & \color{green}{4096} \end{matrix}

     

    总结下来,其实只需要认识到,虽然输入的每一张图像本身具有三个维度,但是对于卷积核来讲依然只是一个一维向量。卷积核做的,其实就是与感受野范围内的像素点进行点积(而不是矩阵乘法)。

     

    附:TensorFlow 中卷积层的简单实现

    def conv_layer(x, out_channel, k_size, stride, padding):
        in_channel = x.shape[3].value
        w = tf.Variable(tf.truncated_normal([k_size, k_size, in_channel, out_channel], mean=0, stddev=stddev))
        b = tf.Variable(tf.zeros(out_channel))
        y = tf.nn.conv2d(x, filter=w, strides=[1, stride, stride, 1], padding=padding)
        y = tf.nn.bias_add(y, b)
        y = tf.nn.relu(y)
        return x
    
    • 输入 x:[batch, height, width, in_channel]
    • 权重 w:[height, width, in_channel, out_channel]
    • 输出 y:[batch, height, width, out_channel]

           局部感知:人的大脑识别图片的过程中,并不是一下子整张图同时识别,而是对于图片中的每一个特征首先局部感知,然后更高层次对局部进行综合操作,从而得到全局信息。 

           卷积层使用“卷积核”进行局部感知。举个例子来讲,一个32×32×3的RGB图经过一层5×5×3的卷积后变成了一个28×28×1的特征图,那么输入层共有32×32×3=3072个神经元,第一层隐层会有28×28=784个神经元,这784个神经元对原输入层的神经元只是局部连接,如下图所示: 

    123

           通过局部感知特性,大大减少了模型的计算参数。但是仅仅这样还是依然会有很多参数。这就有了权值共享机制: 

           在上面的局部感知中,假设有1m的隐层神经元,每个神经元10*10的连接,这样就会有1m*10*10个参数。实际上,对于每一层来讲,所有神经元对应的权值应该是相等的,也就是说,第一个神经元的参数向量为[w1,w2,…,w100],那么其他同层的神经元也是[w1,w2,…,w100],这就是权值共享。 

           为什么需要权值共享呢?同一层下的神经元的连接参数只与特征提取的有关,而与具体的位置无关,因此可以保证同一层中所有位置的连接是权值共享的。例如:第一层隐层是一般用边缘检测,第二层是对第一层学到的边缘曲线组合得到一些特征,比如:角度、线形等;第三层会学到更加复杂的特征,比如:眼睛、眉毛等。对于同一层来说,他们提取特征的方式是一样的,第三层的神经元都是用来提取“眼睛”的特征,因此,需要计算的参数是一样的。

    激励层

    所谓激励,实际上是对卷积层的输出结果做一次非线性映射。

    激活函数介绍

    池化层

    池化(Pooling):也称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。主要有:

    • Max Pooling:最大池化
    • Average Pooling:平均池化 

    123

    通过池化层,使得原本4*4的特征图压缩成了2*2,从而降低了特征维度。 

    池化层的作用

    1. 不变性,更关注是否存在某些特征而不是特征具体的位置。可以看作加了一个很强的先验,让学到的特征要能容忍一些的变化。
    2. 减小下一层输入大小,减小计算量和参数个数。
    3. 获得定长输出。(文本分类的时候输入是不定长的,可以通过池化获得定长输出)
    4. 防止过拟合或有可能会带来欠拟合。

    输出层

    经过前面若干次卷积+激励+池化后,终于来到了输出层,模型会将学到的一个高质量的特征图片全连接层。

    当来到了全连接层之后,可以理解为一个简单的多分类神经网络(如:BP神经网络),通过softmax函数得到最终的输出。整个模型训练完毕。 

     

    从图像中提取CNN特征,VGG模型是首选算法。

    VGG的特点:

    • 小卷积核。作者将卷积核全部替换为3x3(极少用了1x1);
    • 小池化核。相比AlexNet的3x3的池化核,VGG全部为2x2的池化核;
    • 层数更深特征图更宽。基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量的增加放缓;
    • 全连接转卷积。网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。

    感受野:在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field。我们看这段定义非常简单,用数学的语言就是感受野是CNN中的某一层输出结果的一个元素对应输入层的一个映射。再通俗点的解释是,feature map上的一个点对应输入图上的区域。

    全卷积网络(FCN)

    代码

    全卷积网络(FCN)是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。

    核心思想

    1.不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。 
    2.增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。 

    3.结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。

    1.卷积化(convolutionalization)

         分类所使用的网络通常会在最后连接全连接层,它会将原来二维的矩阵(图片)压缩成一维的,从而丢失了空间信息,最后训练输出一个标量,这就是我们的分类标签。FCN对图像进行像素级的分类,从而解决了语义级别的图像分割问题。FCN可以接受任意尺寸的输入图像,但是至少是二维的。所以,我们丢弃全连接层,换上卷积层,而这就是所谓的卷积化了。

                               

    这幅图显示了卷积化的过程,图中显示的是AlexNet的结构,简单来说卷积化就是将其最后三层全连接层全部替换成卷积层。

     

     2.上采样(Upsampling)

         采用反卷积层对最后一个卷基层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后奇偶在上采样的特征图进行像素的分类。

                                                è¿éåå¾çæè¿°

    输入:每个像素值等于filter的权重 
    输出:步长为stride,截取的宽度为pad。

    3.跳跃结构(Skip Architecture)

             直接将全卷积后的结果上采样后得到的结果通常是很粗糙的。所以这一结构主要是用来优化最终结果的,思路就是将不同池化层的结果进行上采样,然后结合这些结果来优化输出,具体结构如下:

                      

           对原图进行卷积conv1、pool1后图像缩小为1/2;对图像进行第二次卷积conv2、pool2后图像缩小为1/4;对图像进行第三次卷积conv3、pool3后图像缩小为1/8,此时保留pool3的featuremap;对图像进行第四次卷积conv4、pool4后图像缩小为1/16,此时保留pool4的featuremap;对图像进行第五次卷积conv5、pool5后图像缩小为1/32,然后把原来CNN操作过程中的全连接变成卷积操作的conv6、conv7,图像的featuremap的大小依然为原图的1/32,此时图像不再叫featuremap而是叫heatmap(热力图)

             其实直接使用前两种结构就已经可以得到结果了,这个上采样是通过反卷积(deconvolution)实现的,对第五层的输出(32倍放大)反卷积到原图大小。但是得到的结果还上不不够精确,一些细节无法恢复。于是将第四层的输出和第三层的输出也依次反卷积,分别需要16倍和8倍上采样,结果过也更精细一些了。这种做法的好处是兼顾了local和global信息。
     

    网络结构

          输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21。 (在PASCAL数据集上进行的,PASCAL一共20类)

                         è¿éåå¾çæè¿°

      全卷积-提取特征:虚线上半部分为全卷积网络。(蓝:卷积,绿:max pooling)。对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变。

      逐像素预测  :虚线下半部分中,分别从卷积网络的不同阶段,以卷积层(蓝色×3)预测深度为21的分类结果。其中的crop层的作用是指从图像中移除不需要的信息,只保留需要的部分。

    例:第一个预测模块 
    输入16*16*4096,卷积模板尺寸1*1,输出16*16*21。 

    相当于对每个像素施加一个全连接层,从4096维特征,预测21类结果。

                     

           经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。其中图像到 H/32∗W/32 的时候图片是最小的一层时,所产生图叫做heatmap热图,热图就是我们最重要的高维特征图,得到高维特征的heatmap之后就是最重要的一步也是最后的一步对原图像进行upsampling,把图像进行放大、放大、放大,到原图像的大小。最后的输出是21张heatmap经过upsampling变为原图大小的图片,为了对每个像素进行分类预测label成最后已经进行语义分割的图像,这里有一个小trick,就是最后通过逐个像素地求其在21张图像该像素位置的最大数值描述(概率)作为该像素的分类。因此产生了一张已经分类好的图片,如上图右侧有狗狗和猫猫的图。

    训练

    训练过程分为四个阶段,也体现了作者的设计思路,值得研究。

    第1阶段
     è¿éåå¾çæè¿°

    以经典的分类网络为初始化。最后两级是全连接(红色),参数弃去不用。

    第2阶段
     è¿éåå¾çæè¿°

    从特征小图(16*16*4096)预测分割小图(16*16*21),之后直接升采样为大图。 
    反卷积(橙色)的步长为32,这个网络称为FCN-32s。 
    这一阶段使用单GPU训练约需3天。

    第3阶段
     è¿éåå¾çæè¿°

    升采样分为两次完成(橙色×2)。 
    在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)融合进来。使用跳级结构提升精确性。 
    第二次反卷积步长为16,这个网络称为FCN-16s。 
    这一阶段使用单GPU训练约需1天。

    第4阶段
     è¿éåå¾çæè¿°

    升采样分为三次完成(橙色×3)。 
    进一步融合了第3个pooling层的预测结果。 
    第三次反卷积步长为8,记为FCN-8s。 
    这一阶段使用单GPU训练约需1天。

    较浅层的预测结果包含了更多细节信息。比较2,3,4阶段可以看出,跳级结构利用浅层信息辅助逐步升采样,有更精细的结果。 
     

    FCN与CNN的区别在于FCN把CNN最后的全连接层换成卷积层,输出一张已经label好的图。

    扩展阅读

    https://blog.csdn.net/yjl9122/article/details/70198357

    https://blog.csdn.net/qq_36269513/article/details/80420363

    配置caffe运行FCN:http://melonteam.com/posts/quan_juan_ji_shen_jing_wang_luo_fcn_xue_xi_bi_ji/

    https://blog.csdn.net/qq_37274615/article/details/73251503
     

    展开全文
  • 全卷积神经网络FCN

    万次阅读 2018-07-19 14:48:55
    卷积神经网络CNN(YannLecun,1998年)通过构建多层的卷积层自动提取图像上的特征,一般来说,排在前边较浅的卷积层采用较小的感知域,可以学习到图像的一些局部的特征(如纹理特征),排在后边较深的卷积层采用较大...

    卷积神经网络CNN(YannLecun,1998年)通过构建多层的卷积层自动提取图像上的特征,一般来说,排在前边较浅的卷积层采用较小的感知域,可以学习到图像的一些局部的特征(如纹理特征),排在后边较深的卷积层采用较大的感知域,可以学习到更加抽象的特征(如物体大小,位置和方向信息等)。CNN在图像分类和图像检测领域取得了广泛应用。
     
    CNN提取的抽象特征对图像分类、图像中包含哪些类别的物体,以及图像中物体粗略位置的定位很有效,但是由于采用了感知域,对图像特征的提取更多的是以“一小块临域”为单位的,因此很难做到精细(像素级)的分割,不能很准确的划定物体具体的轮廓。
     
    针对CNN在图像精细分割上存在的局限性,UC Berkeley的Jonathan Long等人2015年在其论文 “Fully convolutional networks for semantic segmentation”(用于语义分割的全卷积神经网络)中提出了Fully Convolutional Networks (FCN)用于图像的分割,要解决的核心问题就是图像像素级别的分类。论文链接: https://arxiv.org/abs/1411.4038
     
    FCN与CNN的核心区别就是FCN将CNN末尾的全连接层转化成了卷积层:


    以Alexnet为例,输入是227*227*3的图像,前5层是卷积层,第5层的输出是256个特征图,大小是6*6,即256*6*6,第6、7、8层分别是长度是4096、4096、1000的一维向量。

     

    在FCN中第6、7、8层都是通过卷积得到的,卷积核的大小全部是1*1,第6层的输出是4096*7*7,第7层的输出是4096*7*7,第8层的输出是1000*7*7(7是输入图像大小的1/32),即1000个大小是7*7的特征图(称为heatmap)。

     

    经过多次卷积后,图像的分辨率越来越低,,为了从低分辨率的heatmap恢复到原图大小,以便对原图上每一个像素点进行分类预测,需要对heatmap进行反卷积,也就是上采样。论文中首先进行了一个上池化操作,再进行反卷积,使得图像分辨率提高到原图大小:

     

     对第5层的输出执行32倍的反卷积得到原图,得到的结果不是很精确,论文中同时执行了第4层和第3层输出的反卷积操作(分别需要16倍和8倍的上采样),再把这3个反卷积的结果图像融合,提升了结果的精确度:


    最后像素的分类按照该点在1000张上采样得到的图上的最大的概率来定。
     

    FCN可以接受任意大小的输入图像,但是FCN的分类结果还是不够精细,对细节不太敏感,再者没有考虑到像素与像素之间的关联关系,丢失了部分空间信息。

    展开全文
  • 全卷积网络FCN与卷积神经网络CNN的区别

    万次阅读 多人点赞 2018-06-05 13:59:34
    神经网络大神Jonathan Long发表了《Fully Convolutional Networks for Semantic Segmentation》在图像语义分割挖了一个坑,于是无穷无尽的人往坑里面跳。全卷积网络 Fully Convolutional NetworksCNN 与 FCN...

    背景

    CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题。神经网络大神Jonathan Long发表了《Fully Convolutional Networks for Semantic Segmentation》在图像语义分割挖了一个坑,于是无穷无尽的人往坑里面跳。

    这里写图片描述

    全卷积网络 Fully Convolutional Networks

    CNN 与 FCN

    通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。

    栗子:下图中的猫, 输入AlexNet, 得到一个长为1000的输出向量, 表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高。

    这里写图片描述

    FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。

    最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。下图是Longjon用于语义分割所采用的全卷积网络(FCN)的结构示意图:

    这里写图片描述

    简单的来说,FCN与CNN的区域在把于CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片。

    这里写图片描述

    其实,CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。下图CNN分类网络的示意图:

    这里写图片描述

    这些抽象的特征对分类很有帮助,可以很好地判断出一幅图像中包含什么类别的物体,但是因为丢失了一些物体的细节,不能很好地给出物体的具体轮廓、指出每个像素具体属于哪个物体,因此做到精确的分割就很有难度。

    传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入用于训练和预测。这种方法有几个缺点:一是存储开销很大。例如对每个像素使用的图像块的大小为15x15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类,因此则所需的存储空间根据滑动窗口的次数和大小急剧上升。二是计算效率低下。相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复。三是像素块大小的限制了感知区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。

    而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。

    全连接层 -> 成卷积层

    全连接层和卷积层之间唯一的不同就是卷积层中的神经元只与输入数据中的一个局部区域连接,并且在卷积列中的神经元共享参数。然而在两类层中,神经元都是计算点积,所以它们的函数形式是一样的。因此,将此两者相互转化是可能的:

    • 对于任一个卷积层,都存在一个能实现和它一样的前向传播函数的全连接层。权重矩阵是一个巨大的矩阵,除了某些特定块,其余部分都是零。而在其中大部分块中,元素都是相等的。

    • 相反,任何全连接层都可以被转化为卷积层。比如,一个 K=4096 的全连接层,输入数据体的尺寸是 77512,这个全连接层可以被等效地看做一个 F=7,P=0,S=1,K=4096 的卷积层。换句话说,就是将滤波器的尺寸设置为和输入数据体的尺寸一致了。因为只有一个单独的深度列覆盖并滑过输入数据体,所以输出将变成 114096,这个结果就和使用初始的那个全连接层一样了。

    全连接层转化为卷积层:在两种变换中,将全连接层转化为卷积层在实际运用中更加有用。假设一个卷积神经网络的输入是 224x224x3 的图像,一系列的卷积层和下采样层将图像数据变为尺寸为 7x7x512 的激活数据体。AlexNet使用了两个尺寸为4096的全连接层,最后一个有1000个神经元的全连接层用于计算分类评分。我们可以将这3个全连接层中的任意一个转化为卷积层:

    • 针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7,这样输出数据体就为[1x1x4096]了。
    • 针对第二个全连接层,令其滤波器尺寸为F=1,这样输出数据体为[1x1x4096]。
    • 对最后一个全连接层也做类似的,令其F=1,最终输出为[1x1x1000]

    实际操作中,每次这样的变换都需要把全连接层的权重W重塑成卷积层的滤波器。那么这样的转化有什么作用呢?它在下面的情况下可以更高效:让卷积网络在一张更大的输入图片上滑动,得到多个输出,这样的转化可以让我们在单个向前传播的过程中完成上述的操作。

    举个栗子:如果我们想让224×224尺寸的浮窗,以步长为32在384×384的图片上滑动,把每个经停的位置都带入卷积网络,最后得到6×6个位置的类别得分。上述的把全连接层转换成卷积层的做法会更简便。如果224×224的输入图片经过卷积层和下采样层之后得到了[7x7x512]的数组,那么,384×384的大图片直接经过同样的卷积层和下采样层之后会得到[12x12x512]的数组。然后再经过上面由3个全连接层转化得到的3个卷积层,最终得到[6x6x1000]的输出((12 – 7)/1 + 1 = 6)。这个结果正是浮窗在原图经停的6×6个位置的得分!

    面对384×384的图像,让(含全连接层)的初始卷积神经网络以32像素的步长独立对图像中的224×224块进行多次评价,其效果和使用把全连接层变换为卷积层后的卷积神经网络进行一次前向传播是一样的。

    Evaluating the original ConvNet (with FC layers) independently across 224x224 crops of the 384x384 image in strides of 32 pixels gives an identical result to forwarding the converted ConvNet one time.

    如下图所示,FCN将传统CNN中的全连接层转化成卷积层,对应CNN网络FCN把最后三层全连接层转换成为三层卷积层。在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个不同类别的概率。FCN将这3层表示为卷积层,卷积核的大小 (通道数,宽,高) 分别为 (4096,1,1)、(4096,1,1)、(1000,1,1)。看上去数字上并没有什么差别,但是卷积跟全连接是不一样的概念和计算过程,使用的是之前CNN已经训练好的权值和偏置,但是不一样的在于权值和偏置是有自己的范围,属于自己的一个卷积核。因此FCN网络中所有的层都是卷积层,故称为全卷积网络。

    这里写图片描述

    下图是一个全卷积层,与上图不一样的是图像对应的大小下标,CNN中输入的图像大小是同意固定resize成 227x227 大小的图像,第一层pooling后为55x55,第二层pooling后图像大小为27x27,第五层pooling后的图像大小为13*13。而FCN输入的图像是H*W大小,第一层pooling后变为原图大小的1/4,第二层变为原图大小的1/8,第五层变为原图大小的1/16,第八层变为原图大小的1/32(勘误:其实真正代码当中第一层是1/2,以此类推)。

    这里写图片描述

    经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。其中图像到 H/32W/32 的时候图片是最小的一层时,所产生图叫做heatmap热图,热图就是我们最重要的高维特诊图,得到高维特征的heatmap之后就是最重要的一步也是最后的一步对原图像进行upsampling,把图像进行放大、放大、放大,到原图像的大小。

    这里写图片描述

    最后的输出是1000张heatmap经过upsampling变为原图大小的图片,为了对每个像素进行分类预测label成最后已经进行语义分割的图像,这里有一个小trick,就是最后通过逐个像素地求其在1000张图像该像素位置的最大数值描述(概率)作为该像素的分类。因此产生了一张已经分类好的图片,如下图右侧有狗狗和猫猫的图。

    这里写图片描述

    upsampling

    相较于使用被转化前的原始卷积神经网络对所有36个位置进行迭代计算,使用转化后的卷积神经网络进行一次前向传播计算要高效得多,因为36次计算都在共享计算资源。这一技巧在实践中经常使用,一次来获得更好的结果。比如,通常将一张图像尺寸变得更大,然后使用变换后的卷积神经网络来对空间上很多不同位置进行评价得到分类评分,然后在求这些分值的平均值。

    最后,如果我们想用步长小于32的浮窗怎么办?用多次的向前传播就可以解决。比如我们想用步长为16的浮窗。那么先使用原图在转化后的卷积网络执行向前传播,然后分别沿宽度,沿高度,最后同时沿宽度和高度,把原始图片分别平移16个像素,然后把这些平移之后的图分别带入卷积网络。

    这里写图片描述

    如下图所示,当图片在网络中经过处理后变成越小的图片,其特征也越明显,就像图像中颜色所示,当然啦,最后一层的图片不再是一个1个像素的图片,而是原图像 H/32xW/32 大小的图,这里为了简化而画成一个像素而已。

    这里写图片描述

    如下图所示,对原图像进行卷积conv1、pool1后原图像缩小为1/2;之后对图像进行第二次conv2、pool2后图像缩小为1/4;接着继续对图像进行第三次卷积操作conv3、pool3缩小为原图像的1/8,此时保留pool3的featureMap;接着继续对图像进行第四次卷积操作conv4、pool4,缩小为原图像的1/16,保留pool4的featureMap;最后对图像进行第五次卷积操作conv5、pool5,缩小为原图像的1/32,然后把原来CNN操作中的全连接变成卷积操作conv6、conv7,图像的featureMap数量改变但是图像大小依然为原图的1/32,此时图像不再叫featureMap而是叫heatMap。

    现在我们有1/32尺寸的heatMap,1/16尺寸的featureMap和1/8尺寸的featureMap,1/32尺寸的heatMap进行upsampling操作之后,因为这样的操作还原的图片仅仅是conv5中的卷积核中的特征,限于精度问题不能够很好地还原图像当中的特征,因此在这里向前迭代。把conv4中的卷积核对上一次upsampling之后的图进行反卷积补充细节(相当于一个差值过程),最后把conv3中的卷积核对刚才upsampling之后的图像进行再次反卷积补充细节,最后就完成了整个图像的还原。

    这里写图片描述

    缺点

    在这里我们要注意的是FCN的缺点:

    1. 是得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。

    2. 是对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。

    展开全文
  • Deep Learning(深度学习)学习笔记整理系列之(一)

    万次阅读 多人点赞 2013-04-10 12:50:17
    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com ... 作者:Zouxy version 1.0 2013-04-08 ...1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。...2)本文仅

    Deep Learning(深度学习)学习笔记整理系列

    zouxy09@qq.com

    http://blog.csdn.net/zouxy09

    作者:Zouxy

    version 1.0  2013-04-08

     

    声明:

    1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。

    2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。

    3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。

    4)阅读本文需要机器学习、计算机视觉、神经网络等等基础(如果没有也没关系了,没有就看看,能不能看懂,呵呵)。

    5)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦(呵呵,好高尚的目标啊)。请联系:zouxy09@qq.com

     

    目录:

    一、概述

    二、背景

    三、人脑视觉机理

    四、关于特征

           4.1、特征表示的粒度

           4.2、初级(浅层)特征表示

           4.3、结构性特征表示

           4.4、需要有多少个特征?

    五、Deep Learning的基本思想

    六、浅层学习(Shallow Learning)和深度学习(Deep Learning)

    七、Deep learning与Neural Network

    八、Deep learning训练过程

           8.1、传统神经网络的训练方法

           8.2、deep learning训练过程

    九、Deep Learning的常用模型或者方法

           9.1、AutoEncoder自动编码器

           9.2、Sparse Coding稀疏编码

           9.3、Restricted Boltzmann Machine(RBM)限制波尔兹曼机

           9.4、Deep BeliefNetworks深信度网络

           9.5、Convolutional Neural Networks卷积神经网络

    十、总结与展望

    十一、参考文献和Deep Learning学习资源

     

    一、概述

           Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生“自我”的意识。是的,在人类和大量现成数据的帮助下,电脑可以表现的十分强大,但是离开了这两者,它甚至都不能分辨一个喵星人和一个汪星人。

           图灵(图灵,大家都知道吧。计算机和人工智能的鼻祖,分别对应于其著名的“图灵机”和“图灵测试”)在 1950 年的论文里,提出图灵试验的设想,即,隔墙对话,你将不知道与你谈话的,是人还是电脑。这无疑给计算机,尤其是人工智能,预设了一个很高的期望值。但是半个世纪过去了,人工智能的进展,远远没有达到图灵试验的标准。这不仅让多年翘首以待的人们,心灰意冷,认为人工智能是忽悠,相关领域是“伪科学”。

            但是自 2006 年以来,机器学习领域,取得了突破性的进展。图灵试验,至少不是那么可望而不可及了。至于技术手段,不仅仅依赖于云计算对大数据的并行处理能力,而且依赖于算法。这个算法就是,Deep Learning。借助于 Deep Learning 算法,人类终于找到了如何处理“抽象概念”这个亘古难题的方法。


           2012年6月,《纽约时报》披露了Google Brain项目,吸引了公众的广泛关注。这个项目是由著名的斯坦福大学的机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家JeffDean共同主导,用16000个CPU Core的并行计算平台训练一种称为“深度神经网络”(DNN,Deep Neural Networks)的机器学习模型(内部共有10亿个节点。这一网络自然是不能跟人类的神经网络相提并论的。要知道,人脑中可是有150多亿个神经元,互相连接的节点也就是突触数更是如银河沙数。曾经有人估算过,如果将一个人的大脑中所有神经细胞的轴突和树突依次连接起来,并拉成一根直线,可从地球连到月亮,再从月亮返回地球),在语音识别和图像识别等领域获得了巨大的成功。

           项目负责人之一Andrew称:“我们没有像通常做的那样自己框定边界,而是直接把海量数据投放到算法中,让数据自己说话,系统会自动从数据中学习。”另外一名负责人Jeff则说:“我们在训练的时候从来不会告诉机器说:‘这是一只猫。’系统其实是自己发明或者领悟了“猫”的概念。”

      

           2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译和中文语音合成,效果非常流畅。据报道,后面支撑的关键技术也是DNN,或者深度学习(DL,DeepLearning)。

           2013年1月,在百度年会上,创始人兼CEO李彦宏高调宣布要成立百度研究院,其中第一个成立的就是“深度学习研究所”(IDL,Institue of Deep Learning)。

     

           为什么拥有大数据的互联网公司争相投入大量资源研发深度学习技术。听起来感觉deeplearning很牛那样。那什么是deep learning?为什么有deep learning?它是怎么来的?又能干什么呢?目前存在哪些困难呢?这些问题的简答都需要慢慢来。咱们先来了解下机器学习(人工智能的核心)的背景。

     

    二、背景

          机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。机器能否像人类一样能具有学习能力呢?1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题(呵呵,人工智能正常的轨道没有很大的发展,这些什么哲学伦理啊倒发展的挺快。什么未来机器越来越像人,人越来越像机器啊。什么机器会反人类啊,ATM是开第一枪的啊等等。人类的思维无穷啊)。

            机器学习虽然发展了几十年,但还是存在很多没有良好解决的问题:


            例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等等。目前我们通过机器学习去解决这些问题的思路都是这样的(以视觉感知为例子):


            从开始的通过传感器(例如CMOS)来获得数据。然后经过预处理、特征提取、特征选择,再到推理、预测或者识别。最后一个部分,也就是机器学习的部分,绝大部分的工作是在这方面做的,也存在很多的paper和研究。

            而中间的三部分,概括起来就是特征表达。良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。但,这块实际中一般都是人工完成的。靠人工提取特征。


           截止现在,也出现了不少NB的特征(好的特征应具有不变性(大小、尺度和旋转等)和可区分性):例如Sift的出现,是局部图像特征描述子研究领域一项里程碑式的工作。由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并且SIFT具有很强的可区分性,的确让很多问题的解决变为可能。但它也不是万能的。


           然而,手工地选取特征是一件非常费力、启发式(需要专业知识)的方法,能不能选取好很大程度上靠经验和运气,而且它的调节需要大量的时间。既然手工选取特征不太好,那么能不能自动地学习一些特征呢?答案是能!Deep Learning就是用来干这个事情的,看它的一个别名UnsupervisedFeature Learning,就可以顾名思义了,Unsupervised的意思就是不要人参与特征的选取过程。

           那它是怎么学习的呢?怎么知道哪些特征好哪些不好呢?我们说机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为的学科。好,那我们人的视觉系统是怎么工作的呢?为什么在茫茫人海,芸芸众生,滚滚红尘中我们都可以找到另一个她(因为,你存在我深深的脑海里,我的梦里 我的心里 我的歌声里……)。人脑那么NB,我们能不能参考人脑,模拟人脑呢?(好像和人脑扯上点关系的特征啊,算法啊,都不错,但不知道是不是人为强加的,为了使自己的作品变得神圣和高雅。)

            近几十年以来,认知神经科学、生物学等等学科的发展,让我们对自己这个神秘的而又神奇的大脑不再那么的陌生。也给人工智能的发展推波助澜。

     

    三、人脑视觉机理

           1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”:可视皮层是分级的:


            我们看看他们做了什么。1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔区域与大脑皮层神经元的对应关系。他们在猫的后脑头骨上,开了一个3 毫米的小洞,向洞里插入电极,测量神经元的活跃程度。

          然后,他们在小猫的眼前,展现各种形状、各种亮度的物体。并且,在展现每一件物体时,还改变物体放置的位置和角度。他们期望通过这个办法,让小猫瞳孔感受不同类型、不同强弱的刺激。

           之所以做这个试验,目的是去证明一个猜测。位于后脑皮层的不同视觉神经元,与瞳孔所受刺激之间,存在某种对应关系。一旦瞳孔受到某一种刺激,后脑皮层的某一部分神经元就会活跃。经历了很多天反复的枯燥的试验,同时牺牲了若干只可怜的小猫,David Hubel 和Torsten Wiesel 发现了一种被称为“方向选择性细胞(Orientation Selective Cell)”的神经元细胞。当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元细胞就会活跃。

           这个发现激发了人们对于神经系统的进一步思考。神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。

           这里的关键词有两个,一个是抽象,一个是迭代。从原始信号,做低级抽象,逐渐向高级抽象迭代。人类的逻辑思维,经常使用高度抽象的概念。

            例如,从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。


          这个生理学的发现,促成了计算机人工智能,在四十年后的突破性发展。

          总的来说,人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征,再到V2区的形状或者目标的部分等,再到更高层,整个目标、目标的行为等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。例如,单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。

          敏感的人注意到关键词了:分层。而Deep learning的deep是不是就表示我存在多少层,也就是多深呢?没错。那Deep learning是如何借鉴这个过程的呢?毕竟是归于计算机来处理,面对的一个问题就是怎么对这个过程建模?

           因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。


    下续

    展开全文
  • FCN(全卷积神经网络

    万次阅读 2016-06-03 16:16:27
    原文链接: ...从CNN 发展到 FCN ,从有监督训练到end to end, 通常CNN网络
  • 卷积神经网络连接神经网络

    万次阅读 2018-05-02 16:33:09
    卷积神经网络也是通过一层一层的节点组织起来的,对于卷积神经网络,相邻两层之间只有部分节点相连。在卷积神经网络的前几层中,每一层的节点都被组织成一个三维矩阵。前几层中每一个节点只和上一层中部分节点相连。...
  • FCN全卷积神经网络

    千次阅读 2019-01-15 16:20:25
    CNN的强大之处在于它的多层神经网络结构能够自动学习影像的深层次特征。同时CNN的局部感知、权值共享、下采样的特点,是学习到的特征具有平移、旋转、缩放不变性,这保证了网络结构能够适应不同形态的二维图像,更...
  • 卷积神经网络也是通过一层一层的节点组织起来的。和全连接神经网络一样,卷积神经网络中的每一个节点就是一个神经元。在连接神经网络中,每相邻两层之间的节点都有边相连,于是会将每一层的连接层中的节点组织...
  • 卷积神经网络超详细介绍

    万次阅读 多人点赞 2018-11-06 09:44:12
    1、卷积神经网络的概念 2、 发展过程 3、如何利用CNN实现图像识别的任务 4、CNN的特征 5、CNN的求解 6、卷积神经网络注意事项 7、CNN发展综合介绍 8、LeNet-5结构分析 9、AlexNet 10、ZFNet 10.1 意义 ...
  • 几种经典的卷积神经网络模型

    万次阅读 2019-03-17 14:36:05
    1.卷积神经网络解决的问题 2.经典的卷积神经网络 2.1 LeNet 2.2 AlexNet 2.3 VGG 2.3.1 VGG块 2.3.2 VGG网络 2.4 NiN 2.4.1 Nin块 2.4.2 Nin网络 2.5 GooLeNet 2.5.1 Inception块 2.5.2 GoogLeNet网络 ...
  • 全卷积神经网络图像分割(U-net)-keras实现

    万次阅读 多人点赞 2018-11-04 19:10:13
    最近在研究全卷积神经网络在图像分割方面的应用,因为自己是做医学图像处理方面的工作,所以就把一个基于FCN(全卷积神经网络)的神经网络用 keras 实现了,并且用了一个医学图像的数据集进行了图像分割。全卷积神经...
  • 前段时间一直忙于用深度学习做医学图像分割,采用的方法是FCN,也就是全卷积神经网络全卷积神经网络是基于卷积神经网络的改进,使得输入和输出的尺寸一致,并且对每个像素点进行分类,达到图像分割的目的。下图是...
  • (本科毕业论文题目、摘要、关键词及相应的英文翻译,欢迎做前列腺分割的小伙伴可以...首先将三维前列腺磁共振图像经切片采样得到二维图像,然后将前列腺图像切片输入全卷积神经网络,该网络结构可实现图像像素级别...
  • 全卷积神经网络实现图像分割

    千次阅读 2018-05-28 08:40:25
    全卷积神经网络医学图像分割框架医学图像分割主要有两种框架,一个是基于CNN的,另一个就是基于FCN的。基于CNN 的框架这个想法也很简单,就是对图像的每一个像素点进行分类,在每一个像素点上取一个patch,当做一幅...
  • 自动驾驶系统进阶与项目实战(三)基于全卷积神经网络的点云三维目标检测和ROS实战 前面入门系列的文章中我介绍了几种点云三维分割/目标检测模型,在做点云预处理上,有通过球面投射(SqueezeNet)得到深度图的,也...
  • 基于卷积神经网络的遥感图像养殖区自动划分 摘要:卷积神经网络是目前计算机视觉领域广泛应用的模型。我们在传统卷积神经网络的基础上,替换了全连接层,借助高分辨率图像,对海水养殖区...全卷积神经网络;图像...
  • 全卷积神经网络FCN-TensorFlow代码精析

    万次阅读 多人点赞 2018-04-24 20:38:19
    FCN-TensorFlow完整代码Github:https://github.com/EternityZY/FCN-TensorFlow.git这里解析所有代码 并加入详细注释注意事项:请按照代码中要求,将VGG-19模型和训练集下载好,运行下载很慢。...
  • 卷积神经网络的成功主要受两方面的限制: the available training sets —— 数据集 the size of the considered networks. —— 网络深度(或者网络结构) 采用卷积层最后一层输出作为图像表征,不够...
  • 大家好,我是为人造的智能操碎了心的智能禅师。今天是10月24日,既是程序员节,也是程序员感恩节。这一天,大家纷纷向那些无私奉献、一心为民的好人们,送出“好人一生平安”的美...
  • 基于卷积神经网络的图像分类

    万次阅读 2018-02-11 08:45:20
    《Convolutional Neural Networks for Large-Scale Remote-Sensing Image Classification》本文提出了一种全卷积神经网络来产生密集分类(逐像素分类),特点是:位置无关、输出是一系列卷积层的结果。首先将负责...
1 2 3 4 5 ... 20
收藏数 48,806
精华内容 19,522
关键字:

全卷积神经网络