一种基于语义分割的桥梁路面裂缝检测和分割方法与流程

文档序号:15400609发布日期:2018-09-11 17:25阅读:503来源:国知局

本发明属于计算机视觉、深度学习领域,具体涉及一种基于语义分割的桥梁路面裂缝检测和分割方法。



背景技术:

采取有效的手段对桥梁裂缝进行检测与分割,对确保公共交通的安全和正常运行起着十分重要的作用,长期以来已经受到了国内外学术界的广泛关注。从传统的图像处理技术到如今机器学习与深度学习的大热,国内外学者不断将新的技术用于桥梁路面裂缝的检测和分割,并且取得了一些优秀的研究成果;kirschke等提出了一种基于图像直方图的路面裂缝分割算法,该算法根据图像直方图特点,利用阈值分割提取裂缝信息;孙亮等人提出了基于自适应阈值canny算法的裂缝检测方法,该方法针对只能人工选取阈值的缺点进行了改进,结合harris特征检测算法和图像中各像素点的梯度值,对裂缝图像进行提取;landstrom等人提出了一种全自动裂缝监测系统,该算法结合形态学处理和逻辑回归算法对裂缝进行检测,利用统计学分类方法滤除噪声,提高检测精度;随着科学技术的发展,将深度学习应用到桥梁裂缝检测的算法随即出现;chenyao等人提出了基于爬墙机器人的桥梁裂缝的检测和分类方法,该方法应用机器视觉中的非接触采集图像和机器学习中的支持向量机算法,并且结合小波变换与形态学分析完成了裂缝的提取与识别,开始了对深度学习领域的探索;刘洪公等人提出了基于卷积神经网络的桥梁裂缝检测与识别,该算法结合机器视觉与卷积神经网络技术,改进裂缝分类的卷积神经网络模型(cnn),最终提出一种新的智能裂缝检测方案;zhanglei等人提出了基于深度卷积神经网络的路面裂缝检测算法,该算法训练了有监督的深度卷积神经网络,对收集到的图像中的每个图像块进行分类,并产生良好效果;以上提出的桥梁裂缝检测算法之所以取得了良好的实验效果,是因为采集图像的对比度很高,噪声很低,且场景比较简单,不存在任何障碍物;而现实生活中这种理想的情况却比较少,实际的桥梁路面往往会存在水渍、车道线、落叶等障碍物或者路面纹理极其复杂,传统方法难以满足工程需要。

针对以上研究的不足,提出了基于语义分割的复杂背景下的桥梁路面缝检测和分割方法。



技术实现要素:

为了解决现有技术中存在的受环境因素制约,对于复杂背景下的检测和分割方法不准确的问题,本发明提供了一种基于语义分割的桥梁路面裂缝检测和分割方法;本发明要解决的技术问题通过以下技术方案实现:

一种基于语义分割的桥梁路面裂缝检测和分割方法,包括以下步骤:

步骤一:数据集采集,通过对沿路面裂缝方向连续拍照,得到裂缝图像样本,并人工的制作相应的标签,对所述裂缝图像进行语义分割标注,对裂缝图像中裂缝标注为一种单一颜色,裂缝图像中裂缝之外的所有干扰物以及背景全部设置为另一种统一的单一颜色;对数据集进行扩增,并将扩增后数据集随机分类为训练集与测试集;

步骤二:将训练集中裂缝图像分次输入fc-densenet103网络模型进行训练,具体方法如下:

步骤1:将训练集中裂缝图像进行一次3*3的卷积;

步骤2:并将卷积结果输入包含4个layers层的denseblock模块;

步骤3:将所述步骤2结果进行transitiondown操作,降低裂缝图像分辨率;

步骤4:将所述denseblock模块layers层数量依次设置为5层、7层、10层、12层,依次重复4次步骤2与步骤3;

步骤5:将所述步骤4的结果输入由15个layers组成的bottleneck,完成全部下采样,并进行多个特征的连接操作;

步骤6:将上层输出结果输入由transitionup和denseblock组成的上采样通道,denseblock对应下采样中的layers层数为12层;

步骤7:将所述步骤6中denseblock的layers层数依次设为10、7、5、4,重复4次步骤6;

步骤8:对所述步骤7的输出结果进行1*1卷积操作;

步骤9:将所述步骤8结果输入softmax层进行判断,输出裂缝与非裂缝的概率;

步骤三:所述步骤二训练完成后,通过训练好的fc-densenet103网络模型对测试集中裂缝图像进行测试,得到测试结果。

进一步的,所述步骤二中fc-densenet103网络模型包括由denseblock以及transitiondown组成的下采样路径,和由denseblock与transitionup组成的上采样路径,以及softmax函数。

