深度学习论文笔记(七)---Deconvolution network-2016年(Learning Deconvolution Network for Semantic Segmentation )

深度学习论文笔记(七)---Deconvolution network

Learning Deconvolution Network for Semantic Segmentation

Author:H Noh , S Hong , B Han

Year:2016

1、  导引

2015年提出的FCN网络在Semantic segmentation上取得了较好的成绩,但是依然存在两个较为突出的缺点:

①First, the network has a predefined fixed-size receptive field.

所以那些大于或者小于感受野的目标,就可能被分裂或者错误标记。具体点来说,对于大目标,进行预测时只使用了local information所以可能会导致属于同一个目标的像素被误判为不连续的标签(即不同目标),如下图,左侧为input,中间为ground truth,右侧为result,可见这个大巴由于too large所以被分割成了很多不连续的部分。

对于小目标来说,经常会被忽略掉,就是被当作了背景了。如下图,左侧为input,中间为ground truth,右侧为result。由于人很远所以在图中面积too small,结果被当作背景了:

目标的细节结构常常丢失或者被平滑处理掉

所以输入deconvolution-layer的label map就太粗糙了,而且deconvolution 这个步骤在FCN这篇文章中做的过于简单了

缺少一个在大量数据上得到训练的deconvolution network使得准确地重构物体边界的高维非线性结构变得困难。

针对上面的两个limitations,这篇文章提出的贡献有:

We learn a deep deconvolution network, which is composed of deconvolution, unpooling, and rectified linear unit (ReLU) layers.

•   经过训练的网络被用于单个物体以获得 instance-wise(就是样例水平上)的分割,并最终和语义分割结合起来。

•   在PASCAL VOC 2012数据集上取得的效果很nice。

2、模型解读

总的来说,分为两个部分

Convolution part-- feature extractor that transforms the inputimage to multidimensional feature representation

Deconvolution part--a shape generator that produces objectsegmentation from the feature extracted from the convolution network

Finaloutput of the network is a probability map in the same size to input image,indicating probability of each pixel that belongs to one of the predefinedclasses.

①ConNet部分:以VGG-16laye为基础,只不过把最后分类的全连接层去掉了,所以有13个卷积层。在适当的层间应用Relu和Maxpooling.

②然后增加两个全连接层来强化特定类别的投影。有人可能会想,FCN中不是已经提到要用卷积层来替换掉全连接层吗?怎么这里还在接全连接层,是在退步吗?所以这里有个有意思的地方,看清楚哦,图中所示的全连接层是1x1大小的

这里就有个梗,当年FCN得到CVPR'15 best paper honorable mention的时候, Yann LeCun等人出来吐槽这个'FCN'的概念早就有了,AlexNet里面的fullyconnected layer (FC)本身就是个误导,因为FC layer可以看成是1x1的convolution, 本来就可以输入任意大小的图片.这段话摘自知乎答主周博磊。

为什么说FC layer可以看成是1x1的convolution呢,我个人的理解是,FC做运算的时候确实就是把输入给拉成一行(或是一列)来算的,输出的也是一个列(或是一行)。

③DeconNet是ConNet部分的一个镜像。只不过Maxpooling换成了Unpooling。

大致结构就是这样。

3、 特点分析

①Unpooling

他们采用的Unpooling的技术来源于论文Visualizing and understanding convolutional networks. In ECCV, 2014。 简单的说,就是利用一些switch variables记录下Maxpooling操作得到的activation的位置,然后Unpooling就是把它放回原位置,如下图:

要注意,switch variables记录的只是Pooling的时候被选中的那些值的位置,所以Unpooling之后得到的map虽然尺寸变回来了,但是只是对应的位置有值,如上图右边黑色的位置,其它地方是没有值的,所以是一个稀疏map。所以就要进行下一步操作,deconvolution

②Deconvolution

如图所示,Deconvolution的细节我就不描述了。简而言之,它的功能就和convolution相反。如果对于这个过程有很强兴趣的朋友,可看一下这篇文章。

#########    A guide to convolution arithmetic for deep learning。###########

       虽然名字是convolution…,但是里面较为详细的讲述了相关内容。

还有一点,把这个运算称为:deconvolution(逆卷积),似乎比较容易引起误会,更为精确的说法是Transposed Convolution (转置卷积)

这是我上面推荐的那个文章的目录,Transposed convolution就是在详细描述这个过程。有兴趣的朋友可以自行搜索下载查看。

总之,Deconvolution网络中的filters,位于低层的filter能捕获目标的形状信息,位于高层的filter能够捕获特定类别的细节信息,所以整个网络就能兼顾这两方面。

③示例

