APP下载

基于区域特征聚类的RGBD显著性物体检测

2019-05-05蒲宝明李相泽常战国

小型微型计算机系统 2019年4期
关键词:显著性聚类像素

王 帅,蒲宝明,李相泽,杨 朔,常战国

1(中国科学院大学,北京 100039)2(中国科学院 沈阳计算技术研究所,沈阳 110168)3(东北大学 计算机科学与工程学院,沈阳 110819)

1 引 言

显著性检测是计算机视觉领域一个基础性的研究问题,通过模拟人的视觉注意力系统来突出图片中显著的区域或者物体.在过去的几十年中,显著性检测吸引了很多的研究人员.它在很多的图像处理问题中作为预处理中的重要一步.在模式识别和图像处理中有很多的应用场景,例如:物体检测、物体识别、物体分割、运动检测、图像匹配、图像视频压缩以及视觉追踪等[1].在绝大多数的应用中都是对2D图片进行处理,但是显著性检测在3D视觉中也有相应的应用场景,其中也需要对2D图像进行分析.因此二维图像的显著性检测就尤为重要.

生物学家证明与周围环境有很好的区分度的视觉区域更会吸引人的注意,很多的算法都是在根据这个原理来解决显著性检测问题,其中有根据低级特征计算区域对比度和根据背景特征计算区域对比度来得到显著性图.但是这些模型会在背景和物体没有明显的对比度的情况下就经常失效.因此引入深度信息就显得十分有用.深度信息在人的视觉系统中起到了很大的作用,但是传统的模型没有引入深度信息,只是使用了RGB图像的信息.同时大量的3-D传感器能够很方便的获取到RGB-D图像.因此需把深度信息融入到显著性检测中来研究高效的显著性检测算法.目前已经有一些研究使用的深度信息[3-8],但是还存在一些问题.例如,使用单一的深度图信息、使用低级的RGB特征和深度特征.还有一种使用卷积神经网络实现的显著性检测方法[9],这种方法计算量太大难以在一些嵌入式应用中使用.本文就是基于这种背景下提出了基于RGB-D图像的循环区域聚类显著性物体检测算法.

图1 算法流程图Fig.1 Flow diagram of algorithm

本文根据在RGBD显著性检测领域的问题,提出一种基于区域特征聚类[10]的RGBD显著性物体检测算法.图1显示了本算法的流程图.首先使用gRGBDSLIC超像素算法对图片分割.然后提取分割后每个区域的特征构成特征向量.使用十个不同带宽的MeanShift算法对特征向量聚类得到聚类的图.再对十个聚类后的图进行显著性计算.通过神经网络把十个显著性图合并成一个显著性图.然后把该显著性图作为一个新特征加到上面提到在特征向量中.继续计算显著性图,直道循环达到十次.输出最终的显著性图.本文最后通过和七个算法进行对比,显示出本算法有更好的性能.

2 相关研究

本文中把显著性检测分为三类:自底向上的RGB显著性检测、自顶向下的RGB显著性检测以及基于RGBD的显著性检测.

2.1 自底向上的RGB显著性检测

这种方法主要考虑了低等级的视觉特征,通过研究人类视觉系统的原理提取的一些特征[11-14]以及一些传统的处理图像的技术提取出来的特征[15-19].视觉系统更容易被高对比度的图像刺激[19],基于此在文献[11]中提出了基于全局对比度的显著性区域检测,通过计算当前区域和其他区域的对比度得到显著性图.人们拍照的时候更喜欢把重要的物体放在图片中间,文献[12]提出了一种结合小区域与边界关系和对比度的算法.结合传统处理图像的技术和一些区域特征,文献[20]提出了一种多特征自适应融合的显著性检测方法.

2.2 自顶向下的RGB显著性检测

随着深度学习技术的发展,越来越多的研究人员提出了更种各样的深度学习框架来进行显著性检测.同时也取得了更好的检测效果.例如:文献[9]首次把CNN引入到显著性检测中.首先对图像进行多尺度超像素切割,得到三个序列(超像素序列,一个空间核矩阵.一个范围核矩阵).然后将三个序列送入三个卷积网络中进行训练,实现CNN的多通道输入.得到三个显著性图.最后把三个显著性图合并到一起得到最终的显著性图.文献[21]提出一个端到端的深度对比网络.网络包括两个部分,一个像素级全卷积流和一个图像分割空间池化流.第一步产生一个显著图,第二步产生 分割特征和显著性间断点.最后使用一个全连接CRF对两个显著性图合并.文献[22]提出了一种编码全卷积神经网络和一个相应的解码全连接神经网络来进行显著性物体检测.

2.3 基于RGBD的显著性检测

