SLIC Superpixels Compared toState-of-the-Art Superpixel Methods
SLIC超像素与前沿超像素方法的比较
摘要:近年来,计算机视觉应用开始日渐地依赖超像素。然而,一个好的超像素算法是什么样的并不明朗。为了了解现有方法的优缺点,我们实证比较五个最先进超像素算法在边缘贴合、速率、内存效率和对图像分割效果影响上的性能。然后,我们介绍一个新的超像素算法——简单线性迭代聚类(SLIC),它改进k-means聚类方法,有效的生成超像素。虽然SLIC方法简单,但是它在边缘贴合上比先前的方法都要好。而且,它的速度更快,节省内存,提高了分割效果,经过简单的扩展就可以用来生成超体素。
关键词:超像素,分割,聚类,k-means
1 介绍
超像素算法将图像分组为有感知意义的原子区域,来代替死板的像素网格(图1)。超像素算法捕捉图像冗余,为计算图像特征提供方便,给后续处理任务减小了计算复杂度。它已经成为计算机视觉领域重要的一个模块,使用在例如:PASCAL VOC挑战中的多目标对象分割、深度估计、图像分割、人体模型估计,目标定位等领域。
图1 使用SLIC分别以64、256、1024像素大小提取超像素的图像分割
目前已经有许多生成超像素的方法,每一个方法都有他的优缺点,这些方法一般都适合一个特定的应用。例如,如果边缘贴合是最重要的要素,那么基于图的方法【8】就是最理想的选择。然而,如果超像素要用来生成一个图,一个用来产生规则晶格的方法就比较适合,比如文章【23】中的方法。虽然定义一个适合所有应用的完美方法很困难,但是我们认为下面的这些性能是令人满意的:
1. 超像素应该很好的贴合图像边缘。
2. 考虑到使用超像素是为了减小计算复杂度而进行的一个预处理步骤,超像素生成应该是快速的、存储高效的、易使用的。
3. 在分割中使用超像素,应该提高分割速度和分割质量。
因此,我们进行了五种超像素方法【8】【23】【26】【25】【15】的实证比较,评估它们的运行速度,贴合边缘的性能和分割性能的效果。我们同样为其他超像素方法提供了一个定性的评论。我们的结论是没有一种现存的方法在各方面令人满意。
为了解决这个问题,我们提出了一个新的超像素算法:简单线性迭代聚类。此算法改进k-means聚类,使用与【30】中相似的方法生成超像素。虽然算法简单,但是可以看到SLIC符合最先进的边缘贴合标准——伯克利基准,在PASCAL和MSRC数据集上的分割结果好于所有的现有方法。此外,他比现有的方法速度更快,存储也更高效。除过这些可以计量的优势,SLIC的使用也很方便,而且提供可变的紧密度和超像素数量,简单扩展就可以用在高维度,而且免费开放。
2 现存的超像素方法
生成超像素的方法可分为基于图和基于梯度上升两种。下面,我们讨论每种方法中最受欢迎的超像素方法,其中包含一些刚开始并不是为生成超像素而产生的算法。表1提供了我们讨论的方法的定性和定量的总结,以及它们的相对性能。
表1 现存的超像素算法总结
2.1 基于图的算法
基于图的方法将每一个像素看作图中的节点来生成超像素。两个相邻节点之间边的权重成比例。利用求一个定义在图上的成本函数的最小值来得到超像素 。
NC05.标准化分割算法使用一个定义在图上的成本函数,通过形状和纹理因素,在分割边缘时最小化成本函数来分组像素。此方法可以产生规则的、视觉上令人满意的超像素。然而,边缘贴合非常差,而且是所有方法中最慢的(特别是在处理大图像时)。经过加速的算法【5】依然效果不理想。NC05的复杂度为 ,其中N是图像中像素的数量。
GS04. Felzenszwalb和Huttenlocher【8】提出了一种供选择的基于图的方法,此方法已经应用在超像素生成中。算法采用最短生成树的形式来聚类像素,每一个超像素就是一个包含像素组的最小生成树。GS04在实际使用中边缘贴合较好,但是,产生的超像素大小和形状不规则。复杂度为 。然而,它没有提供对超像素数目和紧密度的控制。
SL08. Moore等提出一个生成超像素的方法——通过寻找最佳垂直或水平路径来切分图像【21】。最佳路径通过类似线切割【1】的图分割方法寻找。作者描述的SL08的复杂度为 ,但这里面还没有包括预计算边缘图的时间消耗,这个过程对输出结果的质量和速度有很大的影响。
GCa10和GCb10. 在【26】中,Veksler等用一个全局最佳的方法,类似于【14】中的纹理综合。通过压合属于同一重叠区域的像素点来获取超像素。作者提供了他们算法的两个变体,一个用来产生紧凑的超像素(GCa10),一个用来产生恒强度的超像素(GCb10)。
2.2 基于梯度上升的算法
从一个初始的粗糙聚类开始,梯度上升方法每次迭代得到一个更好的分割,直到收敛为止。
MS02. 模式搜索算法Mean shift是定位局部最大密度的迭代算法,在【4】中,它被用来寻找图像中亮度和色彩的特征空间。像素被用相同的模式聚合从而产生超像素。MS02是一个过时的方法,它生成的超像素大小和形状都不规则。 的复杂度使得它相对缓慢,而且它不提供对超像素数量,大小,紧密度的直接控制。
QS08. Quick-shift也是模式搜索算法。它使用medoid变换来初始化分割。然后,将特征空间的点移动到Parzen密度估计最大的邻域。虽然算法在边缘贴合上比较好,但是QS08非常慢,它的复杂度是 ,其中 是一个较小的常数。QS08没有对超像素的数量和大小提供明确的控制。超像素的数量和大小等。早先的工作,如目标定位和运动分割中有使用QS08。
WS91. 分水岭算法在局部最小的图像平面进行梯度上升,来获得分水岭——分离盆地的线。获得的超像素一般非常不规则,在边缘贴合上也不理想。【28】中的方法相对而言比较快(复杂度为 ),但是并没有对超像素的数量和紧密度提供控制。
TP09. 通过逐步扩张给定的种子数生成超像素,算法效率基于几何增长【15】。几何增长依赖于局部图像梯度,目的是分散地布置超像素。不像WS91,TP09生成超像素时可以控制大小,紧密度和边缘贴合性。TP09算法复杂度易变,但在实际情况中,与作者描述的一样,它的复杂度近似于【15】。然而,它的速度还是属于最慢的一类,而且在边缘贴合上相对较差。
3 SLIC超像素
我们提出一个新的方法用来生成超像素,比目前的所有方法都快,内存使用更高效,边缘贴合更好,提高了图像分割的性能。简单线性迭代聚类是通过对k-means方法的改进来生成超像素,它与k-means的不同在于:
1. 通过根据超像素大小限制搜索区域,将距离计算优化到最佳。这个方法将计算复杂度降到了像素数量 的线性级别,而且和超像素的个数没有关系。
2. 使用一个结合颜色和空间距离的距离测量方法,来同时控制超像素的大小和紧密度。
SLIC方法和文章【30】中深度估计的一个预处理过程类似,这个预处理方法没有在超像素生成中开发过。
3.1 算法
SLIC非常容易使用和理解。默认的,算法中只有一个参数 ,代表期待分割的超像素数量。对于在CIELAB颜色空间上的彩色图像,聚类过程开始于一个初始化过程——在每一个大小为 个像素的的规则网格中,初始化 个聚类中心 。生成粗糙的等大小的超像素之间的距离为 。
然后,聚类中心被移动到 领域中梯度最小的像素点。这样做是为了避免在一个边界或者噪声点聚类超像素的可能性。
下面,在分配过程中,每一个像素 都要与搜索区域中距离最近的聚类中心建立联系,如图2所示。这个搜索区域是提高算法速度的关键,因为限制搜索区域意味着减少了距离计算的数量。而不是,不顾及深层含义的将每个像素与所有的聚类中心进行对比。像素和聚类中心的距离 的计算在3.2节中阐述。因为我们期望的超像素是在一个 的区域,所以我们在聚类中心 的邻域中寻找相似的像素点。
图2缩小超像素搜索区域
在每一个像素都和聚类中心联系起来之后,接着进行一个新的更新步骤——根据属于一个聚类中心的所有像素点的矢量 来调节聚类中心的位置。 规范用来计算新的聚类中心和先前聚类中心之间的残差 。这个过程可以一直被重复直到残差 收敛,但是我们发现10次迭代足以满足大多数图像,所以本文中的所有结果都是按照这个标准。最后,一个后处理过程用来把分配后不连通的像素点连接到离它们最近的超像素上。整个算法总结在算法1中。
算法 1.SLIC 超像素分割
/∗初始化∗/
通过抽样一个规则网格中的像素,初始化聚类中心 。
将聚类中心移动到一个3×3领域中梯度最小的点。
对每一个像素i设置标签l(i)=-1。
对每一个像素i设置标签d(i)=∞。
repeat
/∗分配∗/
foreach cluster center Ck do
foreach pixel i in a 2S×2S region around Ck do
Computethe distance D between Ck and i.
ifD<d(i) then
setd(i)=D
setl(i)=k
end if
end for
end for
/∗更新∗/
计算新的聚类中心
计算残差E.
untilE≤threshold
3.2 距离测度
SLIC超像素符合 颜色空间产生聚类中心。这带来了一个距离测度 的定义问题。 在算法1中,用来计算像素和聚类中心之间的距离。一个像素的颜色在CIELAB颜色空间中用 代表,取值范围已知。像素的位置信息用 确定,它的取值范围根据图像大小的不同而变化。
在 空间上,简单地定义 为五维欧氏距离会导致不同大小超像素距离计算的不一致。对于较大的超像素,空间距离比颜色距离重要,应该给予更大的权重。这就使得超像素在边缘贴合上不是很好。较小的超像素正好相反。
为了将两种距离结合到一个单独的测量方法中,必须分别用它们在一个聚类中心的最大距离 和 将其标准化。这样做之后, 被写为
最大的空间距离根据我们给定的聚类中心之间的距离确定, 。确定最大的颜色距离不是很容易,因为颜色距离会根据图像的不同而变化。我们使用一个常数来代替 ,来避免这个问题,那么(1)就变为
实际中我们使用简化的距离测度如下:
由于通过这个方式来定义 , 可以允许我们调整颜色空间和距离空间的比重。当 比较大时,空间距离比重更大,产生的超像素紧密度更好(比如,它们的周长更小)。当 比较小时,生成的超像素更加贴合边缘,但是大小和形状也更不规则。使用CIELAB空间时, 的取值范围在 之间。
方程(2)可以调整用在灰度图像上,通过设置
通过将深度维加入到空间测量中,公式(3)同样可以拓展到3维超体素上,如图3的描述。
图3 对一个视频序列的SLIC超体素计算
3.3 后处理
和一些其他的超像素算法一样【8】,SLIC没有明确的强制连通性。在聚类程序的最后,一些聚类中心中会存在不连通的孤立像素点。为了修正这个问题,使用一个连通算法,为每一个像素分配一个标签将其连接到最近的聚类中心。
3.4 复杂度
通过在聚类程序中将查找局部化,SLIC避免了大量的冗余计算。在实际中,一个像素最多和8个相邻的聚类中心做比较,这意味着SLIC的复杂度是 的。相比较而言,k-means算法的复杂度理论上是【17】,实际中的复杂度是【6】,其中 是算法的迭代次数。虽然有一些方案通过主要部分取样【27】、随机取样【13】、局部群交换【12】或者通过设置限定【6】,来减小k-means的复杂度,但在本质上并没有什么区别。而SLIC是特别针对超像素聚类而设计。最后,不用于大多数对k-means改进和上述的方法,SLIC的计算复杂度与图像的像素总数线性关系,但与超像素个数 无关。
4 与前沿方法的比较
通过使用公开可用的源码,我们把SLIC和五种最前沿的超像素方法进行了一个定量的对比。这些算法包括GS04,NC05,TP09,QS09以及文章【26】中提出的算法的两个版本GCa10和GCb10。每一种方法的超像素分割例子在图7中展示。
4.1 边缘贴合
可论证地,超像素方法最重要的一个性质就是贴合边缘的性能。边缘召回率和欠分割错误率是检测边缘贴合的标准方法【15】【16】。在图4a和4b中,使用Berkeley数据集【20】,对SLIC,GS04,NC05,TP09,QS09和GC10进行了比较。Berkeley数据集包含300幅321*481的图像,以及对图像进行手工标注的分割结果。
图4 边缘贴合和分割速度
边缘召回率指,至少落在超像素边缘2个像素范围内的像素占真值边缘的比例。每一个算法针对超像素数量增加的边缘召回率都在图4a中做出了标注,高的边缘召回率表明极少的正确边缘没被捕捉到。SLIC和GS04超像素生成方法在边缘召回率上表现最好。如果缩小SLIC的紧密度参数 到10以下,SLIC的性能会比GS04更好。
展示在图4b中的欠分割错误率,是另一种边缘贴合的检测标准。给定一个理想的分割区域 ,超像素集合应该覆盖它。 代表 中有多少像素“溢出”了 的边缘。如果 代表一个以像素为单位的分割的大小, 是理想的分割数量, 是 中溢出 的像素的最小数量,则欠分割错误率写作:
在我们的实验中, 被设置为五个百分比。不能贴合真值边界的超像素的欠分割错误率 表现为一个较高的值。
4.2 运算和内存效率
超像素经常被用来代替像素网格来帮助加速其他算法。因此,在第一时间生成超像素非常重要。在图4c中,我们比较了多种算法在生成超像素上的时间消耗,使用的Intel双核处理器频率为2.26GHz,运算内存为2GB。因为SLIC的复杂度为 ,所以它在这些算法中最快,而且随着图像的增大,它的优势更加明显,虽然GS04 的复杂度有一定的竞争力。其余的方法的运算速度差距就比较大了。
为了处理大型图像,超像素算法的内存效率也比较重要。SLIC是其中最高效的方法,它仅仅需要 个浮点型数据,来存储每个像素到聚类中心的距离。其它的算法的内存占用则比较高:GS04和GC10需要 个浮点型数据来存储边缘权重和四连通的阈值(或者需要 来存储八连通的阈值)。
4.3 分割性能
超像素通常用作分割算法的预处理步骤。一个好的超像素算法应该提高使用它的分割算法的性能。我们在MSRC数据集【24】上对SLIC,GS04,NC05,TP09,QS09和GC10的分割结果做了对比。这些结果是通过调用【11】中的方法得到,这个方法使用超像素计算颜色,纹理,几何和位置特性。然后训练分类器识别21个对象类别,学习CRF模型。表1中的结果显示SLIC超像素得到了最好的结果。使用【11】中的方法,与NC05相比,SLIC缩短了了运算时间。使用SLIC得到的图像分割结果如图5所示。
图5 多类分割
我们还在PASCAL VOC 2010【7】数据集上采用【10】中的进行了测试。结果如表2所示。SLIC在推进分割精度上好于QS09,而且把运算时间减小了一个数量级。
表2 在PASCALVOC 2010数据集上的多类对象分割
4.4 讨论
除了上面讨论的性能外,其他一些因素也应该考虑作为超像素算法的衡量标准。第一个应该考虑的就是易用性。带有很难调整的参数的超像素方法会导致时间浪费和低性能。另外一个要考虑的就是是否能指定超像素的数量,不是所有的超像素方法都能做到这一点。最后,控制超像素的紧密度也非常重要。紧凑规整的超像素的边界大小和邻域都容易用图来表达,特征也更容易提取。然而,紧密度和边缘贴合之间是矛盾的,如何权衡很重要。下面,我们讨论每一种算法在边缘贴合,速度,内存效率,分割质量,参数调谐,超像素数量控制,以及超像素紧密度控制方面的性能。
TP09.虽然TP09可以生成紧凑的、一致性的超像素,但是它在边缘召回率和欠分割错误率上面也表现最差。TP09同样面临运行时间长,分割结果差的问题。同样的,NC05也是最慢的算法中的一个;在处理2048*1536大小的图像时,它消耗的时间是800秒,是SLIC的100倍。另一方面,TP09只有一个调整超像素数量的参数。
NC05.仅仅针对TP09有一个标准化分割的改进。NC05生成的超像素比TP09的更加紧凑,使得它在基于图的应用中备受瞩目。然而,在边缘贴合上非常差,边缘召回率中排第六,欠分割错误率中排第五。尽管这样,它生成的超像素质量却惊人的高。但是,算法的运行时间过于缓慢,在进行2048*1536大小图像处理时产生了内存溢出的错误。
GCa10和GCb10.虽然它们的设计不一样,但这两个方法的性能相似。GCb10的“紧凑“超像素比GCa10更紧凑,但却不如TP09和NC05。对于边缘召回率,GCa10和GCb10排名中等,分别是第五和第四。欠分割错误率有些许提高,分别是第三和第四。虽然GCa10和GCb10的运算时间快于NC05和TP09,但它们的运行时间仍然限制了它们的使用(分别需要235秒和315秒),而且分割性能很差。GC10有三个参数可供调节,包含一个很难设置的碎片大小的参数。GC10可以控制超像素的数量,也可以用来生成超体素。
QS09.此算法在欠分割错误率和边缘召回率上表现很好,分别排在第二而第三。然而,QS09的分割性能较差,一些其他的限制使得它成为了一个不理想的选择。他运算速度缓慢(181秒),需要调整一些不直观的参数,而且没有提供对超像素紧密度和数量的控制。最后,它的源码不能保证超像素的连通性,这在后续的处理程序中是一个严重的问题。
GS04.对于图像边缘贴合的非常好,然而超像素非常的不规则。它在边缘召回率上胜过SLIC排在第一位。分割速度也是第二,分割2048*1536大小的图像需要18.19秒。然而,GS04的分割性能和欠分割错误率相对较差。由于它过大而且不规则的超像素,他并不适合一些图像分割方法,比如文章【11】中的方法。
SLIC.在本文讨论的所有超像素方法中,SLIC明显在各方面都是最好的。他是所有方法中最快的,分割一个2048*1536大小的图像只需要14.94秒,内存效率也最高。在边缘贴合上效果最好,欠分割错误率在所有的方法中排在第一位;边缘召回率落于GS04之后排在第二,但这也仅仅是由于细小的边缘(通过调整 ,SLIC可以排在第一)。当在图像分割中使用时,在MSRC和PASCAL数据集上,SLIC展示出最佳的促进效果。SLIC使用方便,只有一个参数来调节超像素的数量,它也是少数能生成超体素的方法之一。最后,在现有的方法中,SLIC在权衡超像素紧密度和边缘贴合上是独一无二的,调节 就可以来控制两者的权重。
4.5 更复杂的距离测度
读者或许会思考——考虑到第3节简单的距离测度方法,更复杂的方法是否能提高SLIC算法的性能。我们使用一个自适应标准化的距离测度(ASLIC)和一个测地线的的距离测度(GSLIC)替换公式(3)中的距离参数,以此研究这个问题。令人惊讶的是,公式(3)中使用的简单的距离测度,在速度,内存和边缘贴合上竟然优于ASLIC和GSLIC。
ASLIC在每一个聚类中自适应的标准化颜色和空间。如在3.2节描述的, 和 被假定为一个聚类中的最大空间距离和最大颜色距离。这两个常数被用来标准化颜色和空间距离,所以它们可以被合并到一个距离测度的函数中。替代使用常数,ASLIC使用每一个聚类自己的最大颜色 和空间 距离,自动地标准化每一个距离参数。因此,距离测度变为
正如前面所述,常数因子被使用在第一次迭代中,但是此后,算法对每一个聚类依然保持原先的最大距离。这样做的好处是超像素的紧密度更加一致,而且不需要重复的设置 。不过,这样做在边缘召回率上就要付出代价,如图4a。
GSLIC用一个测地线的距离替代了公式(3)的距离。两个像素 和 之间,无符号的测地线的距离定义为
表示 和 之间所有的路径, 是到路径 的连接代价,定义为
是在像素 和 之间,CIELAB颜色矢量上的欧氏距离。这个方法保证了 平面上的连通性,消除了后处理步骤。然而,计算耗费更高,而且边缘贴合性能受损,在图4a中可以很明显看到。
5生物医学的应用
大多数流行的基于图的分割方法比如图切割【3】,在增加越来越多的节点时,代价变得很大,限制了实际使用中图像的大小。对于一些应用,比如对电子显微镜图像的线粒体分割,图像比较大,但是缩小图像分辨率是不可取的。在这样的案例中,采用基于图的像素网格分割会非常棘手。在【18】中,SLIC超像素大幅减小了图的复杂度,使得分割易于处理。从【18】中被分割的线粒体如图6a和6b所示。
图6 使用SLIC在2维和3维图像上进行线粒体分割
图7 不同方法生成的超像素的视觉比较
在【19】中,这个方法被拓展到包含数亿立体像素的3维图像堆中。只有这种精简的算法,才可以在不缩减图大小的情况下处理如此大数量的数据。SLIC超体素将内存需求和计算复杂度降低了超过3个数量级,比规则的立方块性能高出许多,如图6c,6d和6e所示。
6 结论
超像素已经成为了视觉领域的一个基本工具,在本文中我们为读者彻底分析了现代超像素技术的性能。我们展示了最前沿的五种超像素算法的比较结果。比较内容主要集中在它们作为分割框架中一个预处理过程时,在边缘贴合、分割速度、性能方面的优劣。除此之外,我们还提出了一个新的生成超像素的方法——SLIC,它的性能胜过近期发表的所有超像素算法。
尽管我们的实验已经很彻底,但是还有一点提示——某些超像素方法,具体来说是GC10和TP09,它们没有考虑其它算法都包含的颜色信息。这对它们的性能会有不利的影响。