专栏首页人工智能前沿讲习SFFAI分享 | 李祥泰:Context modeling in semantic segmentation【附PPT,视频】

SFFAI分享 | 李祥泰:Context modeling in semantic segmentation【附PPT,视频】

关注文章公众号 回复"SFFAI23"获取PPT资料 视频资料可点击下方阅读原文在线观看

图像语义分割是目前计算机视觉领域要解决的一个核心问题,属于视觉中场景理解的研究范畴之一,近期受到了越来越多的研究者的关注,现实中许多应用程序需要精确和高效的分割机制:自主驾驶,室内导航,甚至虚拟或增强现实系统等等。在深度学习技术的推动下,各种各样的深度图像分割模型被提出,一些公开的数据集不断地被刷新。本文将简单地回顾下最近几年顶会上的比较经典分割模型。

任务定义:图像语义分割的定义是对输入图像上面的每一个pixel都分配一个语义标签,属于dense-prediction(classification) task的中一种,类似的任务有深度估计,光流估计。目前主流的做法都是用FCN(Full Convolution network) + 自己的module(head)来搭建一个end2end的系统来学习这种从自然图像到密集语义标签的映射。

Note: 这篇博客主要讲述用深度学习方法来进行语义分割。

作者简介


李祥泰,17级北京大学直博生,导师是童云海和谭少华教授,研究兴趣包括语义分割和图卷积网络,目前在投文章3篇,其中gald-net在cityscape上top2。

两个基本构件:FCN和Atrous Convolution


1. FCN

首先考虑该领域的奠基之作,FCN(Fully Convolutional Networks)[6],之所以称它为奠基之作是因为,这篇文章开辟了充分利用卷积神经网络提取隐藏特征的优势,能够进行端到端的训练,并且相对于传统的图像分割方法在一些公开的数据集上了有了较大的提升。FCN的核心贡献有如下几点。1,第一次使用端到端的策略用卷积神经网络进行语义分割。2,可以利用在一些大的数据集上(ImageNet)训练好的模型进行fine tune。3,使用了上采样和反卷积的操作。4,它引入了跳跃连接的机制去改善上采样后特征图的细粒度。下面来详细看下FCN的操作。

不同于普通的卷积神经网络,FCN网络把VGG16,ResNet50/101等网络的全联接层去掉,换成卷积层。之后进行上采样操作,又可以称为反卷积,或者叫做转置卷积,因为在普通卷积运算时特征图的大小会被缩小,5次池化后会缩小了32倍,为了得到与原始图像相同的大小(因为相同大小才能进行监督学习和训练,计算误差,这是FCN的最大的贡献)。因此论文提出了反卷积的概念,与卷积类似,都是相乘相加的矩阵运算。只不过后者是多对一,前者是一对多。而反卷积的前向和后向传播,只用颠倒卷积的前后向传播即可,caffe均中采用image2col的矩阵运算的方式进行计算,卷积和反卷积有转置对称的性质。具体实现时是把全连接层去掉后加了一个1*1*class的卷积层,然后对channel维度的特征做soft max,取概率最大的作为最后分类的结果,之后的模型几乎都采用该种方式。下图对比了卷积和反卷积。

文章的最后,作者又提到了一种跳跃结构的模块,其目的在于优化结果,因为如果把全卷积之后的结果直接上采样得到的结果是很粗糙的,所以作者将不同池化层的结果进行上采样之后来优化输出。这里作者的想法是把底层的特征和高层的特征做了融合,用底层的细节信息来refine物体边缘。

此处是把pooling 层的第3,4,5层的feature map分别加到了上采样后的结果上。实验效果如下:

可以看出加的层数越多,效果越好,也可以将pool1, pool2的输出再上采样输出。但是,作者说这样得到的结果提升并不大,但是如果精心设计的话还是可以有提升的。

2. Dilated Convolution

带孔卷积(Dilated Convolution)增加每个中心位置的感受野,感受野范围内的任意元素变化都会影响到输出(相对于中心点的)。如下图所示。

(a) 原始的 3×3卷积,1倍的扩张,感受野为 3×3;

(b) 在(a)的基础上进行 3×3卷积,2倍的扩张,感受野为 7×7;

(c) 在(b)的基础上进行 3×3卷积,4倍的扩张,感受野为 15×15;

带孔卷积的优势在于在不增加参数量的条件下能够极大的提高网络的感受野,但是这种中间有间隔的卷积方式会导致格点效应(The Gridding Effect),相比于普通卷积,带孔卷积学习到的pattern具有全局的信息,但却丢失了局部结构信息,因为当多次叠加dilated convolution的时候,用于采样计算的pixel并不连续,并且如果间隔过大,会让一些引入一些不相关的信息(long range irrelevant noise).

Context modeling


有了上述两个基本的组件,我们就可以来看近些年顶会上面的文章是如何用这些组件来建模。目前state-of-the-art 的方法都是在考虑如何更好地建模Context 信息,这里Context信息是指对每个要分割的pixel都去考虑其临近的pixel的特征信息,甚至更远距离的pixel的特征信息,又称为long-range dependency。

PSPNet提出了用不同尺度的pooling操作来获取不同尺度的context信息,之后在把这些信息和输入的feature map一起concatenate起来做最终的分割输出结果。在复现PSPNet的结果时候,一个很重要的技巧就是sync-bn(跨卡BN),对于语义分割这个任务而言,每张GPU上放的图片的数量都很少(1或者是2),目前主流的DeepLearning FrameWork的BN的参数计算都是单张卡计算,所以这里batch size如果上不去,BN的参数估计就不准确。PSPNet中还提出一个用deeply supervised loss来加速模型的收敛,具体操作是把resnet中layer3的特征直接拿去做分割,然后把结果和ground truth计算loss并反传。

