本发明属于道路检测技术领域,更为具体地讲,涉及一种基于动态刷新正样本图像库的道路路面异常检测方法。
背景技术:
近年来,随着汽车的数量增多,交通量日益增长,交通对道路路面的要求越来越高。由于受到行车荷载、自然环境的影响,道路路面会不断损坏。道路路面的损坏会带来交通事故等严重的后果,因此,对道路路面进行检测,发现损坏路面(异常道路路面)是一个重要的问题。
异常检测(anomalydetection)是指对不匹配预期模式或数据集中其他项目的项目、事件或观测值的识别。基于图像的异常检测是指从所有图像中找到异常的图像,从而检测出图像中被检测对象是否异常。其中,异常图像是指其具有图像中被检测对象存在某种缺陷的图像,对于被检测对象的缺陷类别通常难以事先确定。具体到被检测对象为道路路面时,其正常图像即是指正常道路路面图像,通常具有表面平整,纹理单一的特点。异常图像则是指道路路面有坑洼、裂缝、凸起等缺陷的图像。
基于图像的异常检测问题的数据具有极端不平衡性,即正常图像比较容易获得,异常图像在数量上相比正常图像通常非常少,并且对于可能出现异常的种类无法事先确定,因此难以用传统的二分类方法进行分类。对于道路路面图像,正常图像易于收集,数量多,异常图像则数量相对比较少,并且异常图像的种类繁多,难以事先确定。如何利用计算机视觉及图像处理来检测损坏的道路路面是目前需要解决的一个重要问题。目前主要有基于传统方法的异常检测模型和基于深度学习的异常检测模型。
基于传统方法的异常检测模型主要有三种,即基于重构的方法、聚类分析方法和单分类方法。(1)、基于重构的方法假设异常图像是不能被压缩的,或者映射到特征空间后是不能够被有效重建的。常见的方法有pca、robustpca、randomprojection等降维方法。主要思路是通过正常样本图像来生成一个变换矩阵,在检测的时候用该变换矩阵将待检测的路面图像变换到特征空间,因为该变换矩阵是用正常样本图像生成,所以如果待检测的路面图像是正常图像的话,则重构回去的重构误差比较小,对于异常图像,则会得到相对比较大的重构误差,通过设定一个合适的重构误差的阈值来实现正常图像、异常图像的分类。(2)、基于聚类分析的方法通过在样本空间或者特征空间进行聚类,因为异常图像与正常图像的不同会被聚类到不同的类别。常见的基于聚类分析的方法有gaussianmixturemodels、k-means、multivariategaussianmodels等。(3)、基于单分类的方法的主要思想是对正常图像建立区分性边界,异常图像被划分到边界外。常见的基于单分类的方法有oc-svm,svdd等。
基于深度学习的异常检测模型主要包括基于自编码器的方法、基于生成对抗网络的方法以及基于正样本建模的方法。(1)、基于自编码器的方法的主要假设是正常图像比异常图像能从特征空间中更好地被重构。具体做法是只利用正常图像来训练一个自编码器,训练时的损失设为自编码器的重建误差。当模型训练完成,则该模型对于正常图像能得到很好的重建,而对于异常图像则不能很好的从特征空间中重建回来。通过设定合适的重建误差阈值来实现正常图像、异常图像的分类。(2)、基于生成对抗网络的模型基本假设是在生成器的潜空间中正常图像比异常图像能更准确地被产生。此类方法的代表有anogan、ganomaly、wassersteingan等。(3)、基于正样本建模的方法是通过无监督或者迁移学习的方式训练一个特征提取器,只针对大量的正常样本图像进行特征提取,再通过聚类等无监督学习方式建立正样本模型进而实现正常图像、异常分类。
在上述基于传统方法和基于深度学习方法的异常检测模型中,对道路路面采集的图像进行异常检测时候,通常只能应对正常图像非常相似的情况,而道路路面的正常图像也存在很多变化,比如光照变化、路段变化等,当把异常检测模型应用到道路路面时,往往需要根据新的正常图像重新训练模型,即模型无法在实际应用中动态更新,并且基于深度学习的方法计算量与存储压力大,通常对计算设备性能要求较高。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种基于动态刷新正样本图像库的道路路面异常检测方法,能够在检测过程中动态刷新正样本图像库,不断改进道路路面异常检测的性能,同时,降低存储压力小,减小计算开销。
为实现上述发明目的,本发明基于动态刷新正样本图像库的道路路面异常检测方法,其特征在于,包括以下步骤:
(1)、收集正常道路路面的图像(即正常图像),构成正常样本图像集a={am|m=1,2,......,m},其中,m为正常图像的数量,am为第m张道路路面的正常图像,正常图像am的尺寸大小为h×w,h为图像像素的行数,w为图像像素的列数;
初始化正样本图像库k={kn,dn|n=1,2,......,n}:
正常样本图像集a中选取出n张的正常图像,并表示为kn,每张正常图像视为由w个h维列向量组成的集合,即一张正常图像kn等价为一个数据集kn={hnw|w=1,2,......,w},hnw为选出的第n张正常图像的第w列像素;
用字典学习算法对数据集kn进行学习,得到一个欠完备字典dn,这样得到正样本图像库k={kn,dn|n=1,2,......,n};
(2)、遍历正常样本图像集a,更新正样本图像库k:
2.1)、将正常样本图像集a中正常图像(剔除步骤(1)初始化正样本图像库k所用的n张正常图像)依次取出并学习得到相应的欠完备字典,然后加入正样本图像库k中,则此时,正样本图像库k={kn,dn|n=1,2,......,n 1};将正样本图像库k中第n正常图像kn的每一列像素对应的列向量都用正样本图像库中的一个字典dj稀疏分解,其中,j≠n,然后对分解得到的每一个列向量都重建回去,得到重建图像knj,然后再计算重建误差enj即正常图像kn与重建图像knj之间的欧式距离;
2.2)、每张正常图像kn用正样本图像库中其余n张正常图像对应字典dj稀疏分解再重建,得到n个重建误差enj,计算n个重建误差的平均值en(重建误差平均值),将重建误差平均值最小en的正常图像kn剔除出正样本图像库k;
2.3)、遍历正常样本图像集a,重复执行步骤2.1)、步骤2.2),最后得到最能代表该数据集变化性的正样本图像库k={kn,dn|n=1,2,......,n};
(3)、基于正样本图像库k={kn,dn|n=1,2,......,n}计算异常分类阈值threshold:
3.1)、正样本图像库k={kn,dn|n=1,2,......,n}中正常图像kn用正样本图像库k中其余n-1张正常图像对应字典dj稀疏分解再重建,得到n-1个重建误差enj,然后计算n-1个重建误差的平均值en(重建误差平均值en);
3.2)、将正样本图像库k中n张正常图像kn,n=1,2,......,n按照步骤3.1)计算出n个重建误差平均值en,n=1,2,......,n,对这n个重建误差平均值en再求一次平均,得到正样本图像库k的整体重建误差e;
3.3)、整体重建误差e乘以一个系数α作为异常分类阈值threshold;该系数ε根据收集的道路路面图像中正常图像和异常图像来计算,并且该正常图像与构建正样本图像库k用的正常样本图像集a不相交,具体为:
将正常图像与异常图像都输入正样本图像库k进行重建,要求所有正常图像的重建误差平均值都小于异常分类阈值threshold,异常图像的重建误差平均值都大于异常分类阈值threshold;
(4)、基于正样本图像库k={kn,dn|n=1,2,......,n}和异常分类阈值threshold进行道路路面异常检测,并根据检测结果决定是否进行正样本图像库的动态刷新
拍摄道路路面,得到路面图像作为待检测图像x,分别用正样本图像库中n张正常图像对应字典dj稀疏分解再重建,得到n个重建误差exj,j=1,2,......,n,然后计算n个重建误差的平均值ex,如果平均值ex大于等于异常分类阈值threshold,则判定该路面图像为异常图像,对应的道路路面有损坏,如果平均重建误差小于异常分类阈值,则判定为正常图像,对应的道路路面为正常道路路面;
并且当检测到待检测图像x为正常图像时,把该正常图像加入正样本图像库k,按照步骤(2)、(3)的方法,刷新正样本图像库k。
本发明的目的是这样实现的。
本发明基于动态刷新正样本图像库的道路路面异常检测方法,将每张正常图像视为由w个h维列向量组成的集合,并学习得到一个欠完备字典,依据重建误差,剔出重建误差平均值最小的正常图像,得到正样本图像库k,然后计算出正样本图像库k的整体重建误差e,并乘以系数ε作为异常分类阈值threshold,最后,对于拍摄的路面图像,依据正样本图像库k计算出重建误差的平均值ex,并与异常分类阈值threshold比较,大于等于则为异常图像,对应的道路路面有损坏,小于则为正常图像,对应的道路路面为正常道路路面并更新刷新正样本图像库k。本发明只需要保存正样本图像库中的n个正常图像及其对应的n个字典就可以快速实现道路路面异常检测,存储压力小,计算开销小;此外,支持在检测到新的正常图像时刷新正样本图像库k,因而能够在应用过程中不断改进模型异常分类性能。
附图说明
图1是本发明基于动态刷新正样本图像库的道路路面异常检测方法一种具体实施方式流程图;
图2是水泥道路图像与w个h维列向量等价的示意图,其中,(a)为正常水泥道路路面的图像(即正常图像),(b)异常水泥道路路面的图像(即异常图像);
图3是一张水泥道路图片正常图像用ksvd算法分解示意图;
图4是图1所示步骤s2的一种具体实施方式流程图;
图5是正常图像kn用欠完备字典dj稀疏分解再重建示意图;
图6是图1所示步骤s3的一种具体实施方式流程图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
图1是本发明基于组合关系注意力网络的视觉问答方法一种具体实施方式流程图。
在本实施例中,如图1所示,本发明基于动态刷新正样本图像库的道路路面异常检测方法,包括以下步骤:
步骤s1:收集正常道路路面的图像(即正常图像),构成正常样本图像集a={am|m=1,2,......,m},其中,m为正常图像的数量,am为第m张道路路面的正常图像,正常图像am的尺寸大小为h×w,h为图像像素的行数,w为图像像素的列数。
在本实施例中,道路路面为水泥道路路面,收集的正常水泥道路图像构成正常样本图像数据集a中,每张正常图像的尺寸都是64×64,即w=h=64。
初始化正样本图像库k={kn,dn|n=1,2,......,n}:
正常样本图像集a中,选取出n张的正常图像,并表示为kn,每张正常图像视为由w个h维列向量组成的集合,即一张正常图像kn可以等价为一个数据集kn={hnw|w=1,2,......,w},hnw为选出的第n张正常图像的第w列像素。
用字典学习算法对数据集kn进行学习,得到一个欠完备字典dn,这样得到正样本图像库k={kn,dn|n=1,2,......,n}。
在本实施例中,如图2所示,水泥道路图像为灰度图像,其中,(a)为正常水泥道路路面的图像(即正常图像),(b)异常水泥道路路面的图像(即异常图像)。正常图像、异常图像都认为是w个h维列向量组成的集合,即对于正常图像kn可以等价为一个数据集kn={hnw|w=1,2,......,w},hnw为选出的第n张正常图像的第w列像素。
在本实施例中,如图3所示,因为正常水泥道路图像的纹理单一,每一列像素之间具有相似性,用ksvd字典学习算法可以对每张正常图像kn等价的数据集kn学习到一个欠完备字典dn。ksvd是一种稀疏表示中字典学习的算法,其名字的由来是该算法要经过k此迭代,且每一次迭代都要使用svd分解。
对这n个数据集kn,n=1,2,......,n,用ksvd字典学习算法学习到n个欠完备字典dn,ksvd字典学习算法初始化字典时,采用图片的奇异值分解的前h个左奇异向量来初始化字典,其中h<w即每个字典的原子数小于每个数据集的样本数,即小于每张正常图像的列数,这是为了使字典的原子更能代表图片各列像素之间的共同特征而去除了一些不重要的特征。在ksvd字典学习算法的稀疏编码阶段采用omp正交迭代追踪算法,稀疏度采用10%n,即正常图像中每个列向量对应的稀疏编码中只有10%的元素非零。最终得到了初始化的得到正样本图像库k={kn,dn|n=1,2,......,n},其中包含n个正常图像kn和n个欠完备字典dn。ksvd字典学习算法属于现有技术,在此不再赘述。
步骤s2:遍历正常样本图像集a,更新正样本图像库k
在本实施例中,如图4所示,步骤s2包括以下步骤:
步骤s2.1:重建图像并计算重建误差
将正常样本图像集a中正常图像,剔除步骤s1初始化正样本图像库k所用的n张正常图像后,依次取出并学习得到相应的欠完备字典,然后加入正样本图像库k中,则此时,正样本图像库k={kn,dn|n=1,2,......,n 1};
在本实施例中,如图5所示,将正样本图像库k中第n正常图像kn的每一列像素对应的列向量都用正样本图像库中的一个欠完备字典dj稀疏分解(稀疏编码阶段),其中,j≠n,然后对分解得到的每一个列向量再用欠完备字典dj(整个列向量逐列依次放置构成该正常图像kn的稀疏编码)都重建回去,得到重建图像knj(重建阶段),然后再计算重建误差enj即正常图像kn与重建图像knj之间的欧式距离。
步骤s2.2:计算每张正常图像n个重建误差的平均值,剔除最小的正常图像
每张正常图像kn用正样本图像库中其余n张正常图像对应字典dj稀疏分解再重建,得到n个重建误差enj,计算n个重建误差的平均值en(重建误差平均值),将重建误差平均值en最小的正常图像kn剔除出正样本图像库k。
重建误差平均值en最小说明该正常图像kn与正样本图像库k其余正常图片比较相似,将重建误差平均值en最小的正常图片剔除出正样本图像库k可以保证正样本图像库k中的样本不相似。
步骤s2.3:遍历正常样本图像集a,重复执行步骤s2.1、步骤s2.2,最后得到最能代表该数据集变化性的正样本图像库k={kn,dn|n=1,2,......,n}。
步骤s3:基于正样本图像库k={kn,dn|n=1,2,......,n}计算异常分类阈值threshold
在本实施例中,如图4所示,步骤s3包括以下步骤:
步骤s3.1:计算每张正常图像的重建误差平均值
正样本图像库k={kn,dn|n=1,2,......,n}中正常图像kn用正样本图像库k中其余n-1张正常图像对应字典dj稀疏分解再重建,得到n-1个重建误差enj,然后计算n-1个重建误差的平均值en(重建误差平均值en);
步骤s3.2:计算正样本图像库整体重建误差
将正样本图像库k中n张正常图像kn,n=1,2,......,n按照步骤3.1)计算出n个重建误差平均值en,n=1,2,......,n,对这n个重建误差平均值en再求一次平均,得到正样本图像库k的整体重建误差e;
步骤s3.3:计算异常分类阈值
整体重建误差e乘以一个系数α作为异常分类阈值threshold;该系数α根据收集的道路路面图像中正常图像和异常图像来计算,并且该正常图像与构建正样本图像库k用的正常样本图像集a不相交,具体为:
将正常图像与异常图像都输入正样本图像库k进行重建,要求所有正常图像的重建误差平均值都小于异常分类阈值threshold,所有异常图像的重建误差平均值都大于异常分类阈值threshold。
在具体实施过程中,可以将异常分类阈值threshold设定为所有正常图像的重建误差平均值中的最大值与所有异常图像的重建误差平均值中的最小值二者的平均值,来计算出该系数α。
在具体实施过程中,如果收集到新的异常图像,可动态刷新异常分类阈值threshold。
步骤s4:基于正样本图像库k={kn,dn|n=1,2,......,n}和异常分类阈值threshold进行道路路面异常检测,并根据检测结果决定是否进行正样本图像库的动态刷新。
拍摄道路路面,得到路面图像作为待检测图像x,分别用正样本图像库中n张正常图像对应字典dj稀疏分解再重建,得到n个重建误差exj,j=1,2,......,n,然后计算n个重建误差的平均值ex,如果平均值ex大于等于异常分类阈值threshold,则判定该路面图像为异常图像,对应的道路路面有损坏,如果平均重建误差小于异常分类阈值,则判定为正常图像,对应的道路路面为正常道路路面;
并且当检测到待检测图像x为正常图像时,把该正常图像加入正样本图像库k,按照步骤s2和s3的方法,刷新正样本图像库k。
另外,如果在实际实施过程中,又收集到了一批水泥道路路面的新的正常图像,则重复步骤s2和s3刷新正样本图像库k,使本发明得到更好的泛化性能,适用于不同情况下的检测应用。
本发明只需要保存正样本图像库k中的n个正常图像kn,n=1,2,......,n及其对应的n个字典就dn,n=1,2,......,n,可以快速实现道路路面异常检测,存储压力小,计算开销小;此外,支持在检测到新的正常图像时刷新正样本图像库k,因而能够在应用过程中不断改进模型异常分类性能。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
1.一种基于动态刷新正样本图像库的道路路面异常检测方法,其特征在于,包括以下步骤:
(1)、收集正常道路路面的图像(即正常图像),构成正常样本图像集a={am|m=1,2,......,m},其中,m为正常图像的数量,am为第m张道路路面的正常图像,正常图像am的尺寸大小为h×w,h为图像像素的行数,w为图像像素的列数;
初始化正样本图像库k={kn,dn|n=1,2,......,n}:
正常样本图像集a中选取出n张的正常图像,并表示为kn,每张正常图像视为由w个h维列向量组成的集合,即一张正常图像kn等价为一个数据集kn={hnw|w=1,2,......,w},hnw为选出的第n张正常图像的第w列像素;
用字典学习算法对数据集kn进行学习,得到一个欠完备字典dn,这样得到正样本图像库k={kn,dn|n=1,2,......,n};
(2)、遍历正常样本图像集a,更新正样本图像库k:
2.1)、将正常样本图像集a中正常图像(剔除步骤(1)初始化正样本图像库k所用的n张正常图像)依次取出并学习得到相应的欠完备字典,然后加入正样本图像库k中,则此时,正样本图像库k={kn,dn|n=1,2,......,n 1};将正样本图像库k中第n正常图像kn的每一列像素对应的列向量都用正样本图像库中的一个字典dj稀疏分解,其中,j≠n,然后对分解得到的每一个列向量都重建回去,得到重建图像knj,然后再计算重建误差enj即正常图像kn与重建图像knj之间的欧式距离;
2.2)、每张正常图像kn用正样本图像库中其余n张正常图像对应字典dj稀疏分解再重建,得到n个重建误差enj,计算n个重建误差的平均值en(重建误差平均值),将重建误差平均值最小en的正常图像kn剔除出正样本图像库k;
2.3)、遍历正常样本图像集a,重复执行步骤2.1)、步骤2.2),最后得到最能代表该数据集变化性的正样本图像库k={kn,dn|n=1,2,......,n};
(3)、基于正样本图像库k={kn,dn|n=1,2,......,n}计算异常分类阈值threshold:
3.1)、正样本图像库k={kn,dn|n=1,2,......,n}中正常图像kn用正样本图像库k中其余n-1张正常图像对应字典dj稀疏分解再重建,得到n-1个重建误差enj,然后计算n-1个重建误差的平均值en(重建误差平均值en);
3.2)、将正样本图像库k中n张正常图像kn,n=1,2,......,n按照步骤3.1)计算出n个重建误差平均值en,n=1,2,......,n,对这n个重建误差平均值en再求一次平均,得到正样本图像库k的整体重建误差e;
3.3)、整体重建误差e乘以一个系数α作为异常分类阈值threshold;该系数ε根据收集的道路路面图像中正常图像和异常图像来计算,并且该正常图像与构建正样本图像库k用的正常样本图像集a不相交,具体为:
将正常图像与异常图像都输入正样本图像库k进行重建,要求所有正常图像的重建误差平均值都小于异常分类阈值threshold,异常图像的重建误差平均值都大于异常分类阈值threshold;
(4)、基于正样本图像库k={kn,dn|n=1,2,......,n}和异常分类阈值threshold进行道路路面异常检测,并根据检测结果决定是否进行正样本图像库的动态刷新
拍摄道路路面,得到路面图像作为待检测图像x,分别用正样本图像库中n张正常图像对应字典dj稀疏分解再重建,得到n个重建误差exj,j=1,2,......,n,然后计算n个重建误差的平均值ex,如果平均值ex大于等于异常分类阈值threshold,则判定该路面图像为异常图像,对应的道路路面有损坏,如果平均重建误差小于异常分类阈值,则判定为正常图像,对应的道路路面为正常道路路面;
并且当检测到待检测图像x为正常图像时,把该正常图像加入正样本图像库k,按照步骤(2)、(3)的方法,刷新正样本图像库k。
2.根据权利要求1所示的基于动态刷新正样本图像库的道路路面异常检测方法,其特征在于,所述字典学习算法为ksvd字典学习算法。
3.根据权利要求1所示的基于动态刷新正样本图像库的道路路面异常检测方法,其特征在于,步骤(3)中,可以将异常分类阈值threshold设定为所有正常图像的重建误差平均值中的最大值与所有异常图像的重建误差平均值中的最小值二者的平均值,来计算出该系数α。
技术总结