前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【技术综述】闲聊图像分割这件事儿

【技术综述】闲聊图像分割这件事儿

作者头像
用户1508658
发布2019-07-25 16:45:09
8210
发布2019-07-25 16:45:09
举报
文章被收录于专栏:有三AI有三AI

01闲聊往事

想当年,大学的时候。同学们进进出出图书馆,手里揣着的都是什么微积分,明朝那些事儿之类的书。而我几年下来,全是adobe photoshop,adobe premiere,adobe after effects,adobe flash,总之就是adobe全家桶。别人在网吧打游戏,我经常鼓捣七八个小时的绘声绘影,premiere,nero等等。

要不是因为穷,就去武大修动漫双学位了,日语二级都考好了,这会儿可能奔我的玄机科技去了,哪里还在这里码代码。

扯的貌似有点远,只想说和音视频早已经建立了割不断的联系。现在还鼓捣了一个摄影公众号《有三工作室》,有兴趣大家可以支持下,美女自然是少不了你们的,配套的小程序也做起来了。

回归正题。当年学Adobe,最喜欢玩的就是抠图,磁性套索一度让我不可自拔,那对我而言就是图像分割技术的启蒙了。

到后来从传统方法搞到cnn,一直未曾脱离关系。

这一次,咱不谈高深的技术,而是谈历史,谈故事,说的轻松一点,尽量短一些,毕竟长文读着累,留几手,下次说。

02没有深度学习的那些年

图像处理算法都是从传统方法开始的,我们就简单理解为非深度学习的方法吧。

图像分割是什么?如果下学术定义,就是把图像分割成想要的语义上相同的若干子区域,看上面的自动驾驶的分割任务,路是路,车是车,树是树。

这些子区域,组成图像的完备子集,相互之间不重叠。图像分割可以被看作是一个逐像素的图像分类问题

没有深度学习的那些年,也发展出了非常多的图像分割技术,下面挑重点长话短说。

2.1 边缘与阈值法

简单的边缘检测也曾被用于图像分割,但是因为要做复杂后处理以及后面和其他方法有重叠,这里就不再说了,而是从阈值法开始说。

阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值相比较。

其中,最广泛使用也最具有代表性质就是OTSU【1】方法,它是用于灰度图像分割的方法,核心思想就是使类间方差最大

这样的方法,非常简单,要求被分割的物体颜色纹理比较紧凑,类内方差小,只适合一些文本图像的处理,比如车牌,比如指纹。

如果感兴趣,有很多的综述的,大家可以去关注。虽然简单,读研时也用它水了一篇文章和专利。

2.2 区域增长,分裂

阈值法的一个硬伤是太粗暴简单,哪怕是自适应的局部阈值法,一样难逃无法分割类内方差较大的目标的宿命。它完全没有利用好像素的空间信息,导致分割结果极其容易受噪声干扰,经常出现断裂的边缘,需要后处理。

所以,区域生长法出现了,它通过一些种子点,再加上相似性准则来不断扩充区域直到达到类别的边界,这时候分割结果是连续的了。

区域分裂则是反过程,不再详述。区域增长法的佼佼者,就是分水岭算法【2】。

分水岭算法是一种基于拓扑理论的数学形态学的分割方法,将图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值称为集水盆,而集水盆的边界则是分水岭。分水岭算法有很多种实现算法,常用浸水模拟法。

分水岭算法对于弱边缘有不错的响应,因此常被用于材料图像的分割,以及产生超像素用于提高其他方法的分割效率。咱在硕士期间也与师姐鼓捣过半导体材料的分割,还不错。

说到这里,超像素也是很重要的一种方法,某种程度上也能被归为图像分割的方法。SLIC,Meanshift等都是非常经典的方法,去文【3】中做更详细解读吧。笔者在很多的实际项目中都使用过,配合下面要讲的方法一起使用,绝配。

2.3 图割

以graphcut【4】为代表的图割方法,是传统图像分割里面鲁棒性最好的方法,它是一种概率无向图模型(Probabilistic undirected graphical model),又被称Markov random field马尔可夫随机场。