Deeplab系列是Google出品的工作,其核心贡献是提出了ASPP module,ASPP module包含了一些不同dilation rate的卷积用来获取不同尺度的特征,其中在DeepLabV3上作者还加一个Image Pooling操作,这个操作就是PSPNet的1*1的pooling,获取整张图像的一个均值。DeeplabV3+在deeplabv3的基础上增加一个decoder,这个decoder的主要作用是把low-level的特征显示地和高层的语义分割map相互融合,进而进一步地对物体的边缘进行refine.

Non local based methods


Non-local module最初提出来是用到video action recognition的任务来,通见面视频中帧与帧之间的像素的关系,如上图所示,如果我们把其中的T设置为1,把3D的1*1*1卷积换成2D的1*1卷积,这时候Non-local module就相当于作用到2D feature map上面,其核心操作就是通过矩阵乘法建立一个(h*w, h*w)的相似度矩阵,这样每个pixel就能感知到全图的任意一个像素。

OCnet是第一个把non local的操作用到分割上,其中OCP的模块就是non-local-2D模块,Base-OC就是把经过non-local-2D作用后的特征和原始的特征结合,Pyramid-OC是把特征划分成不同的区域然后对应区域做non-local-2D,而ASP-OC是把non-local-2D的操作替换掉DeeplabV3-ASPP中的image pooling的操作。

DAnet相比与OCnet多加一路channel-wise的attention map, 即用non-local模块去估计特征channel之间的相似度,把不同的channel 权重aggregate到同一个channel。

CCNet提出了一个新的aggregation information的方式, 相比于non-local去计算(h*w,h*w)的similarity map, CCNet只用计算一个(h*w,h+w-1)的一个map,即每个点只和它所在的行和列的像素去计算一个similarity,通过两次计算,可以把全图的信息汇集到一个点,以此来代替non-local的效果。上述的三个方法全部在cityscape上进行了实验并且他们的结果也比较接近,其本质思路就是用non-local得到一个更好的全局的特征。

总结


图像语义分割是计算机视觉经典的任务,目前仍然有可以继续提升其性能的空间,最近一段也出现了用GCN(图卷积神经网络)来做scene parsing,同时也有用Auto-ML来去搜索一个适用于语义分割的网络。同时一些的新的任务比如MIT自动驾驶组提出的video semantic segmentation,要求对每一帧的图像都要进行分割,这里需要考虑视频帧与帧之间的时序信息。

本文分享自微信公众号 - 人工智能前沿讲习(AIFrontier),作者:李祥泰

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-14

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SFFAI报告 | 常建龙 :深度卷积网络中的卷积算子研究进展

    通过有效的参数共享方式,卷积神经网络可以在保证模型的性能大量地减少模型参数,并因此逐渐发展成了深度学习的一个重要分支。自从2012年以来,大量的新型卷积神经网络...

    马上科普尚尚
  • CVPR2019 | 最新高效卷积方式HetConv

    最近放出来了一篇CVPR2019论文,文章提出了一种新的高效卷积方式:HetConv,在CIFAR10、ImageNet等数据集超过了标准卷积以及DW+PW的高...

    马上科普尚尚
  • 精选论文 | 三维视觉之点云识别【附PDF下载】

    最近,由于自动驾驶,机器人等的发展,3d视觉逐渐引起了研究人员和工程师的关注。今天,两位主讲嘉宾从自己的角度为大家精选了近期处理3d 点云数据的几个代表性方法,...

    马上科普尚尚
  • 重磅!《深度学习 500 问》已更新,GitHub 标星 2.6W(附完整下载)

    几个月前,红色石头发文介绍过一份在 GitHub 上非常火爆的项目,名为:DeepLearning-500-questions,中文译名:深度学习 500 问。...

    Datawhale
  • 如何通过剃度上升实现可视化卷积核?

    为什么我的CNN网络模型训练出来的东西总是过度拟合?已经改了很多次参数都不行,到底是样本有问题还是网络模型定义有问题?问题在哪来? CNN网络模型中的每一层学习...

    AI研习社
  • 吃透空洞卷积(Dilated Convolutions)

    空洞卷积在图像分割需要增加感受野同时保持特征图的尺寸的需求中诞生,本文详细介绍了空洞卷积的诞生、原理、计算过程以及存在的两个潜在的问题,帮助大家将空洞卷积这一算...

    公众号机器学习与生成对抗网络
  • LRNNet:轻量级FCB& SVN实时语义分割

    语义分割可以看作是一种按像素分类的任务,它将特定的预定义类别分配给图像中的每个像素。该任务在自动驾驶和图像编辑等方面具有广泛的应用前景。近年来,轻量化神经网络的...

    3D视觉工坊
  • LRNNet:轻量级FCB& SVN实时语义分割

    语义分割可以看作是一种按像素分类的任务,它将特定的预定义类别分配给图像中的每个像素。该任务在自动驾驶和图像编辑等方面具有广泛的应用前景。近年来,轻量化神经网络的...

    计算机视觉
  • 【AI-1000问】为什么CNN中的卷积核半径都是奇数?

    熟悉CNN应该都知道常见的卷积核都是3*3或者5*5等,也就是奇数*奇数,似乎都没看过偶数的,这是为什么呢?

    用户1508658
  • 【AI-1000问】为什么现在大家喜欢用3*3小卷积?

    我们知道现在在构建CNN时大家喜欢用3*3的卷积,而不是早期的5*5,7*7等更大尺寸的卷积,如vgg系列网络中全部使用了3*3的卷积。那么你知道为什么这样做吗...

    用户1508658

扫码关注云+社区

领取腾讯云代金券