本发明涉及计算机视觉领域,具体涉及一种基于计算机视觉的车辆损伤判别方法。
背景技术:
车辆损伤精准判别是一项非常重要的技术,能够为交通安全管理、保险公司、租车行、汽车修理厂等应用场景中带来很大的经济意义和实用意义,因此对车辆损伤精准判别方式的研究非常有意义。
一般的,车辆损伤形式有轻则弯扭、变形、断裂或破碎等,碰车伤局部、重创伤筋骨、翻车伤外形、擦挂伤表层。损伤程度的检查方法根据汽车损伤的特点,目前常用的集中车辆损伤判别方法有:(1)以外观(宏观)检查为主,凭眼看、手摸判定;(2)用简单的量具测量或拉线法检查;(3)用仪器、仪表检查。
这些传统的人工判定方式存在着工作量大、工作效率低、车辆损坏判定不够准确、受主观因素影响大、判定结果比较片面且无法实时快速获取不同场景的车辆的损坏信息等缺点。
技术实现要素:
本发明所要解决的技术问题是:提出一种基于计算机视觉的车辆损伤判别方法,解决传统技术中采用人工判别方式存在的判定不全面、不准确、效率低下的问题。
本发明解决其技术问题所采用的技术方案是:
基于计算机视觉的车辆损伤判别方法,包括以下步骤:
步骤a、标定双目图像采集系统;
步骤b、利用双目图像采集系统进行监控区域图像采集,获取采集图像的深度图;
步骤c、利用卷积神经网络对深度图像进行特征提取训练,训练车辆损坏程度判别模型;
步骤d、利用车辆损坏程度判别模型对采集的车辆图像进行损坏程度判别。
作为进一步优化,步骤a具体包括:
a1、搭建双目图像采集系统:将两台相同型号的摄像机以一定的基线距离固定在光学平台上,保证观测目标在两台摄像机成像范围之内,搭建完成后两相机之间的相对位置即固定不变;
a2、拍摄标定板图像组:将棋盘格标定板放置于平台前方,使标定板在两个相机中完整成像;通过旋转、平移标定板方式拍摄多组不同姿态下的标定板图像。
作为进一步优化,步骤b具体包括:
b1、用标定好的双目图像采集系统拍摄监控区域视频图像;其中,左图像采集系统采集的图像为原始左图像,右图像采集系统采集的图像为原始右图像;根据标定参数对左、右图像进行消除畸变和极线校正处理,使消除畸变后的两幅图像严格对应;
b2、对左、右图像进行预处理,所述预处理包括降噪、增强;
b3、对预处理后的左、右图像进行特征提取和匹配,获取图像深度图。
作为进一步优化,步骤b3中,所述获取图像深度图为计算图像三维坐标,其具体包括:
b31、提取匹配后的左右图像序列的亚像素坐标;
b32、利用是视差原理结合标定参数得到图像的三维坐标:
左图像像素坐标(xl,yl)、右图像像素坐标(xr,yr)与三维空间坐标(XW,YW,ZW)的关系
如下式所示:
其中,xl和xr表示左右图像匹配点对在像素坐标系下的横坐标,yl表示左图像中匹配点在像素坐标系下的纵坐标,B表示左右相机间的基线距离,f表示左相机焦距;B和f根据相机标定得到。
作为进一步优化,步骤c具体包括:
c1、选择训练样本及添加标签;
c2、设计卷积神经网络的网络结构;
c3、利用卷积神经网络训练车辆损坏程度判别模型。
作为进一步优化,步骤c1中,以车辆损坏的图像代表作为训练样本,根据车辆损坏部位的损坏面积来作为车辆损坏程度的判别标准,根据先验知识对损坏图像添加标签;标签类别C的典型划分是:车辆无损坏、车辆轻度损坏、车辆中度损坏、车辆重度损坏,对应的理想输出矩阵
Yp={a,b,c,d}
其中,a,b,c,d为实数。
作为进一步优化,步骤c2中具体包括:
c21、在第一隐藏层进行卷积,得到C1层,该层由8个特征映射组成,每个特征映射由28×28个神经元组成,每个神经元指定一个5×5的接受域;
在卷积神经网络中,对于卷积层的每一种输出的特征图xj有:
其中,Mj表示选择的输入特征图组合,是输入的第i种特征图和输出的第j种特征图之间的连接所用的卷积核,是第j种特征图对应的偏置,f是激活函数,Wl为第l层的权值矩阵;
c22、在第二隐藏层实现子抽样和池化,得到S2层,该层由8个特征映射组成,每个特征映射由14×14个神经元组成,每个神经元具有一个2×2的接受域,一个超系数,一个可训练偏置和一个Sigmoid激活函数;
首先定义平方误差代价函数为:
其中,N是样本个数,C是样本的分类数量,为第n个样本类xn的第k维,是第n个样本网络的输出的第k维;
超系数用样本误差函数表示,即为:
在卷积神经网络中,对于采样层的每一种输出特征图xj有:
其中,down表示下采样,f(.)是激活函数,是第l偏置,Wl为第l层的权值矩阵;
c23、在第三隐藏层进行第二次卷积,得到C3层,该层由20个特征映射组成,每个映射由10×10个神经元组成;
c24、在第四个隐藏层进行第二次子抽样和池化计算,得到S4层,该层由20个特征映射组成,每个映射由5×5个神经元组成;
c25、在第五个隐藏层进行卷积,得到C5层,该层由120个神经元组成,每个神经元指定一个5×5的接受域;
c26、将第五层与第四层并联,然后经过全映射以后输出,得到车辆损坏特征向量,从而由特征向量计算得到C典型分类输出向量Op。
作为进一步优化,步骤C26具体包括:
由第五层和第四层并联得到240个神经元组成的并联层,用XParallel表示,每个神经元指定一个5×5的接受域,然后由并联层全映射,得到特征向量X,再由特征向量计算得到C典型分类输出向量Op:
实现并联层的全映射由公式X={xi}=AXParallel,i=1,2,...,N确定,其中X为全连接输出向量,有N维,A为一个矩阵。由特征向量全映射得到输出向量描述为:
则输出向量描述为:
Op={f(yj)},j=1,2,...,k
f(yj)=Byj
其中B为一个N×k的矩阵,k为输出的类型数量,即输出向量的维数。
作为进一步优化,步骤c3中所述利用卷积神经网络训练车辆损坏程度判别模型,具体包括:
c31、向前传播阶段训练:
首先,从样图像本集中提取一个样本(X,Xp),将X作为网络的输入数据输入网络中,然后以设计的卷积神经网络结构计算X相应的实际输出Op;
c32、反向传播阶段训练:
首先,计算实际输出Op与相应的理想输出Yp的差,即损失函数:
Lcls(Op,Yp)=|Op-Yp|
然后,利用梯度下降法传播调整权矩阵:
η是梯度下降的学习率,也是实际输出与理想输出的差值η=Lclc(Op,Yp);
c33、判断是否达到终止训练的条件,若达到,则终止训练,若未达到,则继续训练。
作为进一步优化,步骤c33中,
由梯度下降的学习率结合训练次数判断是否达到终止训练的条件:
若梯度下降的学习率η较小,且训练次数达到一定值,则判定达到终止训练的条件;
或者,由超系数来判断是否达到终止训练的条件:
当超系数在一定范围内的时候训练出的结果是有效的,模型可以继续训练,若超出这个范围,可能会出现过拟合的情况,则判定达到终止训练的条件。
作为进一步优化,步骤d具体包括:
将采集到的车辆图像进行三维测量,得到深度图,然后将深度图传入训练完成的车辆损坏程度判别模型中进行前向传播,深度图将被提取出一组特征向量X={xj},j=1,2,...,N,特征向量对应的输出函数为:
则车辆损坏判别函数描述为:
fm,m∈[1,k](yj)=Byj
其中B为一个N×k的矩阵,k为输出的类型数量,即输出向量的维数;
再利用softmax回归法刻画车辆损坏程度判别的输出结果:
softmax函数为:
输出结果为:
根据输出结果判定车辆损坏程度:
若输出结果为Output=F1-a,则车辆损坏程度判别结果为车辆无损坏;
若输出结果为Output=F2-b,则车辆损坏程度判别结果为车辆轻度损坏;
若输出结果为Output=F3-c,则车辆损坏程度判别结果为车辆中度损坏;
若输出结果为Output=F4-d,则车辆损坏程度判别结果为车辆重度损坏。
本发明的有益效果是:
1.利用深度学习的方法对车辆损坏程度进行判别,能够快速准确地对车辆损伤情况做出判别,一方面大大节省车辆损伤检查所需的人力物力,同时避免了主观因素引起的车辆损坏程度判别片面的情况。
2.通过利用双目立体视觉系统获取图像的三维精准尺寸,大大提高了算法的判别精度。
3.通过“并联”的方式获得足够多的特征维数,避免了因特征不全而导致车辆损伤程度判别的错误。
4.通过梯度下降的学习率和训练次数以及可训练系数组成网络模型的训练终止条件,提高了网络模型的能够得到更为精确的输出结果。
附图说明
图1为本发明中的车辆损伤判别方法流程图。
图2为本发明中的车辆损伤判别的卷积神经网络模型结构图。
具体实施方式
本发明旨在提出一种基于计算机视觉的车辆损伤判别方法,解决传统技术中采用人工判别方式存在的判定不全面、不准确、效率低下的问题。
下面将结合附图对本发明的技术方案进行更加清楚、完整地描述;很显然,下文所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,并不用以限制本发明的保护范围。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明公开的车辆损坏程度的判别方法包括:
步骤1:标定双目图像采集系统:
在具体实施上,首先,搭建双目立体视觉硬件系统:将两台相同型号的摄像机以一定的基线距离固定在光学平台上,保证观测目标在两台摄像机成像范围之内,搭建完成后两相机之间的相对位置即固定不变。
然后,拍摄标定板图像组:将棋盘格标定板放置于双目平台前方,使标定板在两个相机中完整成像。通过旋转、平移标定板等方式拍摄多组不同姿态下的标定板图像。
步骤2:进行图像采集:
为了得到车辆损伤精准尺寸,精准判别车辆损伤程度,利用双目视觉系统可以实现车辆损伤的精准测量。具体为:
步骤2.1:用标定好的双目图像采集系统拍摄监控区域视频图像。其中,左图像采集系统采集的图像为原始做图像,右图像采集系统采集的图像为原始右图像。根据标定参数对左、右图像进行消除畸变和极线校正处理,使消除畸变后的两幅图像严格地对应。
步骤2.2:图像预处理:对原始左、右图像进行降噪、增强等预处理。
步骤2.3:获取图像深度图:主要目标为计算图像的三维坐标。具体为:
步骤2.3.1:分别提取左、右图像的特征。
步骤2.3.2:匹配左、右图像特征点。
步骤2.3.3:利用双目立体视觉测量模型求出图像的三维坐标。得到多组的匹配点对以后,根据匹配点对在左、右图像中对应的像素坐标即可实现像素坐标到世界坐标系的转换,完成图像的三维坐标测量。具体如下:
a.提取匹配后左右图像序列的亚像素坐标。在图像的空间定位中,图像测量距离较远,像素坐标的一个微小变化也会引起巨大测量误差,本发明选择在图像序列点匹配完成后再提取亚像素坐标使得像素的三维测量结果更加精确。
b.利用视差原理结合标定参数得到图像的三维坐标。左图像像素坐标(xl,yl)、右图像像素坐标(xr,yr)与三维空间坐标(XW,YW,ZW)的关系如下式所示:
其中,xl和xr表示左右图像匹配点对在像素坐标系下的横坐标,yl表示左图像中匹配点在像素坐标系下的纵坐标。B表示左右相机间的基线距离,f表示左相机焦距。B和f根据相机标定得到。由此就得到了图像的三维坐标,其中的Z就是表示的深度图。
步骤3:利用CNN(卷积神经网络)对深度图像进行特征提取训练,最终得到车辆损坏程度的判别模型:卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。在CNN中针对输入数据建立了网络层与空间域之间的信息联系,通过各层的卷积以及池化等操作,使得最终得出有用的物体表征特征。具体过程为:
步骤3.1:选择训练样本及添加标签,即输入数据X的选择和理想输出Yp的设置,也就是数据的初始化。对于训练的样本和对应标签获得方式为:以车辆损坏的图像代表作为训练样本,根据车辆损坏部位的损坏面积来作为车辆损坏程度的判别标准,根据先验知识对损坏图像添加标签。这个过程是人工执行的。这里的标签类别C典型划分是:车辆无损坏、车辆轻度损坏、车辆中度损坏、车辆重度损坏,对应的理想输出矩阵
Yp={a,b,c,d}
其中,a,b,c,d为实数。
步骤3.2:CNN网络结构设计;本发明的CNN网络结构具体设计如下:
步骤3.2.1:在第一隐藏层进行卷积,得到C1层。具体为:它由8个特征映射组成,每个特征映射由28×28个神经元组成,每个神经元指定一个5×5的接受域。在CNN中,对于卷积层的每一种输出的特征图xj有:
其中,Mj表示选择的输入特征图组合,是输入的第i种特征图和输出的第j种特征图之间的连接所用的卷积核,是第j种特征图对应的偏置,f是激活函数,Wl为第l层的权值矩阵。
步骤3.2.2:第二隐藏层实现了子抽样和池化,得到S2层。具体为:它同样由8个特征映射组成,但其每个特征映射由14×14个神经元组成。每个神经元具有一个2×2的接受域,一个超系数,一个可训练偏置和一个Sigmoid激活函数。可训练系数和偏置控制神经元的操作点。首先定义平方误差代价函数为:
其中,N是样本个数,C是样本的分类数量,为第n个样本类xn的第k维,是第n个样本网络的输出的第k维。
超系数用样本误差函数表示,即为:。
在CNN中,对于采样层的每一种输出特征图xj有:
其中,down表示下采样,f(.)是激活函数,是第l偏置,Wl为第l层的权值矩阵。
步骤3.2.3:第三隐藏层进行第二次卷积,得到C3层。具体为:它由20个特征映射组成,每个映射由10×10个神经元组成。该隐藏层中的每个神经元可能具有和下一个隐层几个特征映射相连的冲突链接,它以与第一个卷积层相似的方式操作。
步骤3.2.4:第四个隐藏层进行第二次子抽样和池化计算,得到S4层。具体为:它由20个特征映射组成,但每个映射由5×5个神经元组成,它以与第一次抽样相似的方式操作。
步骤3.2.5:第五个隐藏层实现卷积,得到C5。具体为:它由120个神经元组成,每个神经元指定一个5×5的接受域。
步骤3.2.6:为了避免训练得到的特征过少,将第五层与第四层“并联”,然后经过全映射以后输出,得到车辆损坏特征向量,从而计算得到C典型分类输出向量Op。具体为:由第五层和第四层“并联”得到240个神经元组成的“并联层”,用XParallel表示,每个神经元制定一个5×5的接受域。然后由“并联层”全映射,得到特征向量X,再由特征向量计算得到C典型分类输出向量Op。详细为:实现“并联层”的全映射由公式X={xi}=AXParallel,i=1,2,...,N确定,其中X为全连接输出向量,有N维,A为一个矩阵。由特征向量全映射得到输出向量描述为:
则输出向量描述为:
Op={f(yj)},j=1,2,...,k
f(yj)=Byj
其中B为一个N×k的矩阵,k为输出的类型数量。即输出向量的维数。
通过步骤3.2.1-步骤3.2.6设计的车辆损伤判别的卷积神经网络模型结构如图2所示。
步骤3.3:训练CNN网络模型。CNN的训练分为两个阶段,第一阶段是向前传播阶段,第二阶段是向后传播阶段。
步骤3.3.1:向前传播阶段:首先,从样图像本集中提取一个样本(X,Xp),将X作为网络的输入数据输入网络中,然后以步骤3.2的网络结构,计算X相应的实际输出Op。
步骤3.3.2:反向传播阶段:
a.算实际输出Op与相应的理想输出Yp的差,即损失函数
b.利用梯度下降法传播调整权矩阵。具体为:
η是梯度下降的学习率,也是实际输出与理想输出的差值η=Lclc(Op,Yp)。
步骤3.3.3:训练终止判断。一方面,由梯度下降的学习率和训练次数决定,另一方面由可训练系数决定,具体为:
(1)由步骤3.3.2中计算出的梯度下降学习率η如果过小,则说明,当前得出的实际输出结果已经接近于理想输出结果,那么有可能就可以停止训练,如果此时训练次数达到一定的值,那么即可终止训练。
(2)由步骤3.2.2中描述的超系数:
超系数作为训练的判断依据,即当超系数在一定范围内的时候训练出的结果是有效的,模型是可以继续训练的,当不在这个范围之内,可能会出现过拟合的情况,那么此时就应该停止训练。
步骤4:将采集到的车辆图像进行三维测量,得到深度图,然后将深度图传入训练完成的卷积神经网络模型中进行前向传播,深度图将被提取出一组特征向量X={xj},j=1,2,...,N,特征向量对应的输出函数为:
则车辆损坏判别函数描述为:
fm,m∈[1,k](yj)=Byj
其中B为一个N×k的矩阵,k为输出的类型数量。即输出向量的维数。再利用softmax回归法刻画车辆损坏程度判别的输出结果。具体为:
softmax函数为:
输出结果为:
其中,k为输出的类型数量,此例k=4。
那么根据步骤3.2所述的C典型划分,如果输出的结果对应为Output=F1-a,则车辆损坏程度判别结果为车辆无损坏;如果输出的结果对应为Output=F2-b,则车辆损坏程度判别结果为车辆轻度损坏;如果输出的结果对应为Output=F3-c,则车辆损坏程度判别结果为车辆中度损坏;如果输出的结果对应为Output=F4-d,则车辆损坏程度判别结果为车辆重度损坏。