Graphcut的基本思路,就是建立一张图,看下面这张图,其中以图像像素或者超像素作为图像顶点,然后优化的目标就是要找到一个切割,使得各个子图不相连从而实现分割,前提是移除边的和权重最小。

后来图割方法从MRF发展到CRF,也就是条件随机场。它通常包含两个优化目标,一个是区域的相似度,被称为区域能量项,即piecewise能量。一个是被切断边的相似度,被称为边缘能量项,即pairwise能量。它追求区域能量项的最大化以及边缘能量的最小化,也就是区域内部越相似越好,区域间相似度越低越好。

图割方法很通用,对于纹理比较复杂的图像分割效果也不错。缺点是时间复杂度和空间复杂度较高,所以通常使用超像素进行加速计算,上面的分水岭算法就可以拿来用用。

graphcut的迭代版本,也就是grabcut【5】更好用,它的基本思路是;使用混合高斯模型(Gaussian Mixture Model,GMM)替代了graphcut基于灰度的模型,初始的混合高斯模型的构建,通过用户交互来指定,只需要指定确定性的背景像素区域即可,通常是画一个框。

多年以后再看下面这张图,效果依然是惊艳的,边缘很不错。不像上面的几个方法,图割方法仍然被广泛使用,deeplab系列的前几篇文章就用到了全连接的crf,它与mrf的区别可以参考这篇文章【Discriminative fields for modeling spatial dependencies in natural images】。

图割方法很好用,是每个想做图像分割的同学必须掌握的,我从硕士论文,从第一个实习项目一直用到了现在。

2.4 轮廓模型

轮廓模型大部分人可能不知道,它的基本思想是使用连续曲线来表达目标轮廓,并定义一个能量泛函,其自变量为曲线,将分割过程转变为求解能量泛函的最小值的过程。数值实现可通过求解函数对应的欧拉(Euler-Lagrange)方程来实现。包括以snake模型为代表的参数活动轮廓模型和以水平集方法为代表的几何活动轮廓模型。

当能量达到最小时的,曲线位置就处于正确的目标轮廓。

该类分割方法具有几个显著的特点:(1)由于能量泛函是在连续状态下实现,所以最终得到的图像轮廓可以达到较高的精度;(2)通过约束目标轮廓为光滑,同时融入其它关于目标形状的先验信息,算法可以具有较强的鲁棒性;(3)使用光滑的闭合曲线表示物体的轮廓,可获取完整的轮廓,从而避免传统图像分割方法中的预/后处理过程。

不过,缺点也很明显,比较敏感,容易陷入局部极值。

下面是我的硕士论文【6】中采用水平集方法分割出的肿瘤,就是白色那一块。这个方法的数学味有点浓,考虑到咱们是闲聊,就不摆公式了,毕竟后面还有很多事。

传统方法远不止于此,但是我们应该接着说深度学习的方法了。

03有了深度学习后

大家认可的第一篇采用深度学习方法来做图像分割的是FCN【7】。分类任务到了最后,图像被表征成了一个一维的向量,而分割任务则需要恢复一张与原图大小相等的图,所以全连接自然是不行了。

不可免俗也放这张图,说的是在从最小分辨率的featuremap上采样的过程中,融合了卷积过程中同一分辨率大小的特征图。这种将网络浅层和深层信息融合的思想是分割网络的必备了,关于网络的结构,其实我们看segnet【8】会更有感觉,对称,优美,更符合我的审美。

有了FCN之后,各路方法大显神通。不同的上采样方法,带孔卷积等增加感受野的方法,图片与特征的多尺度信息融合,增加crf等后处理方法

万变不离其宗,最终分割结果的好坏往往取决于网络的表征能力,问题的简化,以及好的标注数据。刷比赛的那些技巧,我也不丰富就不多说了。

更多的细节,先按下不表,下一期专门讲,如果等不及,看文【9】,上个图先简单的爽上一爽。

