精华内容
下载资源
问答
  • FCN

    2019-11-21 11:59:38
    FCN

    FCN



    《Fully Convolutional Networks for Semantic Segmentation》
    —语义分割中的全卷机网络
    作者:Jonathan Long,etc.
    单位:加州大学伯克利分校
    发表会议及时间:CVPR 2015

    这篇文章的作者们就是caffe的开发者之一

    FCN 是深度卷积网络用于图像分割的开山之作,其端到端训练为后续语义分割算法的发展铺平了道路


    Submission history
    From: Jonathan Long [view email]
    [v1] Fri, 14 Nov 2014 20:46:03 UTC (5,641 KB)
    [v2] Sun, 8 Mar 2015 22:16:40 UTC (4,333 KB)

    https://arxiv.org/abs/1411.4038


    补充:顶会介绍
    在这里插入图片描述

    一 论文导读

    语义分割是计算机视觉中的三大基础任务之一图像分割的重要部分。现实中,越来越多的应用场景需要从影像中推理出相关的知识或语义(即由具体到抽象的过程)。作为计算机视觉的核心问题,语义分割对于场景理解的重要性日渐突出。

    在这里插入图片描述
    语义分割、实例分割(人也要区分开来)、全景分割(除了目标,所有元素都要),三种分割是层层递进的关系,全景分割最难,语义分割最简单。

    发展历史:

    在这里插入图片描述

    • Normalized-CUT

    在这里插入图片描述


    • 深度学习代表问题

    一是不匹配关系

    在这里插入图片描述
    解决的核心:卷积核能看到的范围

    二是不寻常类
    在这里插入图片描述

    解决问题的paper

    在这里插入图片描述

    一般的训练过程

    在这里插入图片描述

    语义分割常用数据集

    在这里插入图片描述

    语义分割的常用指标:PA、MPA

    在这里插入图片描述
    论文贡献:

    1.将分类网络改编为全卷积神经网络,具体包括全连接层转化为卷积层以及通过反卷积进行上采样产生准确而精细的分割
    2.使用迁移学习的方法进行微调
    3.使用跳跃结构使得语义信息可以和表征信息相结合,产生准确和精细的分割
    4.FCN证明了端到端、像素到像素训练方式下的卷积神经网络超过了现有(2015)语义分割方向最先进的技术
    5.FCN成为了PASCAL VOC最出色的分割方法,较2011和2012分割算法的MIoU提高了将近20%

    在这里插入图片描述

    研究意义及应用

    ➢地理信息系统
    ➢无人车驾驶
    ➢医疗影像分析
    ➢机器人等领域
    等等
    与图像分类或目标检测相比,语义分割使我们对图像有更加细致的了解。这种了解在诸如自动驾驶、机器人以及图像搜索引擎等许多领域都是非常重要的。


    二 论文精读


    Abstract:(这篇文章的摘要值得学习)

    1. Convolutional networks are powerful visual models that yield hierarchies of features. We show that convolutional networks by themselves, trained end-to-end, pixelsto-pixels, exceed the state-of-the-art in semantic segmentation.

    2. Our key insight is to build “fully convolutional” networks that take input of arbitrary size and produce correspondingly-sized output with efficient inference and learning.

    3. We define and detail the space of fully convolutional networks, explain their application to spatially dense prediction tasks, and draw connections to prior models.

    4. We adapt contemporary classification networks (AlexNet [19],the VGG net [31], and GoogLeNet [32]) into fully convolutional networks and transfer their learned representations by fine-tuning [4] to the segmentation task. We then define a novel architecture that combines semantic information from a deep, coarse layer with appearance information from a shallow, fine layer to produce accurate and detailed segmentations.

    5. Our fully convolutional network achieves state-of-the-art segmentation of PASCAL VOC (20% relative improvement to 62.2% mean IU on 2012), NYUDv2, and SIFT Flow, while inference takes less than one fifth of a second for a typical image.


    ➢主要成就:端到端、像素到像素训练方式下的卷积神经网络超过了现有语义分割方向最先进的技术
    ➢核心思想:搭建了一个全卷积网络,输入任意尺寸的图像,经过有效推理和学习得到相同尺寸的输出
    ➢主要方法:将当前分类网络改编成全卷积网络(AlexNet、 VGGNet和GoogLeNet) 并进行微调设计了跳跃连接将全局信息和局部信息连接起来,相互补偿
    ➢实验结果:在PASCAL VOC、NYUDv2和SIFT Flow数据集上得到了state-of-the-art的结果


    • End-to- End训练

    在计算机视觉领域,端到端可以简单地理解为,输入是原始图像,输出是预测图像,中间的具体过程依赖于算法本身的学习能力。通过网络内部结构,对原始图像进行降维和特征提取,并在后续过程中将尺寸较小的特征图逐渐恢复成与原图尺寸相同的预测图。特征提取的好坏将直接影响最后的预测结果,端到端网络的最主要特点就是根据设计好的算法自己学习特征,而不需要人为干预。

    端到端的发展过程
    在这里插入图片描述


    术语补充:

    • pixel-wise(pixels-to-pixels):像素级别

    每张图片都是由一一个个pixel组成的,pixel是图像的基本单位

    • image-wise:图像级别

    比如一张图片的标签是狗,即"狗" 是对整个图片的标注

    • patch-wise:块级别

    介于像素级别和图像级别之间,每个patch都是由好多个pixel组成的

    • patchwise training:

    是指对每一个感兴趣的像素, 以它为中心取一个patch(小块), 然后输入网络,输出则为该像素的
    标签


    局部信息和全局信息

    在这里插入图片描述

    局部信息会偏向于解决位置信息,在哪里
    全局信息会偏向于解决是什么

    局部信息和全局信息存在对立关系,有着一定的矛盾
    在这里插入图片描述

    如何把握住局部信息和全局信息的平衡,需要根据具体的数据集决定


    在以往的分割方法中,主要有两大类缺点:

    1.基于图像块的分割虽然常见,但是效率低,且往往需要前期或者后期处理(例如超像素、检测框、局部预分类等)
    2.语义分割面临着语义和位置信息不可兼得的问题。全局信息解决的“是什么”,而局部信息解决的是“在哪里”

    为了解决上面这两个问题,本文主要有三个创新点:

    1.将分类网络改编为全卷积神经网络,具体包括全连接层转化为卷积层以及通过反卷积进行上采样
    2.使用迁移学习的方法进行微调
    3:使用跳跃结构使得语义信息可以和表征信息相结合,产生准确而精细的分割


    Shift-and-stitch

    在这里插入图片描述


    转置卷积

    在这里插入图片描述


    网络结构

    在这里插入图片描述
    作者通过实验发现,FCN-4s \FCN-2s,并没有想象的那么好,出现了负反馈、甚至负优化

    详细版:

    在这里插入图片描述


    训练技巧:

    1.加载预训练模型
    2.初始化反卷积参数
    3.至少175个epoch后算法才会有不错的表现
    4.学习率在100次后进行调整
    5.pool3之前的特征图不需要融合

    在这里插入图片描述


    预处理

    1. HHA:RGB+HHA

    改进点

    在这里插入图片描述









    三 代码实现

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

    四 问题思索

    类别平衡重要吗?

    当然是非常重要的,数据集需要保持各类别数据量差不多,一定要保证类别的均衡性

    数据集不可控的情况下:介绍一种改权重的策略来平衡数据集,那就是LinkNet中的一种方法:数据量多的,比如背景就是使用小权重,数据量少的,就改大它的权重。

    数据集可控(自己做)的话 ,那你就记得数据集要平衡就行

    展开全文
  • fcn

    2018-03-07 20:55:00
    fcn代码:https://github.com/shelhamer/fcn.berkeleyvision.org deconvolution实际上是转置卷积,是为了从小的feature map恢复到大的feature map 动画展示怎么deconvolution:...

    fcn代码:https://github.com/shelhamer/fcn.berkeleyvision.org

    deconvolution实际上是转置卷积,是为了从小的feature map恢复到大的feature map

    动画展示怎么deconvolution:https://github.com/vdumoulin/conv_arithmetic

    转载于:https://www.cnblogs.com/ymjyqsx/p/8525281.html

    展开全文
  • 论文Fully Convolutional Networks for Semantic ...fcn开源代码github下载地址https://github.com/shelhamer/fcn.berkeleyvision.org核心思想该论文包含了当下CNN的三个思潮- 不含全连接层(fc)的全卷积(fu...

     

    论文Fully Convolutional Networks for Semantic Segmentation 是图像分割的milestone论文。

     

    理清一下我学习过程中关注的重点。

     

    fcn开源代码

    github下载地址https://github.com/shelhamer/fcn.berkeleyvision.org 

     

    核心思想

    该论文包含了当下CNN的三个思潮 
    - 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。 
    - 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。 

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

     

    一些重点:

    损失函数是在最后一层的 spatial map上的 pixel 的 loss 和,在每一个 pixel 使用 softmax loss 

    使用 skip 结构融合多层(3层)输出,底层网络应该可以预测更多的位置信息,因为他的感受野小可以看到小的 pixels

    上采样 lower-resolution layers 时,如果采样后的图因为 padding 等原因和前面的图大小不同,使用 crop ,当裁剪成大小相同的,spatially aligned ,使用 concat 操作融合两个层 

     

    预备知识:

     

    CNN与FCN

    • 通常cnn网络在卷积之后会接上若干个全连接层,将卷积层产生的特征图(feature map)映射成为一个固定长度的特征向量。一般的CNN结构适用于图像级别的分类和回归任务,因为它们最后都期望得到输入图像的分类的概率,如ALexNet网络最后输出一个1000维的向量表示输入图像属于每一类的概率。
    • FCN对图像进行像素级的分类,从而解决了语义级别的图像分割问题。与经典的CNN在卷积层使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷基层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后奇偶在上采样的特征图进行像素的分类。
      -全卷积网络(FCN)是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。
    • FCN将传统CNN中的全连接层转化成一个个的卷积层。如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,7,7)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。 

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

     

     

    网络结构

     

    网络结构如下。输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为:20类目标+背景=21。 (在PASCAL数据集上进行的,PASCAL一共20类)
    这里写图片描述

    全卷积-提取特征

    虚线上半部分为全卷积网络。(蓝:卷积,绿:max pooling)。对于不同尺寸的输入图像,各层数据的尺寸(height,width)相应变化,深度(channel)不变。 
    这部分由深度学习分类问题中经典网络AlexNet1修改而来。只不过,把最后两个全连接层(fc)改成了卷积层。

    论文中,达到最高精度的分类网络是VGG16,但提供的模型基于AlexNet。此处使用AlexNet便于绘图。

     

     

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

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

    针对第二个全连接层,令其滤波器尺寸为F=1,这样输出数据体为[1x1x4096]

    对最后一个全连接层也做类似的,令其F=1,最终输出为[1x1x1000]

    逐像素预测

    虚线下半部分中,分别从卷积网络的不同阶段,以卷积层(蓝色×3)预测深度为21的分类结果。

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

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

     

    怎么具体逐像素点预测分类的:

    参考博客:http://www.cnblogs.com/gujianhan/p/6030639.html

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

    具体过程:

     

    这里写图片描述

    经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。其中图像到 H/32∗W/32 的时候图片是最小的一层时,所产生图叫做heatmap热图,热图就是我们最重要的高维特征图

    得到高维特征的heatmap之后就是最重要的一步也是最后的一步对原图像进行upsampling,把图像进行放大、放大、放大,到原图像的大小。

    (也就是将高维特征图翻译成原图时对应的分割图像!!)

    这里写图片描述

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

    反卷积-升采样

    (这里会先进行上采样,即扩大像素;再进行卷积——通过学习获得权值)

    下半部分,反卷积层(橙色×3)可以把输入数据尺寸放大。和卷积层一样,上采样的具体参数经过训练确定。

    这里图像的反卷积与下图的full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end

    (feature map值与权重不同,生成的上采样的二值区域也是不一样的。)

    例:反卷积2 
    这里写图片描述 
    输入:每个像素值等于filter的权重 
    输出:步长为stride,截取的宽度为pad。

    跳级结构

     

    • 如下图所示:对原图进行卷积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信息。

    0672a434af63ac7728b6f2f71d679a20efbcb48629eae7d40bbcf2efa0b00b09uploading.4e448015.gif转存失败重新上传取消0672a434af63ac7728b6f2f71d679a20efbcb48629eae7d40bbcf2efa0b00b09uploading.4e448015.gif转存失败重新上传取消

     

    网络的loss层

     

    这里写图片描述 
    sem是网络输入层的top:’sem’ 是数据的标签 

     

    fcn网络的输入batchsize是1,因为分割loss的计算在每一个像素点都一个真值(标签),相当于每一个像素点的都是一个分类任务,一个图像就有对应像素点个样本。所以分割任务的batch是一个图片,将一个图片最后在所有像素点上的分类loss加起来计算一次梯度的更新。

     

    训练

     

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

    第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阶段可以看出,跳级结构利用浅层信息辅助逐步升采样,有更精细的结果。 
    这里写图片描述

    其他参数

    minibatch:20张图片 
    learning rate:0.001 
    初始化: 
    分类网络之外的卷积层参数初始化为0。 
    反卷积参数初始化为bilinear插值。最后一层反卷积固定位bilinear插值不做学习。

    结论

    总体来说,本文的逻辑如下: 
    - 想要精确预测每个像素的分割结果 
    - 必须经历从大到小,再从小到大的两个过程 
    - 在升采样过程中,分阶段增大比一步到位效果更好 
    - 在升采样的每个阶段,使用降采样对应层的特征进行辅助

     

    后续的一个发展:

    采用条件随机场建立类别的关系。

    举个简单的例子,"天空"""这样的像素在物理空间是相邻的概率,应该要比"天空"""这样像素相邻的概率大,那么天空的边缘就更应该判断为鸟而不是鱼(从概率的角度)。https://blog.csdn.net/DL_CreepingBird/article/details/78574059

     

    参考博客:https://blog.csdn.net/xxiaozr/article/details/74159614

    配置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

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,987
精华内容 1,994
关键字:

fcn