和RGB显著性检测相比,研究RGB-D显著性检测的研究人员较少.在文献[3]中,提出了使用颜色和深度信息来计算显著性.文献[8]公开了基于RGB-D进行显著性检测的数据集,并且提出了一种简单的框架来进行显著性检测.文献[4]提出了一种各向异性中心环绕差分方法来对深度图进行显著性检测.文献[23]提出了一种结合进化策略来进行显著性检测的方法.

3 算 法

3.1 基于SLIC算法的RGBD图像超像素分割

传统的基于像素的算法计算复杂、忽略区域特征,本文中算法首先使用超像素算法把图片分割成300个超像素.经典的SLIC[24]算法使用灰度或者Lab图像进行超像素分割,本文在该算法中引入了图像的深度信息[25].通过引入dddg使得图像的深度信息也用于超像素计算.分割效果更好.两个像素点的距离定义为D:

(1)

其中,dc是两个像素Lab颜色空间的欧式距离,dddg是两个像素深度幅度d和梯度方向ddgrad的欧式距离,ds是两个像素位置的欧式距离.它们的计算公式如下:

(2)

(3)

(4)

在使用RGBDSLIC算法时发现其速度比较慢,500×400的图像需要0.23秒,像素更大的计算需要更多的时间.为了加快其运行速度使用了文献[26]中gSLICr的方法,该方法中使用CUDA来进行计算超像素,计算时间提高了70倍左右.经过实际对比,引入GPU计算的gRGBDSLIC比只使用CPU计算的算法快50倍左右.

图2是分别使用SLIC和RGBDSLIC算法对原始图像进行分割的结果.从图2中可以看出,RGBDSLIC算法在两个马腿交叉的地方分割的更好.这是因为深度图信息在这个部位起到了一定的作用.会把两个腿交叉的地方合并到一个超像素中.而不是SLIC算法中该处的右前大腿和背景在一个超像素中.

3.2 RGBD特征提取

算法第二步是提取第一部中分割图像I得到的各个超像素{S1,S2,…,SN}的特征,其中包括:CIELab三个颜色通道、图片深度信息、两个深度图像的区域特征以及两个RGB图像的区域特征图.以上特征组成了四个低级特征{fl,fa,fb,fD}以及四个高级特征图{cGCD,cBCD,cGC,cBC}.同时考虑了颜色信息、亮度信息、深度信息、区域对比度信息、以及背景对比度信息.使用这些信息能够更好的区分背景和显著性物体.下一步的聚类算法能够更好的把背景聚类到一起、显著性物体聚类到一起.

图2 SLIC算法和RGBDSLIC算法对比图Fig.2 SLIC algorithm and RGBDSLIC algorithm comparison chart

低级特征通过对每个超像素SiLab_D四个通道的值求平均,得到了{fl,fa,fb,fD}.四个高级特征是全局对比度和背景对比度方法得到的.对比度特征反映了物体和背景的显著性,它能够很好的区分相同的区域和不同的区域.本文中使用这八个特征作为聚类使用的特征向量.全局对比度特征是由文献[11]提出的.对于超像素Sj,计算其和其他超像素Si的欧式距离D.公式如下:

(5)

(6)

其中,ω(Si)是超像素Si中像素的个数,用来强调大的超像素.cGC是RGB图像的全局对比度特征,cGCD是深度图像的全局对比度特征.

背景对比度方法由文献[12]提出.该算法通过引入边界信息,更能够突出中心的物体.计算方法如下:

(7)

(8)

通过以上步骤得到了每个超像素Si的八个特征值{fl,fa,fb,fD,cGCD,cBCD,cGC,cBC}.

3.3 Mean Shift聚类

Mean Shift算法[27]是一种无参数的聚类算法,使用时只需要提供控制核函数尺度的参数即可.而不需要提供聚类个数等参数.由于算法复杂度为O(N2)所以本文中选取300个超像素来进行计算.这样比直接使用原图减少了大量的计算消耗.从而加快运算速度.在图像聚类中还需要提供超像素的位置特征{x,y}.这样和上一节中的八个特征就组成了MeanShift算法的特征向量{fl,fa,fb,fD,cGCD,cBCD,cGC,cBC,x,y}.使用的时候对其进行归一化.

传统的Mean Shift图像分割算法使用的是一维灰度或者三维RGB信息来结合位置信息进行计算的.本文中是使用两个位置特征和八个超像素特征来进行多元核Mean Shift聚类的.其核函数是:

(9)

(10)