04分割不仅仅是分类问题

我们前面说的,都还是将分割当成一个分类问题来解读的,就是每个像素要被归为明确的类别。

然而分割的终极目标不只这一个,比如为了做背景替换的抠图这件事。

二分类的问题,前背景能完美融合才怪,经不起仔细观察。所以,我们需要带透明度通道的分割,或者先分割出来再利用泊松融合等技术进行边缘融合

这就是一个image matting问题。image matting问题可以用一个简单的数学表达式表达,I = aF + (1-a)B,其中F是前景,B是背景,a是透明度,一张图可以看作是在透明度图像的控制下,前景和背景的线性融合。

只是,解这个问题有点病态,对于三通道的RGB图像,只有3个方程,却需要解出6个变量。所以像closed matting等方法都要做局部区域颜色不变的约束才能求出解析解。

image matting问题也从传统方法发展到了深度学习, www.alphamatting.com这里有主流方法的比较,尽管一看。

之所以大家重新想起来这档事,是因为adobe前几年搞的end to end的方案deep image matting【10】重新吊起了大家的胃口。

在这个基础上,抠脑袋做个表情包【11】也未必不可能,只是实际效果仍然欠缺。

技术当然不会止步于此,关注这个领域的朋友自然又会看到siggraph2018有人【12】出来搞事情,原来是MIT和Adobe,也是,没有Adobe谁有这能力。

我们只看文中的几个关键词,谱分割(spectral segmentation),Laplacian矩阵,soft transitions与layers,SLIC等。谱分割与laplacian矩阵是graphcut的归一化版本Normalized Cut的核心,而soft transitions与layers是photoshop最核心的思想,SLIC则是用于减少计算量的超像素方法。

再加上深度学习,彻底的牛逼图像分割方法大融合了。

终于,传统方法又和深度学习走到了一起。咱们闲聊也该结束了,下次再说技术细节。

参考文献

【1】Otsu N. A Threshold Selection Method from Gray-Level Histograms[J]. IEEE Trans.syst.man. & Cybern, 2007, 9(1):62-66.

【2】L. Vincent and P. Soille, “Watersheds in digital spaces: an efficient algorithm based on immersion simulations,” IEEE Trans. Patt. Anal. Mach. Intell., vol. 13, pp. 583-598, 1991.

【3】Stutz D, Hermans A, Leibe B. Superpixels: an evaluation of the state-of-the-art[J]. Computer Vision and Image Understanding, 2018, 166: 1-27.

【4】Boykov Y Y, Jolly M P. Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images[C]// IEEE International Conference on Computer Vision. IEEE Computer Society, 2001:105.

【5】Rother C, Kolmogorov V, Blake A. "GrabCut": interactive foreground extraction using iterated graph cuts[C]// ACM SIGGRAPH. ACM, 2004:309-314.

【6】龙鹏. MRI医学图像增强与分割新方法[D]. 中国科学院大学, 2015.

【7】Shelhamer E, Long J, Darrell T. Fully Convolutional Networks for Semantic Segmentation[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2014, 39(4):1-1.

【8】Kendall A, Badrinarayanan V, Cipolla R. Bayesian segnet: Model uncertainty in deep convolutional encoder-decoder architectures for scene understanding[J]. arXiv preprint arXiv:1511.02680, 2015.

【9】Garcia-Garcia A, Orts-Escolano S, Oprea S, et al. A review on deep learning techniques applied to semantic segmentation[J]. arXiv preprint arXiv:1704.06857, 2017.

【10】Xu N, Price B L, Cohen S, et al. Deep Image Matting[C]//CVPR. 2017, 2: 4.

【11】Zhu B, Chen Y, Wang J, et al. Fast Deep Matting for Portrait Animation on Mobile Phone[C]//Proceedings of the 2017 ACM on Multimedia Conference. ACM, 2017: 297-305.

【12】OH T A E H, MATUSIK W. Semantic Soft Segmentation[J]. 2018.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有三AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档