进一步的,所述fc-densenet103网络模型共由103个卷积层构成:第一个卷积直接作用于输入图像,由denseblock组成的下采样路径中有38个卷积层,瓶颈bottleneck中有15个卷积层,由denseblock组成的上采样路径中有38个卷积层,所述fc-densenet103网络模型中还包含5个transitiondown,每个transitiondown包含一个卷积,以及5个transitionup,每个transitionup包含一个转置卷积,以及网络中最后一层的1*1卷积。

进一步的,所述步骤5完成下采样后,对多个输出特征进行连接操作,具体表示为如公式(1):

xl=hl([x0x1,...,xl-1](1)

式中l表示层数,xl表示l层的输出,[x0x1...xl-1]表示将0到l-1层的输出特征图连接,hl(·)表示batchnormalization、relu和3*3的卷积的组合。

进一步的,所述步骤2中包含4个layers层的denseblock模块,其layer层由batchnormalization、relu、3*3卷积和dropout构成,所述dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,以使每一个mini-batch都在训练不同的网络,其中dropout=0.2。

进一步的,所述batchnormalization具体算法如下:

batchnormalization算法在每一次迭代中的每一层输入都进行了归一化,将输入数据的分布归一化为均值为0,方差为1的分布,具体如公式(2):

其中,xk表示输入数据的第k维,e[xk]表示k维的平均值,表示标准差;

batchnormalization算法设置了两个可学习的变量γ和β,具体如公式(3),

γ和β用于还原上一层应该学到的数据分布。

进一步的,所述relu包括连续的非线性激活函数activationfunction与rectifier,具体计算如公式(4)所示:

rectifier(x)=max(0,x)(4)。

进一步的,所述transitiondown用于减少特征图的空间维度,由batchnormalization、relu、1*1卷积与2*2池化操作组成,其中1*1的卷积用于保存特征图的数量,2*2的池化操作用于降低特征图的分辨率,所述transitionup由一个转置卷积构成,用于恢复输入图像的空间分辨率,所述转置卷积仅对最后一个denseblock的特征图使用。

进一步的,所述bottleneck是由15个layers层构成的denseblock。

进一步的,所述fc-densenet103网络模型采用filterconcatenation把特征图按深度链接起来。

与现有技术相比,本发明的有益效果:

传统的裂缝检测大多采用边缘检测、形态学或者阈值化等方法,需要人为设置和调整参数。随着深度学习的快速发展,该方法已经成功应用到桥梁裂缝检测领域,虽具有自适应性,不再需要人为设置和调整参数,但目前已知的深度学习方法均建立在受噪声影响小,裂缝目标清晰的基础上,低估了桥梁路面图像的复杂程度,难以满足工程应用的需要,本发明将densenet结构用于桥梁路面裂缝检测与提取,并取得了显著效果,打破了原有桥梁裂缝检测中背景单一的局限,更有实用价值。

附图说明

图1是桥梁路面裂缝图像。

图2是裂缝图像以及裂缝图像标签可视化后的图像。

图3是扩增后数据集图像。

图4是denseblock示意图。

图5是fc-densenet103网络模型的具体结构。

图6是layers层的具体结构。

图7是transitiondown的具体结构。

图8是transitionup的具体结构。

图9是部分测试结果图。

具体实施方式

下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。

一种基于语义分割的桥梁路面裂缝检测和分割方法,包括以下步骤:

步骤一:数据集采集,通过无人机沿路面裂缝方向飞行,并连续拍照,得到裂缝图像;对裂缝图像进行语义分割,需要对数据集中的样本人工的制作相应的标签;在具体的标注过程中,对裂缝图像中裂缝标注为一种单一颜色,裂缝图像中裂缝之外的所有干扰物以及背景全部设置为另一种统一的单一颜色;基于语义分割的桥梁路面缝检测和分割方法的实现,需要大量的、带语义类别的标签的路面裂缝图像作为训练集和测试集;但是,到目前为止,全球还没有公开的、带类别标签的、用于桥梁路面裂缝图像语义分割的数据集合;因此,必须自己创建用于桥梁路面裂缝图像检测和分割的数据集合;由于手动制作图像标签也有相当大的工作量,因此我们应采用效率最高、计算量最小的数据集扩增方法;具体采用的数据增强的方法为:

a.从256×256的图像中提取随机的224×224的碎片;

b.对随机裁取的碎片进行水平反射与垂直反射;

并将扩增后数据集随机分类为训练集与测试集;

步骤二:将训练集中裂缝图像分次输入fc-densenet103网络模型进行训练,具体方法如下:

步骤1:将训练集中裂缝图像进行一次3*3的卷积;

步骤2:并将卷积结果输入包含4个layers层的denseblock模块;

步骤3:将步骤2结果进行transitiondown操作,降低裂缝图像分辨率;

步骤4:将denseblock模块layers层数量依次设置为5层、7层、10层、12层,依次重复4次步骤2与步骤3;

步骤5:将步骤4的结果输入由15个layers组成的bottleneck,完成全部下采样,并进行多个特征的连接操作;

步骤6:将上层输出结果输入由transitionup和denseblock组成的上采样通道,denseblock对应下采样中的layers层数为12层;

步骤7:将步骤6中denseblock的layers层数依次设为10、7、5、4,重复4次步骤6;

步骤8:对步骤7的输出结果进行1*1卷积操作;

步骤9:将步骤8结果输入softmax层进行判断,输出裂缝与非裂缝的概率;

步骤三:步骤二训练完成后,通过训练好的fc-densenet103网络模型对测试集中裂缝图像进行测试,得到测试结果。

如图5、图6、图7、图8所示,步骤二中fc-densenet103网络模型包括由denseblock以及transitiondown组成的下采样路径,和由denseblock与transitionup组成的上采样路径,以及softmax函数,denseblock与transitionup组成的的上采样路径用于恢复输入图像空间分辨率,其中m代表特征图的个数,c代表最后分类个数。

fc-densenet103网络模型共由103个卷积层构成:第一个卷积直接作用于输入图像,由denseblock组成的下采样路径中有38个卷积层,瓶颈bottleneck中有15个卷积层,由denseblock组成的上采样路径中有38个卷积层,fc-densenet103网络模型中还包含5个transitiondown,每个transitiondown包含一个卷积,以及5个transitionup,每个transitionup包含一个转置卷积,以及网络中最后一层的1*1卷积。

denseconvolutionalnetwork(densenet)是一种具有密集连接的卷积神经网络。在该网络中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有层输出的并集,而该层所学习的特征图也会被直接传给其后面所有层作为输入。在传统的卷积神经网络中,如果你有l层,那么就会有l个连接,但是在densenet中,会有l(l+1)/2个连接,具体表示为如下公式(1):

xl=hl([x0x1,...,xl-1])(1)

式中l表示层数,xl表示l层的输出,[x0x1...xl-1]表示将0到l-1层的输出特征图连接;hl(·)表示batchnormalization、relu和3*3的卷积的组合。

众所周知,在一定程度上网络模型越深,取得的效果越好,然而网络越深往往越难以训练;因为卷积网络在训练的过程中,前一层的参数变化影响着后面层的变化,而且这种影响会随着网络深度的增加而不断放大。卷积网络进行训练时,绝大多数都采用批梯度下降法,那么随着输入数据的不断变化以及网络中参数不断调整,网络的各层输入数据的分布则会不断变化,那么各层在训练的过程中就需要不断的改变以适应这种新的数据分布,从而造成网络训练困难并且难以拟合的问题;针对这种问题,本发明在训练过程中引入batchnormalization层;

batchnormalization算法在每一次迭代中的每一层输入都进行了归一化,将输入数据的分布归一化为均值为0,方差为1的分布,具体如公式(2):

其中,xk表示输入数据的第k维,e[xk]表示k维的平均值,表示标准差;

batchnormalization算法设置了两个可学习的变量γ和β,具体如公式(3),

γ和β用于还原上一层应该学到的数据分布,y表示数据输出值。

为了增强网络的表达能力,深度学习引入了连续的非线性激活函数activationfunction,relu包括连续的非线性激活函数activationfunction与rectifier函数;网络中一般采用的激活函数有sigmod函数和rectifier函数,具体计算如公式(4)所示:

rectifier(x)=max(0,x)(4)。

由于激活函数relu一般被认为有生物上的解释,并且relu已经被证明比sigmod函数的拟合效果更好;因此,模型中的激活函数选择使用relu。

根据(1)式可知我们需要对多个输出特征图进行连接操作,而进行连接操作的必要条件是特征图的大小一致;在卷积网络中下采样层是必不可少的,它的作用是通过改变特征图的大小来进行降维;因此,为了便于在我们的体系结构中能进行下采样并且顺利完成连接操作,我们将网络划分为多个密集连接的密集块denseblock,每个denseblock中的特征图的大小相同。

步骤2中包含4个layers层的denseblock模块,其layer层由batchnormalization、relu、3*3卷积和dropout构成,dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,以使每一个mini-batch都在训练不同的网络,其中dropout=0.2,采用dropout层可以有效防止过拟合,提高实验准确率。

transitiondown操作用来减少特征图的空间维度,这样的转换由batchnormalization、relu、1*1卷积和2*2池化操作组成;其中使用1*1的卷积用于保存特征图的数量,使用2*2的池化操作用于降低特征图的分辨率。随着层数的增加导致特征数量线性增长,然而,池化操作可以有效降低特征图的分辨率,因此通过池化操作来降低空间分辨率,以此来补偿由层数增加造成的特征图数量的增长。

transitionup操作的作用是恢复输入图像的空间分辨率,这样的转换由一个转置卷积构成,转置卷积仅对最后一个denseblock的特征图使用,因为最后一个denseblock综合了所有之前denseblock的信息。

下采样路径的最后一层被称为bottleneck;bottlenek实际是由15个layers层构成的denseblock,其优点是可以缓解梯度消失,并且大大减少了计算量。

fc-densenet103网络模型采用filterconcatenation把特征图按深度链接起来。

本发明所提供的另一实施例为:

数据集采集过程具体的采集方法是让无人机在路面裂缝的附近进行悬停,然后通过无人机上的云台调整面阵相机的姿态,使得相机的镜头平行于路面裂缝的表面,并且要求相机的镜头距离路面裂缝的表面大致为30cm,调整好相机的姿态和距离后,然无人机从悬停状态转化为沿着路面裂缝方向平稳飞行,连续拍照,拍照如图1所示。

本实施例使用的图像语义分割标注工具是像素级别的图像语义分割标注工具labelme;具体的标注方法是,把图像中的裂缝标注为绿色即rgb颜色为(0,255,0),图像中裂缝之外的所有干扰物以及背景全部设置为黑色,即rgb颜色为(0,0,0);裂缝图像以及对裂缝图像标签可视化后的图像如图2所示,其中第一行为原图,第二行为裂缝标签可视化后图像。

通过数据增强对数据集进行数据库扩增,使数据库扩增为原来的4096倍。部分扩增后的数据集如下图3所示,其中第一行为原图,第二行为对原图进行随机裁剪后的图像,第三行为对裁剪后图像进行水平翻转后的图像,第四行为对裁剪后的图像进行垂直翻转后的图像。

将处理好的数据集输入fc-densenet103模型进行训练,首先用3*3的卷积核对输入数据进行处理。由于原图为彩色图像,有rgb三个通道,因此输入图像的m为3,经过3*3的卷积运算后,m成为48。

将卷积处理后的图像输入包含4个layers层的denseblock模块,每个denseblock是前面特征图的迭代级联,因此经过此模块后m为上层卷积后的特征图个数与新增特征图个数之和,即48+4*16=112。

进行transitiondown;经过denseblock后特征数量线性增长,进行transitiondown可以有效降低特征图的分辨率,以此来补偿由层数增加造成的特征图数量的迅速增长,可有效避免信息爆炸;transitiondown仅降低特征图分辨率,不改变数量,因此m仍然为112。

仅改变denseblock的layers层数,将层数依次设置为5层、7层、10层、12层,重复4次图像输入denseblock模块与进行transitiondown步骤;同样的计算原则下,可得m依次为192、304、464、656。

输入bottleneck;bottleneck实际是一个由15层layers组成的denseblock;因此,特征图个数仍然为之前特征图的特征级联,即m=896+15*16=896。

将上层输出结果输入由transitionup和denseblock组成的上采样通道;denseblock对应下采样中的layers层数为12层。由转置卷积上采样上一个denseblock生成的特征图,然后与下采样过程中相同分辨率的特征图进行跨层连接,以用于弥补池化过程中丢失的细节特征;为了避免特征图爆炸,此时的denseblock的输入并不连接到它的输出;因此,此时的m一共由三部分构成,来自tu的特征图数量、来自下采样路径的相同分辨率的特征图数量以及新denseblock中生成的特征图数量;即m=15*16+656+12*16=1088。

将denseblock的layers层数依次为10、7、5、4;重复将上层输出结果输入由transitionup和denseblock组成的上采样通道;计算得的m依次为816、578、384、256。

对图像进行1*1卷积操作,将m降为类别个数,由于我们用于桥梁裂缝的提取,只分为裂缝与非裂缝,因此,此时m=2。

最后输入softmax层进行判断,输出裂缝与非裂缝的概率;若裂缝概率大于非裂缝概率,则判断该像素为裂缝;若裂缝概率小于非裂缝概率,则判断该像素为非裂缝。

利用训练好的模型,对测试集进行测试。得到的部分测试结果如下图9所示;其中第一、三行是原图像,第二、四行是测试结果。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1