hS、hr是核函数带宽.通过控制这两个参数的来获取不同带宽下的聚类结果.hS、hr计算方法使用文献[10]获得.分别取10个值,从而获得不同带宽核函数的聚类图.hS、hr的值越小聚类出来的种类越多能够突出小物体,hS、hr值越大聚类出来的种类越少能够突出大物体.并且经过实验验证10组值正好能从大物体到小物体都能够覆盖,增强算法性能.组数多了增加计算量,组数少了不能够广泛的覆盖大小物体.10组值聚类效果如图3所示.

图3 MeanShift聚类结果图Fig.3 MeanShift clustering result graph

3.4 EBC计算每个聚类的显著图

由上一节得到的聚类图根据其显著性物体与边界的关系,本文中使用背景连通方法Boundary Connectivity(BC)[12]来计算每个超像素的显著性值.又因为空间位置对显著性物体有很大的影响,在此基础上引入了一个新的空间权重来适应上一步得到的聚类图,进而计算显著性图.改进的BC方法[10]公式如下:

(11)

十个经过不同核带宽聚类得到的图像经过公式(11)得到EBC的值,然后通过公式(12)计算显著性值:

(12)

通过以上步骤得到了十个显著性图,本文通过带有一个隐含层的神经网络训练得到权重把这十个显著性图合并为一个显著性图.每个显著性图的第i个像素的值组成一个向量作为神经网络的输入.经过一个十个节点的隐含层得到合并后的显著性图.神经网络训练权重使用的是不进行3.5节循环计算的显著性图.图4左边是是个不同带宽MeanShift算法聚类图计算得到的显著性图.右边是通过神经网络把十个显著性图合成一个显著性图的结果.可以看到中间的马和左上角的房子都被明显的显示出来.

图4 左边:10个不同带宽聚类得到的显著性图,右边:把左边合成的显著性图Fig.4 Left:significant plots with 10 different bandwidth clusters,right:significant plots with left-side synthesis

3.5 循环

为了进一步突出显著性物体,提高算法的性能.把上一节中最后得到的显著性图使用3.1节中的超像素分割结果计算每个超像素区域的平均显著性值,来作为3.3节中Mean Shift算法的一个新的特征值,加入到已有的特征中得到新的特征向量{fl,fa,fb,fD,cGCD,cBCD,cGC,cBC,Sc,x,y}.重复3.3、3.4中的过程10次.经过实验验证十次重复过程能够很好的突出显著性物体,同时由于增加次数会使得计算量增加,因此最后选择十次来得到最终的显著性图.有些比较明显的显著性物体在循环7次的时候已经能很好的区分出来显著性物体,但是为了能够适应各种环境下的显著性物体检测因此选了绝大部分物体都能够很好的凸显的非常好的次数.图5展示了循环3次、6次以及最后得到的显著性图.可以看到通过循环的方法,使得显著性物体更加突出.可以更加方便的得到最终的二值化的显著性图.

图5 左:循环3次结果 中:循环6次结果 右:循环10次结果,即最终的显著性图Fig.5 Left:cycle 3 times results:cycle 6 times results right:loop 10 times,the final saliency map

4 实验结果

本文中测试的系统环境为:Windows 10,软件环境为Matlab 2017b.计算机CPU为intel i7-7700HQ 2.8Ghz.GPU为GTX 1060 Max-Q.为了评价本文提出的显著性物体检测算法,本文选择了6个主流的方法进行比较,它们分别是PCA-2013[2]算法、RBD-2014[12]算法、RC-2015[11]算法、 MB+-2015[19]算法、 MST-2016[18]算法以及DRFI*-2017[20]算法.图6是本文算法与以上六个算法的显著性图对比.

图6 算法对比图Fig.6 Algorithm comparison chart

图6从左到右分别是:原图、深度图、PCA算法结果、RBD算法结果、RC算法结果、MB+算法结果、MST算法结果、DRFI*算法结果、本文算法结果以及真值图.从图中我们可以看出图中显著性物体和背景存在相差比较大的对比度的时候算法都能很好的检测出显著性物体.但是再对比度相差不大的时候算法检测出显著性物体比较困难.比如第5张图片,显示的是一个人,但是他的帽子和背景比较相像,而且他的黑色的衣服也很容易被检测位背景.本文中的算法由于结合了深度信息,能够很好的反应图像中人物的轮廓.这样就能够很方便的把背景和人分离开.PCA算法更适合检测中间的物体,边上的物体很难被检测出来.RBD算法检测高对比度的图像效果都挺好,但是再检测人的时候出现了多检,把背景也作为了显著性物体,并且衣服难以检测出来.RC算法考虑了对比度,这样使得高对比度的地方也容易被检测为显著性物体,比如狗的图像的右上角.人的帽子和背景对比度相似,因此没有检测出来.MB+和MST算法在第一张和第五章中也出现了检测多的问题,并且MST算法在第七张中把一个对比度明显的红瓶子漏掉了.DRFI算法整体表现的非常好,它通过对很对的特征训练得到了很好的效果.但是在人的帽子的检测中也漏掉了.本文算法整体表现较好,并且通过引入深度信息能够更好的描绘显著性物体的轮廓.并能够检测出和背景相似的帽子.

