5.基于提高特征分辨率的分割方法
在这一个模块中我们主要给大家介绍一下基于提升特征分辨率的图像分割的方法。换一种说法其实可以说是恢复在深度卷积神经网络中下降的分辨率,从而获取更多的上下文信息。这一系列我将给大家介绍的是google提出的deeplab 。
deeplab是结合了深度卷积神经网络和概率图模型的方法,应用在语义分割的任务上,目的是做逐像素分类,其先进性体现在densecrfs(概率图模型)和dcnn的结合。是将每个像素视为crf节点,利用远程依赖关系并使用crf推理直接优化dcnn的损失函数。
在图像分割领域,fcn的一个众所周知的操作就是平滑以后再填充,就是先进行卷积再进行pooling,这样在降低图像尺寸的同时增大感受野,但是在先减小图片尺寸(卷积)再增大尺寸(上采样)的过程中一定有一些信息损失掉了,所以这里就有可以提高的空间。
接下来我要介绍的是deeplab网络的一大亮点:dilated/atrous convolution,它使用的采样方式是带有空洞的采样。在vgg16中使用不同采样率的空洞卷积,可以明确控制网络的感受野。
图a对应3x3的1-dilated conv,它和普通的卷积操作是相同的;图b对应3x3的2-dilated conv,事迹卷积核的尺寸还是3x3(红点),但是空洞为1,其感受野能够达到7x7;图c对应3x3的4-dilated conv,其感受野已经达到了15x15.写到这里相信大家已经明白,在使用空洞卷积的情况下,加大了感受野,使每个卷积输出都包含了较大范围的信息。
这样就解决了dcnn的几个关于分辨率的问题:
1)内部数据结构丢失;空间曾计划信息丢失;
2)小物体信息无法重建;
当然空洞卷积也存在一定的问题,它的问题主要体现在以下两方面: 1)网格效应
加入凯发k8国际首页登录仅仅多次叠加dilation rate 2的 3x3 的卷积核则会出现以下问题
我们发现卷积核并不连续,也就是说并不是所有的像素都用来计算了,这样会丧失信息的连续性;
2)小物体信息处理不当
我们从空洞卷积的设计背景来看可以推测出它是设计来获取long-ranged information。然而空洞步频选取得大获取只有利于大物体得分割,而对于小物体的分割可能并没有好处。所以如何处理好不同大小物体之间的关系也是设计好空洞卷积网络的关键。
6.基于特征增强的分割方法
基于特征增强的分割方法包括:提取多尺度特征或者从一系列嵌套的区域中提取特征。在图像分割的深度网络中,cnn经常应用在图像的小方块上,通常称为以每个像素为中心的固定大小的卷积核,通过观察其周围的小区域来标记每个像素的分类。在图像分割领域,能够覆盖到更大部分的上下文信息的深度网络通常在分割的结果上更加出色,当然这也伴随着更高的计算代价。多尺度特征提取的方法就由此引进。
在这一模块中我先给大家介绍一个叫做slic,全称为simple linear iterative cluster的生成超像素的算法。
首先我们要明确一个概念:啥是超像素?其实这个比较容易理解,就像上面说的“小方块”一样,我们平常处理图像的最小单位就是像素了,这就是像素级(pixel-level);而把像素级的图像划分成为区域级(district-level)的图像,把区域当成是最基本的处理单元,这就是超像素啦。
算法大致思想是这样的,将图像从rgb颜色空间转换到cie-lab颜色空间,对应每个像素的(l,a,b)颜色值和(x,y)坐标组成一个5维向量v[l, a, b, x, y],两个像素的相似性即可由它们的向量距离来度量,距离越大,相似性越小。
算法首先生成k个种子点,然后在每个种子点的周围空间里搜索距离该种子点最近的若干像素,将他们归为与该种子点一类,直到所有像素点都归类完毕。然后计算这k个超像素里所有像素点的平均向量值,重新得到k个聚类中心,然后再以这k个中心去搜索其周围与其最为相似的若干像素,所有像素都归类完后重新得到k个超像素,更新聚类中心,再次迭代,如此反复直到收敛。
有点像聚类的k-means算法,最终会得到k个超像素。
mostahabi等人提出的一种前向传播的分类方法叫做zoom-out就使用了slic的算法,它从多个不同的级别提取特征:局部级别:超像素本身;远距离级别:能够包好整个目标的区域;全局级别:整个场景。这样综合考虑多尺度的特征对于像素或者超像素的分类以及分割来说都是很有意义的。
接下来的部分我将给大家介绍另一种完整的分割网络:pspnet:pyramid scene parsing network
论文提出在场景分割是,大多数的模型会使用fcn的架构,但是fcn在场景之间的关系和全局信息的处理能力存在问题,其典型问题有:1.上下文推断能力不强;2.标签之间的关系处理不好;3.模型可能会忽略小的东西。
本文提出了一个具有层次全局优先级,包含不同子区域时间的不同尺度的信息,称之为金字塔池化模块。
该模块融合了4种不同金字塔尺度的特征,第一行红色是最粗糙的特征–全局池化生成单个bin输出,后面三行是不同尺度的池化特征。为了保证全局特征的权重,如果金字塔共有n个级别,则在每个级别后使用1×1 1×11×1的卷积将对于级别通道降为原本的1/n。再通过双线性插值获得未池化前的大小,最终concat到一起。其结构如下图:
最终结果就是,在融合不同尺度的feature后,达到了语义和细节的融合,模型的性能表现提升很大,作者在很多数据集上都做过训练,最终结果是在ms-coco数据集上预训练过的效果最好。
为了捕捉多尺度特征,高层特征包含了更多的语义和更少的位置信息。结合多分辨率图像和多尺度特征描述符的优点,在不丢失分辨率的情况下提取图像中的全局和局部信息,这样就能在一定程度上提升网络的性能。
7.使用crf/mrf的方法
首先让我们熟悉熟悉到底啥是mrf的crf的。
mrf全称是marcov random field,马尔可夫随机场,其实说起来笔者在刚读硕士的时候有一次就有同学在汇报中提到了隐马尔可夫、马尔可夫链啥的,当时还啥都不懂,小白一枚(现在是准小白hiahia),觉得马尔可夫这个名字贼帅,后来才慢慢了解什么马尔科夫链呀,马尔可夫随机场,并且在接触到图像分割了以后就对马尔科夫随机场有了更多的了解。
mrf其实是一种基于统计的图像分割算法,马尔可夫模型是指一组事件的集合,在这个集合中,事件逐个发生,并且下一刻事件的发生只由当前发生的事件决定,而与再之前的状态没有关系。而马尔可夫随机场,就是具有马尔可夫模型特性的随机场,就是场中任何区域都只与其临近区域相关,与其他地方的区域无关,那么这些区域里元素(图像中可以是像素)的集合就是一个马尔可夫随机场。
crf的全称是conditional random field,条件随机场其实是一种特殊的马尔可夫随机场,只不过是它是一种给定了一组输入随机变量x的条件下另一组输出随机变量y的马尔可夫随机场,它的特点是埃及设输出随机变量构成马尔可夫随机场,可以看作是最大熵马尔可夫模型在标注问题上的推广。
在图像分割领域,运用crf比较出名的一个模型就是全连接条件随机场(densecrf),接下来我们将花费一些篇幅来简单介绍一下。
crf在运行中会有一个问题就是它只对相邻节点进行操作,这样会损失一些上下文信息,而全连接条件随机场是对所有节点进行操作,这样就能获取尽可能多的临近点信息,从而获得更加精准的分割结果。
在fully connected crf中,吉布斯能量可以写作:
我们重点关注二元部分:
其中k(m)为高斯核,写作:
该模型的一元势能包含了图像的形状,纹理,颜色和位置,二元势能使用了对比度敏感的的双核势能,crf的二元势函数一般是描述像素点与像素点之间的关系,鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签,而这个“距离”的定义与颜色值和实际相对距离有关,这样crf能够使图像尽量在边界处分割。全连接crf模型的不同就在于其二元势函数描述的是每一个像素与其他所有像素的关系,使用该模型在图像中的所有像素对上建立点对势能从而实现极大地细化和分割。
在分割结果上我们可以看看如下的结果图:
可以看到它在精细边缘的分割比平常的分割方法要出色得多,而且文章中使用了另一种优化算法,使得本来需要及其大量运算的全连接条件随机场也能在很短的时间里给出不错的分割结果。
至于其优缺点,我觉得可以总结为以下几方面:
在精细部位的分割非常优秀;
充分考虑了像素点或者图片区域之间的上下文关系;
在粗略的分割中可能会消耗不必要的算力;
可以用来恢复细致的局部结构,但是相应的需要较高的代价。
ok,那么本次的推送就到这里结束啦,本文的主要内容是对图像分割的算法进行一个简单的分类和介绍。对于各位想要深入研究的看官是非常非常重要的资源:大佬们经常看一方面可以了解算法的不足并在此基础上做出改进;萌新们可以通过阅读一篇好的入门某一个学科。
上一篇:“原始人饮食”可能并不健康