基于改进人工蜂群算法和BP神经网络的沥青路面路表裂缝识别
2020-01-18谭卫雄王育坚李深圳
谭卫雄,王育坚,李深圳
(北京联合大学 信息学院,北京100101)
随着人们对行车安全性、舒适性和经济性要求的不断提高,再加上我国公路交通正处于高速发展时期,路面养护的重要性和紧迫性日渐凸显出来。作为病害检测的主要工作之一的路面裂缝检测,依靠传统的人工检测方式显然已经不能满足路面检测需求。因此,开发新的路面裂缝图象识别技术是具有重要意义的。目前,已有将图像技术用于裂缝检测的研究,如空间域的阈值分割算法[1-2]、边缘检测算法[3]及基于种子生长的识别算法[4],频域路面裂缝识别算法[5]和神经网络学习算法[6-8]等。路面裂缝检测技术大多数集中于边缘检测和阈值分割,但是对于噪声污染大的裂缝图像十分敏感,稳定性欠佳。对于路面图像噪声污染大,随机性强等问题,边缘检测和阈值分割等传统方法在处理裂缝图像上已经很难满足其精度要求了。而在路面裂缝图像识别中,神经网络技术也占着极为重要的位置,其中,BP 神经网络是应用在路面裂缝图像识别中较广泛的一种神经网络算法。但是其算法存在全局搜索能力差、收敛性慢及容易陷入局部最小值等缺点。英红等提出一种基于BP 神经网络的沥青路面裂缝识别方法[9],虽然在识别率上有所提高,但收敛性慢、运算量大。作为一种新的群智能优化算法—人工蜂群算法,Karaboga 等[10]在2005年已经提出。相对于其它群智能优化算法,其主要有能跳出局部最小值,参数少等优点。但也存在收敛速度慢、局部搜索能力差等问题[11]。针对上述问题,本文通过加入自适应因子对人工蜂群算法的搜索位置和概率选择进行改进,利用改进的ABC 算法去优化BP 神经网络的权值与阈值,得到改进ABC-BP 混合神经网络,并将其应用于路面裂缝识别,提高路面裂缝识别速度和精度。
1 人工蜂群算法原理
人工蜂群算法是根据自然界蜜蜂总是能寻找优良蜜源而模拟的一个群智能优化算法。蜜蜂通过跳舞来传递蜜源信息。蜂群利用蜜源、采蜜蜂、观察蜂和侦查蜂这4 个部分来实现智能采蜜。对此,还引用了3 种基本的行为模式:搜索模式、招募模式和选择模式。算法中蜜源即为解空间内的可能解;采蜜蜂携带了具体的蜜源信息,并通过摆舞来分享这些信息;观察蜂则在蜂巢等待,并通过分享采蜜蜂的信息去寻找蜜源;侦查蜂则随机搜索一个新的位置。ABC 算法在求解最优问题时的原理如下:
1)算法随机产生N个侦查蜂,N也表示初始时蜜源的个数。N个蜜源位置被抽象成解的空间,每个蜜源xi(i=1,2,…,N)的花蜜量对应每个解的适应度值fit。设求解问题的维数为D,即优化参数的个数。
2)初始化之后,采蜜蜂根据记忆中的信息对xi按式(1)进行领域搜索,式中i∈(1,2,…,N),j∈(1,2,…,D),xkj为随机选择的不等于i的蜜源的第j维位置,rij∈(-1,1)是一个随机数,限制xij领域的范围。若uij超出了解空间的范围,则按式(2)处理,则转化成边界值。
3)侦查蜂根据搜集到的信息来更新依附的蜜源后,对其花蜜量的多少进行判断,选择花蜜量多的采蜜。利用贪婪准则选择一个蜜源的位置,其选择蜜源的概率Pi见式(3),并像采蜜蜂一样对记忆中的位置进行改变得到新蜜源并确认新解的花蜜量。如果新解的适应度高于原始解,则用新解替代。
式中:N为解的个数,fiti表示第i个蜜源,即解的适应度值:
fi为第i个解的目标函数值。如果在寻优过程中陷局部最优时,采蜜蜂就会放弃蜜源,并变成侦查蜂,重新开始搜索。搜索过程中,蜜源经多次搜索未发生改变,则侦查蜂将随机产生新蜜源位置代替初始标记蜜源中的相应位置,确定最终蜜源。按照上述方式反复循环迭代,直到达到算法的终止条件。
2 改进人工蜂群与BP 神经网络
2.1 人工蜂群的改进
本文通过改进蜂群的搜索方式以及选择概率来优化人工蜂群算法的收敛速度和搜索能力。
2.1.1 搜索位置的改进
人工蜂群算法依靠在原有蜜源的附近随机搜索获得新的蜜源而达到收敛和避免陷入局部最小值的效果,通过采蜜蜂与侦查蜂按照式(1)随机搜索获得新蜜源,从式中可以看出在原有的蜜源附近随机产生新的蜜源可以增加算法的搜索能力,但是由于其选择的随机性,降低了算法的收敛速度。针对这个问题,ZHU 等[12]在参考粒子群算法的更新思想中,在其文章中引入了全局最优解来加快算法的收敛速度,改进公式为:
式中:uij,xij,rij和xkj和式(1)是相同的,βij是[0,1.5]的随机数,xbestj是第j维(变量)的全局最优解。从式(5)中可以看出,加入了xbestj这个全局最优解后,算法会迅速向适应度高的蜜源靠近而加快算法的收敛速度。为了能再次加快算法的收敛速度,GAO等[13]把式(1)做了如下改正:
与式(5)相比,式(6)把xij和xkj都换成xbestj,这样使得算法更加迅速向适应度高的蜜源靠近而加快算法的收敛速度。
式(5)和式(6)虽然都加快了其算法的收敛速度,但也破坏了算法的搜索能力,使其易早熟而陷入局部最优。本文为了平衡收敛速度和搜索能力,在引入全局最优解xbestj的同时再引入其邻域的最优解xbestij以及自适应因子σ,得到如下的改进搜索公式:
式(7)中rand为[0,1]的随机数,自适应因子σ= (e1+iter/maxcycle- 1)/(e- 1),其中iter和maxcycle分别为算法当前迭代次数和最大迭代次数。从式(7)中可以看出,在算法前期自适应因子σ小,而随机数则大于σ的概率大。反之在算法后期自适应因子σ大,而随机数则小于σ的概率大。故此,在前期算法大多数会按式(7)上式进行,而从式(7)上式可知,在加入了全局最优解xbestj和邻域最优解xbestij后,其算法的收敛速度会加快。而到了后期,随着迭代次数的增多,自适应因子σ的增大,算法会按式(7)下式进行,而从式(7)下式可知,只引入一个邻域最优解xbestij,虽在算法的收敛速度不会加快,但其扩展了算法的搜索能力以及多样性。
本文改进后的算法相对于式(1)来说在前期大大提高了收敛速度,而相对于式(5)和式(6)在后期增加了算法的搜索能力以及多样性。
2.1.2 概率选择的改进
在人工蜂群算法中,观察蜂是按照式(3)来选择蜜源的。从式(3)中可以看出,其适应度高的蜜源被选中的概率大,算法在优化时则向着适应度高的蜜源快速集中,这就大大降低了算法的搜索能力。因此,向万里等[14]在基于轮盘赌反向选择机制的蜂群优化算法文章里将式(3)做出如下改进:
从式中可以看出,增加了适应度低的蜜源被选中的概率,该方法虽然使得算法搜索能力增加,但在前期大量的搜索适应度低的蜜源而导致算法的收敛速度大大的降低。综合考虑这2 点,本文将引入2 个自适应调整因子w1和w2,其式如下所示:
式 中:w1= 1 - ((eiter/maxcycle- 1)/(e- 1)),w2=(eiter/maxcycle- 1)/(e- 1),其中iter和maxcycle分别为算法当前迭代次数和最大迭代次数。从式(9)可以看出,在算法前期,由于迭代次数iter很小,w1值很大,w2值很小,因此观察蜂选择适应度高的蜜源概率大,进而算法在前期增加了收敛速度。而随着迭代次数iter的增加w1值会越来越小,w2值越来越大,使得观察蜂选择适应度低的蜜源概率增大,让算法在后期增加了其搜索能力。
2.2 改进人工蜂群优化BP 神经网络
BP 神经网络由一个输入层、一个输出层和一个或者多个隐含层组成,同层神经元之间无连接,异层神经元之间向前全连接,见图1所示。BP 神经网络的主要核心是BP 算法,BP 算法主要由信息的正向传播与误差的反向传播2 部分组成。其主要核心是反向传播,先初始化权重和阈值,网络通过一次正向传播将信息从输入层经隐含层逐层计算到输出层,计算其实际值和真实值的误差,看其误差是否达到期望值,如果没有达到,则通过反向传播将误差信号沿原来的连接通路反传回来修改各层神经元的权值和阈值,直至达到期望值或到达最大限制步数。
传统BP 神经网络修改反向传播传回来的误差信是采用梯度下降的方法,但这个方法应用在复杂的路面裂缝图像上效果不是很好,本文把改进的蜂群算法去执行BP 神经网络的权值和阈值的更新过程。改进的ABC 算法的目标函数是BP 神经网络训练样本的预测值和真实值的交叉熵,交叉熵越小适应度越高。改进的ABC-BP 神经网络具体算法过程如下:
步骤1:初始化。初始化N,Limit,maxcycle和D;其中N为采蜜蜂、观察蜂和食物源,maxcycle为最大迭代次数,Limit为最大解不变搜索次数,D为向量维数,即D组BP 神经网络的权值与阈值。其维数的计算公式如下所示:
式中:I为输入层的神经元个数;H为隐藏层的神经元个数;O为输出层的神经元个数。
图1 BP 神经网络结构图Fig.1 BP neural network structure
步骤2:随机生成解。设置所有蜜蜂都为侦查蜂模式,按照式(7)来搜索随机产生蜜源。
步骤3:计算个体适应度值。把步骤2 产生的蜜源带入BP 神经网络中,然后计算其交叉熵和个体适应度值fiti。
步骤4:寻找新蜜源。采蜜蜂在蜜源附近按照式(7)搜索新蜜源,并执行步骤3 计算其适应度函数值,然后判断搜索后的蜜源是否优于前蜜源。观察蜂按照式(9)计算概率pi,并以概率pi寻找新蜜源并计算适应度函数值,判断是否优于前蜜源。若是则替代前蜜源,并令Limi=0,否则Limi=Limi+1。
步骤5:判断是否出现侦查蜂,若某些蜜源经过Limit次循环后还是不变,则放弃该蜜源。当max(Limi)≥Limit时,相应的采蜜蜂变成侦查蜂,并按照式(7)随机产生新的解。
步骤6:n=n+1,返回步骤2 直到满足终止条件(即超过最大迭代次数maxcycle)停止搜索。此时找到BP 神经网络的最优权值和阈值。
步骤7:用获取的最优权值和阈值应用在BP神经网络模型中,然后将裂缝图像测试样本进行分类。
3 改进的ABC-BP 神经网络在裂缝图像上的建立
由于裂缝在图像中所占比例较小,且裂缝形状复杂多变,这导致在提取裂缝信息所占的权重有限,不利于各参数的提取。
而通过对路面图像进行网格化处理而提高图像中裂缝的信息比例,进而使裂缝在单块图像中的权重较大,有利于图中裂缝信息的提取和保存。在路面图像的网格化中,所取网格一般可划分为16×16 像素或32×32 像素,经过试验发现,当网格划分为32×32 像素时,裂缝的识别率最高。故本文把480×640 像素的裂缝图像进行网格化,使其划分为15 行、20 列的32×32 像素的网格,具体效果见图2所示。
图2 网格化的裂缝图像Fig.2 Meshed crack image
本文通过提取能区分各个网格中是否含有裂缝的特征来训练改进的ABC-BP 混合神经网络,对路面裂缝图像的所有灰度像素点进行扫描,计算每个网格的灰度平均值Avg和灰度方差值Var以及网格内像素的归一化转动惯量NMI,计算出网格内像素点的低阶不变矩IM1,IM2,IM3,IM4 特征等7个特征量[15]。考虑到各裂缝图像会存在不同光照的影响,每个裂缝图像中的网格的灰度平均值Avg会存在很大的差异而对裂缝识别带来不利影响,于是将Avg的值用与原图总平均值之比SAvg来代替,其具体表达式为:
式中:f(x,y),m以及n分别表示像素在(x,y)处的灰度值、裂缝图像的宽度和长度。
应用上述得到的7 个特征作为裂缝图像的特征矢量作为改进的ABC-BP 神经网络的输入,激励函数采用的是非对称Sigmoid 函数,见式(12)。网络结构采用3 层神经结构,其中输入层为7 个神经元,隐藏层为16 个神经元,输出层为一个神经元。
4 裂缝检测实验及分析
为验证改进的ABC-BP 神经网络在路面裂缝图像上的实用性,本文在训练阶段采用了300 幅480×640 像素的路面裂缝图像,网格化后得到90 000 个样本。将样本集分别用改进的ABC-BP 神经网络、基本的ABC-BP 神经网络和文献[9]所提出的BP 神经网络进行独立测试。设置算法参数:蜂群N=60、最大迭代次数maxcycle=10 000,最大解不变搜索次数Limit=200,向量维数D=145。训练过程及结果如图3所示。
从图3我们可以看出,不管是改进后的ABCBP 神经网络还是基本的ABC-BP 神经网络在收敛速度和精度上都比BP 神经网络有所提高。而改进后的ABC-BP 神经网络在收敛速度和精度上比基本的ABC-BP 神经网络有所提高,基本的ABC-BP 神经网络5 000 步时陷入局部最小值而停滞。本文通过对ABC 算法在概率选择的改进和搜索位置的改进,达到前期收敛速度快,后期在陷入局部最小值而及时跳出(在2 000 步时跳出),让其在收敛速度快的同时也保证了其搜索能力。综上所述,在收敛速度以及搜索能力上,改进的ABC-BP 神经网络不管是收敛速度还是准确度上都要优于基本的ABC-BP神经网络和BP 神经网络。
图3 裂缝图像训练过程图Fig.3 Crack image training process diagram
分别采用BP 神经网络、基本ABC-BP 神经网络和本文方法对CCD 相机采集的500 幅480×640像素的裂缝图像进行测试,预测结果是包含裂缝图像的网格将以原来的灰度显现出来,不包含裂缝的网格的则变成白色,效果见图4~6。从图4中可以看出,BP 神经网络和基本ABC-BP 神经网络方法易把油渍等噪点识别成裂缝。从图4~6 看出,对于不明显的裂缝,BP 神经网络和基本ABC-BP 神经网络都存在一定程度上的漏检。而本文方法不仅能有效的区分油渍等噪点,还能识别出一些细微的、不明显的裂缝,进而从侧面说明本文的方法在识别精度上要略优于其他2 种方法,也能证实改进后的算法提高了搜索能力。
由于主观评价不能客观地反映图像分类效果,本文将采用准确率(P)和召回率(R)来衡量图像分类结果的正确性,P是正确预测有裂缝的网格与真确预测没有裂缝的网格之和和总网格之比,R是正确预测有裂缝的网格与真实有裂缝网格的总数之比。然后根据P和R给出综合评价指标Fδ,
采用δ2=0.3 使准确率的权重高于召回率。分别采用BP 神经网络、基本ABC-BP 神经网络和本文方法对500 张裂缝图像150 000 个网格进行预测,统计其相应的准确率、召回率、Fδ、漏检率以及误检率,实验结果如表1、表2和图7所示。
图4 网状裂缝Fig.4 Mesh crack
图5 竖向裂缝Fig.5 Vertical crack
图6 横向裂缝Fig.6 Transverse crack
从表1和表2可知,改进ABC-BP 算法比BP神经网络和基本ABC-BP 在准确率上有所的提高,在漏检率和误检率上有一定程度的降低。从这些实验结果数据上可以看出,本文通过对概率选择和搜索位置的改进,明显增强了ABC 算法的局部搜索能力,避免陷入了局部最小值,进而大大提高了识别精度。
表1 本算法路面图像检测结果Table 1 Road surface image detection result of the algorithm
表2 各算法路面图像检测结果对比Table 2 Comparison of road surface image detection results of various algorithms
图7 图像准确率、召回率和Fδ柱形图Fig.7 Image accuracy,recall and Fδhistogram
从图7可以看出,本文算法相对于其他2 种算法来说,3 项指标都是占优;且本文算法的3 项指标都高于95%,其较高的准确率和召回率体现了本文算法能够精确地对裂缝图像的分类。也充分的表明本算法对裂缝图像识别十分有效。
5 结论
1)提出一种改进的ABC-BP 神经网络模型,在复杂背景下能高效识别沥青路面路表裂缝。利用改进的ABC 算法优化BP 神经网络的权值,加快算法的收敛速度和提高算法的精度。
2)改进了ABC 算法的收敛速度和搜索能力:通过加入邻域最优解和全局最优解来改进蜂群的搜索方式,通过加入自适应因子对蜂群的概率选择进行改进,进而加快算法前期的收敛速度和后期的搜索能力。
3)实验结果表明,改进算法在收敛速度和识别精度上优于BP 神经网络和基本的ABC-BP 神经网络,在识别应用上具有较好的实用性。