4.1 数据集

本文使用三个公开数据集来验证算法.NLPR 数据集[8]、NJUD2000 数据集[6]以及LFSD 数据集[4].NLPR 数据集:NLPR RGBD数据集包括1000个通过微软Kinect采集的图像.NJUD2000 数据集:NJUD2000数据集包括2000个光影、深度和显著性标注图像.深度图使用光流法得到的.LFSD 数据集:LFSD数据集包括100个深度和显著性图.深度图通过Lytro光影照相机得到.

4.2 评价方法

本文通过实验比较七个算法得到的显著性图的准确率(Precision)、召回率( recall)、F-measure值(F-score)以及MAE(mean absolute error)平均绝对误差.这样能够直观的比较几种算法的效果.

首先把显著性图S转化成二值显著性图M.二值化在算法评估中是一个重要的步骤,我们使用的是文献[13]中的方法.通过计算一个阈值来对显著性图S进行二值化为M.阈值计算公式如下:

(13)

其中,W、H是图像的宽和高.

设为是实际显著性图,则准确率(Precision):

(14)

召回率( recall):

(15)

P-R曲线:算法得到的显著性图片I是灰度图,让阈值T取[0,255],得到二值显著性图M.又已知显著性物体二值图真值图G.由公式(14)、公式(15)分别求取准确率(P)和召回率(R),得到P-R曲线.

图7 P-R曲线Fig.7 P-R curve

首先对一张图片使用7种算法得到七个显著性图.然后使用P-R曲线计算方法计算7种算法得到七个P-R曲线.最后对所有图片的P-R曲线求平均就得到了图7所示的曲线.如图7所示,本文算法与其他算法相比,P-R曲线在其他算法的上方.有些算法在T值比较小的时候没有曲线,这是因为在计算准确率(Precision)的时候出现了分母为0 的情况.

图8 P-R-F柱状图Fig.8 P-R-F histogram

单独的使用准确率和召回率都不能很好的估计显著性的好坏.因此引入了F-measure值,它同时反映了准确率和召回率,计算公式如下:

(16)

其中,β2=0.3.

首先对图片的显著性图使用公式(13)计算阈值,然后使用公式(14)、公式(15)计算准确率和召回率.再使用公式(16)计算Fβ.最后把所有图片得到的Fβ求平均就得到了一个算法的Fβ值.图8显示了七个算法的准确率、召回率以及F值.图中显示出本文算法在召回率和F值都比其他算法高.而准确率和DIFI算法相同,比其他算法都大.

还有一种显著性评价方法是平均绝对误差(MAE).MAE值通过公式(17)计算:

(17)

首先对一个图片求显著性图,然后使用公式(17)求该图的平均绝对误差MAE.然后对所有图片的MAE求平均就得到了一种算法在数据集中的MAE.MAE反映了最终的显著性图和真值图的差别.越小越好,表明越和真值图相近.如图9所示,本文中算法计算出来的显著性图,显著性物体和背景有明显的区别所以在MAE上表现比较好.

图9 MAE柱状图Fig.9 MAE histogram

5 总 结

针对显著性检测算法中的检测效果、深度学习算法无法在嵌入式设备中使用以及很多算法缺乏是使用深度图信息的问题,本文提出了一种基于区域聚类RGBD显著性检测算法.首先使用超像素算法对图像分割,然后对分割的算法求取特征向量.再使用多带宽无参聚类算法对特征向量聚类,然后得到十个带宽下的显著性图.通过神经网络对显著性图进行合并.把最后得到的显著性图作为一个新的特征再次重复以上过程.重复十次后得到最终的显著性图.通过实验表明,本算法和其他算法比较,在效果、准确率、召回率、F值以及MAE上都有提高.

猜你喜欢

显著性聚类像素
一种傅里叶域海量数据高速谱聚类方法
像素前线之“幻影”2000
一种结合多尺度特征融合与像素损失加权的显著性目标检测方法
声音商标显著性认定研究
“像素”仙人掌
基于显著性权重融合的图像拼接算法
欧盟法院判决明确欧盟商标通过使用获得显著性的地域认定标准
面向WSN的聚类头选举与维护协议的研究综述
改进K均值聚类算法
基于Spark平台的K-means聚类算法改进及并行化实现