图a为输入,图b为我第2部分结构图中14 × 14 deconvolutional layer中的最后一层的输出,然后经过Unpooling,得到图c,可以看到c是一个sparse map,详见我的①中unpooling的分析。然后图d又是结构图中28 × 28 deconvolutional layer最后一层的输出,然后再unpooling得到图e,以此类推后面的图。

然后他们和FCN-8S做了个对比,效果确实还是有提升的:

④系统分析

他们的算法将语义分割作为实例分割问题,也就是说,网络采用可能包含对象的子图像(我们以后称为实例)作为输入,并产生像素级类预测作为输出。

对于他们的网络来说,整张图的Semantic segmentation是通过将网络应用于每一个从图中提取出来的候选项并将所有候选项的输出聚合起来 得到的。就是说他们先通过输入图得到足够数量的candidate proposals然后把proposals输入进去,最后再聚合到一起。

他们认为:instance-wise prediction is useful for handling objects with various scales

聚合的方法:

在聚合的时候要抑制一些噪声(如错位),他们证明 对应所有类别的得分图的像素最大值平均值 是足够有效 来获得鲁棒的结果的。

来代表第i个proposal的得分图,W X H代表这个proposal的尺寸,C代表类别的数量。我们首先把它放在gi的外围有零填充的图像空间上,我们用下面的Gi来表示 在原始图像尺寸中与gi对应的分割图。然后我们通过下面这两个公式来 聚合所有proposals的输出 进而来构建一幅图像的像素级别的类别得分图,

利用像素最大值

  利用像素平均值

⑤另外的发现:

       当他们减小proposal的大小(相对的就增加了proposal的数量),发现效果会得到提升,如下图:

两种方法结合:

In addition, instance-wise prediction is useful for handling objects with various scales,

while fully convolutional network with a coarse scale may be advantageous to capture context within image.

就是说,他们的方法对目标的尺度多样性有较好的适应性,之前的FCN方法能较好的捕捉背景信息,所以他们试着将两种方法结合起来。就是把一张图片输入这两个网络进行单独的处理,然后把把两个网络的输出计算均值当作最后的输出,然后还用到了CRF来获得更好的结果。对比图如下:

从左致右依次是:输入、ground truth、FCN、DeconNet、FCN+DeconNet、FCN+DeconNet+CRF

A、 这是他们的DeconNet处理结果比FCN好的情况

B、 这是FCN处理结果好的情况

C、 FCN和DeconNet都不好的情况但是被二者结合起来得到好结果的示例

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能

基于Region Proposal的深度学习目标检测简述(一)

开篇需要跟大家道歉,一切忙没时间的理由都是借口,实际上就是偷懒了,这么久才更新,非常抱歉! 本篇争取以最简明的叙述,帮助大家理解下基于Region Propos...

2536
来自专栏技术随笔

[译] Every Filter Extracts A Specific Texture In Convolutional Neural Networks

2707
来自专栏机器学习、深度学习

人群密度估计--CrowdNet: A Deep Convolutional Network for Dense Crowd Counting

CrowdNet: A Deep Convolutional Network for Dense Crowd Counting published in ...

2248
来自专栏技术随笔

[译] 用于语义分割的全卷积网络FCN(UC Berkeley)题目:用于语义分割的全卷积网络摘要1. 引言2. 相关工作3. 全卷积网络4 分割架构5 结果6 结论附录A IU上界附录B 更多的结果

3707
来自专栏人工智能头条

北大、北理工、旷视联手:用于图像语义分割的金字塔注意力网络

1768
来自专栏深度学习计算机视觉

【人脸检测】Compact Cascade CNN和MTCNN算法

【文章导读】目前人脸识别技术已经遍地开花,火车站、机场、会议签到等等领域都有应用,人脸识别的过程中有个重要的环节叫做人脸检测,顾名思义就是在一张图片中找出所有的...

381
来自专栏目标检测和深度学习

干货 | 目标检测入门,看这篇就够了(上)

作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾...

31711
来自专栏IT派

这些资源你肯定需要!超全的GAN PyTorch+Keras实现集合

生成对抗网络及其变体的实现分为基于 Keras 和基于 PyTorch 两个版本。它们都是按照原论文实现的,但模型架构并不一定完全和原论文相同,作者关注于实现这...

1043
来自专栏AI科技评论

学界 | 悉尼科技大学CVPR 2018论文:无监督学习下的增强人脸关键点检测器

AI 科技评论按:本文作者为悉尼科技大学博士生董宣毅(Xuanyi Dong),他根据 CVPR 2018 录用论文 Supervision-by-Regist...

962
来自专栏AI科技评论

悉尼科技大学CVPR 2018论文:无监督学习下的增强人脸关键点检测器

本文作者为悉尼科技大学博士生董宣毅(Xuanyi Dong),他根据 CVPR 2018 录用论文 Supervision-by-Registration: A...

683

扫码关注云+社区