一、实验目的
1、实验目标
使用C均值算法或者相应的改进算法,对数据进行聚类分析,并思考如何自动确定道路区域对应的是聚类后形成的若干类别中的哪个类别。
尝试对初值、对代表点的选取以及分类方法进行改变,对改变前后结果的变化进行讨论。
2、实验涉及到的学习内容
C均值聚类、最近邻法则、K-近邻法则、C均值聚类的改进、层次分析法。
二、实验具体完成情况
1、总体实验方案
实验需要使用聚类分析的方法对道路进行分割,由于聚类分析是一种无监督学习的方法,存在以下2个问题需要解决。
a. 对于不同的背景,如何确定聚类数,也就是给定一张图片,进行n分类时,如何确定最佳n值;
b. 针对一张n分类的图片,如何确定这n个分类中道路是哪个分类,以便在输出二值化图像时,将道路区域输出为白色,其他含有n-1个类的背景区域输出为黑色。
对于第一个问题,给定图像的最佳聚类数,通常取决于特定的应用和期望的结果,可参考的方法有肘部法则(Elbow Method)、轮廓系数法(Silhouette Coefficient)、间隙统计法(Gap Statistic):比较实际数据的聚类和具有相同数据空间特征的随机数据的聚类,来估计最佳聚类数。
对于第二个问题,确定n个簇中哪个簇属于道路,通常可以引入有监督数据,例如对于在道路上行驶的车辆,可默认将图像上下方向2/3、左右方向居中的位置,认为是道路。然后再在该区域提取一定范围的像素,对比该区域的特征与各聚类中心的距离,哪个最近即哪个分类属于道路。
此外,对于图像分割问题,从人类的思维逻辑来说,如果将图片内所有的点提取出来作为一个个孤立的像素点,则很容易受到噪声的影响,即便是人类也可能判断失误。如果引入一种基于梯度的滤波算法,可以达到忽略细节保留宏观的效果。
最后,人类在识别道路时,也会将道路的边缘特征和分布特点纳入考虑范畴,更能够得到识别准备的结果。因此,可以考虑将连通性和梯度特征纳入考虑范围,辅助进行道路分割,提升准确率。
2、具体技术途径
(1)颜色空间分析
分析分割的3张图片A、B、C,每张图片具有不同的特点。图像A的道路和背景颜色都相对比较单一,图像B包含了道路、草地、树林、天空4类对象,且道路区域存在颜色特征与天空接近水洼,图像C包含了存在阴影的道路、树林、天空,且道路的高光部分与天空颜色较为接近。
考虑到每张图片具备的特点不一,为了寻找最佳分割色域,对3张素材分别在RGB(Red Green Blue)、HSV(Hue Saturation Value)、Lab(CIE 1976 Lab)、YCbCr(Luma, Chroma Blue, Chroma Red)颜色空间的特点进行可视化输出。
如图2所示,3张待分割的图片,在YCbCr空间的输出与RGB空间类似。而在Lab空间,虽然图像A、B的道路能够大致与背景区分开来,但是对于图像C,树林、草地、天空的特征差异仍不够明显。而在HSV空间中,在图像A、B中的区分度与Lab空间类似,但是在图像C中,不同对象的差异相比Lab空间更为明显。综合以上分析,对于图像A,优先考虑选取RGB空间进行聚类,图像B优先考虑在Lab空间聚类,图像C则对比衡量。
(2)数据预处理
通过(1)中的图像可视化情况分析,在HSV和其他空间下,图像都存在不同程度噪声,这些噪声将对聚类产生一定影响,因此适当的数据预处理是十分必要的。
一般的降噪方法包括高斯滤波(Gaussian filtering)和中值滤波(Median filtering)。经过前几次的实验测试,高斯滤波的效果与高斯核的大小密切相关,高斯核过大会导致道路边缘不够精确,过小则会导致滤波效果不理想。而中值滤波则是利用图像块内的像素值进行排序,然后将中间数值代替中心像素的数值。面对图像A、C 的道面情况,噪声面积较大,不管哪种滤波方式,均很难保证轮廓相对清晰的同时滤除大部分噪点。
联想人类思维,当人需要对一张图片内的物体进行分类判别时,首先关注的是物体的宏观特征,宏观特征不能分辨时,才会结合细节进行分辨,同样的,面对有噪声的情形,也是如此。相反,图片表达的细节过于丰富,对于计算机来说,反而对判断造成了不便。因此,如果有一种算法,可以将图像的宏观特征保留,微观特征忽略,就可以在不影响边缘轮廓的情况下生成一张新的图像再聚类分析,以此来取得更好的效果。
经过研究,可通过梯度最小化平滑法达到该目的。该方法与其他边缘保留平滑方法的不同之处在于它使用了梯度最小化来全局控制非零梯度的数量,从而实现了对突出结构的逼近。其算法如下:
通过不同的参数实验可知,梯度最小化平滑法可缩小同类对象不同像素的差异,增加不同对象的特征差异。例如,对于树林来说,他们的差异随着λ的增加而逐步变小。同时,道路中的水洼,阴影也随着平滑的效果加强,逐步消失,且物体轮廓可大致保持不变。
如图4为不同平滑效果下的梯度图,可以看出注意轮廓在不断平滑过程中保持大致不变。
(3)聚类数选择
先分析3张图像的主要成分,其中图A的主要组成为道路核树林,图B的主要组成为道路、树林、草地、天空,图C的主要组成为道路、树林、天空。
不同的聚类数量最终会影响图像的分割效果,对于如何确定合适的聚类数的问题,可以采用肘部法则(Elbow Method),其原理基于对不同聚类数目的性能评估,希望找到一个"肘部"点,该点对应的聚类数目是一个合适的选择。
肘部法则的主要原理如下:首先,对于给定的数据集,使用K均值算法尝试不同的聚类数目,从1到n依次递增尝试。然后对于每个K值,计算一个性能度量(通常是每个点到其所属簇中心的距离的平方和)。接下来将每个K值对应的性能度量绘制成曲线图。最后曲线开始迅速减缓的位置对应的K值,该值为一个合适的聚类数。下面为3张图像的性能度量与K的变化关系图。
通过观察图4中各图像的性能度量曲线图,图像A的"肘部"较为明显,因此将其聚类数设置为2,而图像B、C的肘部不太明显,因此将除了两者的聚类数设置为3,还增加聚类数为4的分类,比较哪种聚类数效果更好。
(4)聚类方法选择
K-Means聚类算法一般随机选择聚类中心,在某些情况下可能会引入一些问题或缺点,其中一些包括结果的不确定性、可能引入偏差。前可能不利于结果的复现,甚至出现偶然性错误的情况,后者出现在数据集的结构不均匀或聚类间隔不清晰的情况下。
若要降低随机选择中心导致的错分概率,有K均值算法的改进版本,如K均值++(K-Means++),使用更智能的方式选择初始中心,以减少局部最优解的影响,提高聚类的稳定性和收敛速度。或者引入半监督过程,直接通过标定样本求得中心点。
通过MATLAB的kmean函数的参数可以设置使用K均值++算法,并改变聚类中心,发现效果有一定改善。
(5)图像分割
考虑到聚类算法有一定的不均匀聚类的概率,在进行下面使用时,如果出现错误,则再次运行程序,选择正确的聚类作为实验结果。
a. 图像A
对于图像A,当时,随着滤波的增强,道路和背景的轮廓越来越精准,且交界处的轮廓逐步趋于平滑。但是当时,虽然图像进一步平滑,但是道路尽头右侧趋于,出现的道路轮廓溢出的情况。
b. 图像B
当聚类数为3时,当时,随着滤波的增强,道路分割情况越来越准确,但是由于道路今天左侧有一部分裸露的泥土与道路特征比较接近,这部分造成的误判也趋于明显。当时,道路左侧的误判区彻底与道路区域合并。整体来看,道路上的水洼的影响逐步减小。
当聚类数为4时,当时,随着滤波的增强,天空的高光与暗部趋于被分割成了2个簇。当时,随着滤波效果的加强,天空的明暗差异进一步缩小,因此天空被判定为了1个簇,而且道路两侧的草地和树林,近处和远处的被分为了2类。
c. 图像C
当聚类数为3时,HSV和RGB空间均不能很好的分割。其中HSV空间下道路的阴影与亮部被划分成了2个簇,且天空与道路的亮部也被划分到了同一类。随着滤波作用的增强,道路右侧部分逐步被划分成与树林同一类别。RGB空间类似,且相同滤波强度下,道路区域被分割的类别更多。
当聚类数为4时,HSV和RGB空间依旧不能很好的分割,但HSV空间的效果明显优于RGB空间的效果。HSV空间下,当时,道路大部分区域都处于2个簇中,当,道路右侧的特征与树林趋于一致,导致被划分成与树林同一类别。而RGB空间下,对于所有的λ值,均存在道面被分为四个簇的情况,效果十分不理想。且道路的高光部分与天空始终无法区分。
(6)聚类基础上的二分类
经过(5)中的聚类分析,图像A在RGB空间下2分类下即可取得良好效果;对于图像B,HSV空间下,时,3个簇的聚类效果更好,时,4个簇的聚类取得的效果更好;对于图像C,通过对比,在HSV空间下分割效果更好,但是道面被分类到了2个簇中。因此,图像B、C需要再原有的聚类基础上,再次进行2分类,其中图像C的道路在2个簇中,在进行进一步分类时需要从2个簇中提取道路。
a. 问题分析
因为聚类分析是一种无监督学习方法,对于同一张图像,同样是道路,在2次实验中,可能会被指派不同的簇号。而实验本身要求得到一张二值化图像,其中道路为白色,背景为黑色。因此在聚类的基础上再进行分类时,首先需要确认哪个(或者哪两个)簇属于道路,则其余的簇属于背景,判别完成后建立一张新的图像,再对相应的区域填充白色和黑色即可。
b. 方案制定
当车辆在道路上行驶时候,可以默认其前方某个区域属于道路,在对簇进行判别时,分别对3张图像的下方1/4处居中划定一个宽度大致为图像宽1/2的矩形。对每张完成聚类的图像,先读取该矩形区域的簇数量,分别统计各个簇的像素个数,根据统计的像素权重w确定当前矩形区域那几个簇应该被视为道路。以图像C为例,矩形框内包含了2个簇,分别统计蓝色和黄色覆盖的像素数量,发现两者分别占据20%和80%的面积,则将这两个簇都视作道路。
通过调整权重系数,使得方框内面积占比大于w的簇均视作道路,接下来遍历全图,对与方框内属于同一个簇的像素设置为白色,其余像素设置为黑色,得到一张二值化的分割图。
c. 二分类
对比(5)的实验结果,选取更好分割的颜色空间和簇,继续进行二分类。
从二分类结果可以看出,虽然3张图像在大部分λ取值下的都得到了相对准确的分类结果,但是图像A左上角的亮点和图像B道路尽头左侧的裸露泥土地都被识别成了道路,图像C优于设置的滤波强度较低,树林与天空的交界处出现了不同程度误识别。
(7)再次处理
从(6)中最后的二分类结果可以看出,滤波+聚类+二分类的效果对于道路识别仍然存在一些图像噪点和小面积的误识别,下面将针对二分类的图像进行再次处理。
噪点可大致归为2类,一种是道路区域的黑色噪点,另一种的背景区域的白色噪点,对于前者可以通过开运算(即先腐蚀后膨胀,可以消除亮度较高的细小区域)去除,而对于后者可以通过闭运算(即先膨胀后腐蚀。可以消除细小黑色空洞)去除。考虑到采用的核较大,会破坏图像轮廓,采用是核较小则会滤波不全面的特点,下面是采用3×3的核进行滤波的情况。
3、实验结果与分析
(1)准确率计算
通过图像手动抠图得到3张图像的参考模板图,如图21所示。将最终的图像与模板图像对比,分别统计背景和道路区域正确分类的像素个数,求得准确率如表2所示。
(2)结果分析
通过分析(1)中的结果可知,随着最小梯度滤波的引入,可以显著改善图像分割效果,但是对于不同图像,不同的滤波强度λ可得到不同的结果。对于图像A和B来说,其最佳在0.02和0.06附近,对于图像C,最佳的小于0.005。
随着滤波强度的增加,图像A在λ=0.16时,道路尽头右侧首先出现模糊,导致与该区域相邻的背景被误识别成了道路,使得准确率开始下降。图像B在时,道路两侧很少被车轮碾压的区域由于与背景颜色更接近,这部分轮廓梯度滤波后开始被背景"腐蚀",导致准确率大幅下滑。图像C的右侧阴影区域的HSV特征与边缘的树林特征还是区分不够明显,导致梯度滤波增强后,右侧逐步开始被背景"腐蚀",导致准确率逐步下滑。
对比图22与图23滤波前后的准确率情况,可知随着滤波的引入,不同参数下的识别准确率都有一定程度提升,其中在图像A上表现最为明显。
三、实验心得与体会
1、选择合适的颜色空间对分类效果影响巨大
实验对比了3张图片在RGB、HSV、Lab、YCbCr空间下的特征,并进行了可视化显示,经过论证选择了使用RGB特征对图像A进行分割,使用HSV特征对图像B进行分割,同时使用RGB和HSV对图像C进行了分割并对比。通过实验结果可以发现,针对不同的图片特点,应当选择特征差异相对明显的颜色特征进行分割,例如图像C,经过对比,其在RGB空间下分割十分困难,而在HSV空间下,虽然道面被分到了2个簇中,但是仍然可以通过后期手段将属于这2个簇的聚类判定为道路得到准确的识别结果。
2、不同图像最佳梯度滤波系数λ不同
实验使用了最小梯度平滑对图像进行了预处理,并取得了良好效果。但是通过最后的正确率分析可知,不同图像的取得最佳识别率时对应的滤波强度λ一般也是不同的。在处理不同图像时,如果道路区域的特征相对统一,或者与道路主体特征的物体面积较小时,则λ取值可以适当的增大,以得到更好的分割结果。如果道路区域存在较大面积的水洼或阴影,则最小梯度滤波取得的效果是有限的,但是对于较小的干扰还是可以完美的滤除。
3、 选择合适的K值对分类的影响十分关键
实验采取了肘部法则来确认合适的簇数量,但是实测过程中性能度量随着K值的变化曲线的"肘部"可能并不明显,例如图像B。为此,对图像B分别进行了K=3和4两种情况的分类实验,可以看出当时,两者的区别并不存在明显差异,当后, 3个簇的分类下,道路区域出现了严重的误判,而4个簇的分类受到的影响较小。因此,不同的K值与梯度滤波强度λ要在合适的数值搭配下才能取得良好效果。
4、 对于复杂道面的情形,将道路划分到2个簇中是可行的
以图像C为例,在HSV空间采取了多种方案尝试,高光与阴影区域的道路始终处于不同的分类簇中,而在实际应用中,这种场景是十分常见的,本实验在图像靠车头的位置裁剪了1个长条状矩形,通过判定内部的分类和占比情况来判定多个簇中有哪几个属于道路,并且取得了良好效果。但是实际测试中,该方法对车辆的行驶位置变化很敏感,假如车辆靠最右侧车道行驶,则误判的可能性会增加。
5、聚类初始点的选取不当可能会导致严重错误分类
由于 K-Means 算法依赖于随机选择的初始点,不同的运行可能会产生不同的结果。有时可能导致严重的错误分类,或者正确的结果难以复现。针对这种情况,可以采取多次运行 K-Means 算法,然后从中选取正确分类的结果。或者使用改进的K-Means++算法,可以一定程度上提高聚类的稳定性。
四、存在的主要问题和建议
存在问题: 通过本实验,可以发现,不针对不同图像,只有合适的颜色空间、滤波强度λ、分类簇数量K组合才能得到较好的分类效果,也就是说分类效果对参数选择十分明暗。虽然最终的分类是程序自动实现的,但是其中的参数最优设置上,是通过人工实现了,如果这个过程交给机器完成,存在一定难度。
改进建议:参数最优匹配是一个十分复杂的问题,对于机器来说,若设计一种算法让其实现计算最佳参数是不太现实的,可以采取深度学习的方法,例如使用YOLO训练得到一个道路识别模型,以该模型的识别结果为参考,通过深度学习不断优化参数,使得识别率不断逼近正确结果,当达各种场景的效果达到最优时,记录好当前参数和图像特点,模型训练完成后,可根据图像场景动态调取最佳参数进行聚类分析,从而得到尽可能优的结果。