本发明属于机器视觉测量领域,具体是一种基于卷积神经网络的运动模糊编码点的身份识别方法。
背景技术:
编码标记点被广泛用于基于机器视觉的工业测量和逆向工程中。编码标记点的身份识别是后续处理的基础。现有的编码标记点身份识别方法都是基于静态拍摄的清晰图像。识别方法大致包括以下步骤1)图像降噪,2)检测边缘,3)从边缘中挑选接近于椭圆的封闭曲线,作为编码点中心的候选者,4)对椭圆周边的局部图像进行几何变换,可以变换为圆或者矩形,5)在变换以后的图像中,根据像素灰度等级判定为0或者1,6)根据上一步确定的二进制串进行解码。
现有的身份识别方法也有多种,主要是实现细节上略有区别,例如识别方法中的降噪可以选用不同的算法,边缘检测可以使用不同的算子;图像也可以选择不变换实拍的编码点的图像,而是变换理想的编码点的图像为一个椭圆。但是这些方法基本上都是遵循上述过程。
公开的方法中,例如周玲发表的论文《近景摄影测量中标记点的自动检测》(应用科学学报,2007.5,第25卷第3期,288-294);宋丽梅等发表的《环状编码标记点的检测与识别》(光学精密程,2013.12月,第21卷第12期,3239-3247)。由于边缘检测需要较清晰的图像,图像变换和灰度判断依赖于相机瞬间成像模型保存的结构关系,此类方法适合于处理静态拍摄的清晰图像。
但是,当被测量的物体处于高速运动状态时,得到的图像不可避免地出现运动模糊,并且得到清晰的图像往往很困难,因此上述方法即失效。为了减小运动引起的模糊,就需要减少曝光时间,为了得到正确曝光的图像,作为补偿,就需要调高感光度或者增大光圈。然而提高感光度带来的结果是信噪比降低,严重的噪声将导致图像质量降低,不利于后期处理。增大光圈带来的结果是景深变浅,焦外模糊更加严重,而且镜头的光圈范围受制于物理结构和制造成本,一般是非常有限的。
因此减少曝光时间以及增大光圈这两种方法并不能解决当被测量的物体处于高速运动状态时,图像的运动模糊问题。因此基于带有运动模糊的图像,识别编码标记点身份的方法一直是本领域技术人员待解决的技术难题。
技术实现要素:
为解决现有技术中存在的问题,本发明公开了一种基于卷积神经网络的运动模糊编码点的身份识别方法,该方法能够能容忍一定程度的运动模糊和图像噪声并且具有良好的稳健性。
本发明是这样实现的,一种基于卷积神经网络的运动模糊编码点的身份识别方法,具体步骤如下:
步骤一、标定实拍相机,构造虚拟相机编码点,获取大量运动模糊编码点图像-编码点身份样本;
步骤二、构造卷积神经网络MBCNet;
步骤三、将步骤一中得到的运动模糊编码点图像-编码点身份样本的集合对步骤二中的卷积神经网络MBCNet进行训练及测试;
步骤四、运用训练后的卷积神经网络MBCNet对运动模糊图像进行分割、分类,即可获得对应的编码标记点身份ID。
进一步,所述的步骤一具体如下:
步骤1.1、对实拍所用相机进行标定,确定相机的内参矩阵K,像平面记做π1;
步骤1.2、确定在相机坐标系下,被测物体的空间运动区域Ω;
步骤1.3、确定编码标记点的边长l;确定需要使用的编码标记点的序号集合M,准备好相应的编码标记点的图形Im,其中m∈M;
步骤1.4、构造虚拟场景和虚拟相机:虚拟场景采用虚拟相机的坐标系,虚拟相机的内参矩阵为K;
步骤1.5、虚拟的编码点为一个正方形T(m),边长为l,正方形正面贴有编码标记点图像Im,编码标记点的图像Im恰好填充正方形T(m);正方形所在平面记做π0;
其中,正方形的四个顶点在π0内坐标分别为:
在空间的齐次坐标分别为:
步骤1.6、在空间运动区域Ω中选取随机的两个点P0以及P1,分别作为编码标记点运动的起点P0和终点P1;
步骤1.7、选取两个随机的向量作为起点的方向向量和终点的方向向量
步骤1.8、由P0,P1.决定一条三次样条曲线P=P(t),t∈[0,1];
步骤1.9、在参数区间[0,1]上取均匀分割的采样点tn,其中,
式中,N为静态瞬间的个数;这里可以增加大N的取值范围,一般在100以上,数量越大,效果越好,而且本来就是要生成大量模糊图像,所以要大一些;在计算资源许可的情况下,取值大一些,效果更好。至少保证相邻的两个瞬间,编码点中心在虚拟相机平面上的投影距离不超过2像素。
其编码标记点的姿态由函数α、β、γ决定,
其中α=α(t),β=β(t),γ=γ(t),t∈[0,1],这三个函数为线性函数,由α(0),α(1),β(0),β(1),γ(0),γ(1)完全决定,这6个值在[0,2π]随机选取;
选择模糊程度参数b,b为在2到N之间的整数;取值小则模糊程度轻,取值大则模糊程度大。
对每一个n=0,1,…,N,计算tn时刻的姿态角αn、βn、γn,其中αn=α(tn),βn=β(tn),γn=γ(tn),计算tn时刻的变换矩阵
其中
步骤1.10、计算出tn时刻正方形四个顶点在空间的齐次坐标,表示为列向量Xi=P(tn)+RnSi(i=1,2,3,4);
步骤1.11、计算出Xi在像平面的投影ui=KXi,i=1,2,3,4;
步骤1.12、根据Si和ui的对应关系计算从π0到π1的单应矩阵Hn;
步骤1.13、利用Hn和Im(m∈M)计算出虚拟相机在tn时刻的成像结果Jm,n;
步骤1.14、计算模糊图像(Bm,k,m)就是一个运动模糊编码点图像-编码点身份样本;Bm,k需要经过适当剪裁,使其符合网络输入图像的尺寸,且剪裁以后的图像,包含有效的模糊编码点,理想的状态为,包含了完整的一个编码点的模糊图像,四周还有少许空白。剪裁后保留有效区域,尺寸适合卷积神经网络的输入;重复步骤1.6至步骤1.14,获取大量运动模糊编码点图像-编码点身份样本;该样本的集合记做D;
步骤1.15、将样本的集合D随机分割为两个互不相交的子集D1和D2,分别用于训练和测试;子集D1,D2分配的数据比值在(65~75):(35~25)之间。
进一步,所述的步骤二中卷积神经网络MBCNet的功能层包括输入层,若干个卷积层、池化层、全连接层、输出层;具体地,卷积神经网络MBCNet从输入到输出的层次结构为:输入层,卷积层C1,池化层P2,卷积层C3,池化层P4,卷积层C5,池化层P6,卷积层C7,全连接层F8,输出层;网络的结构和参数可以根据实际需要做相应的调整。当编码标记点的数目多的时候,可以增加卷积层的个数和每个卷积层中核的个数。当输入更大尺寸的图片的时候可以增加核的尺寸和滑动步长。反之,当编码标记点的数目较少时,可以相应地减小这些参数,以降低计算成本。
进一步,所述的卷积层C7和全连接层F8使用Dropout,每次更新部分权值;所述的输出层采用Softmax回归模型。
进一步,所述的步骤三为:用子集D1训练MBCNet,并用D2进行测试,重复训练;当测试正确率测试数据集的平均损失降到0.05以下训练结束,其中,损失函数可以采用交叉熵,效果更好。
进一步,所述的步骤四具体如下:
步骤4.1、根据实拍编码标记点的运动模糊图像,其集合记为C1;
步骤4.2、对C1中的图片进行分割,使得分割后的图像区域尺寸、且分割以后的图像只有一个,同时包含完整的一个编码点的模糊图像;即符合MBCNet的输入,分割以后的图像集合记为C2;
步骤4.3、对C2中的图像用MBCNet进行分类,输出的结果就是对应的编码标记点身份ID。
本发明针对现有技术的有益效果在于:
(1)通过获取大量的模糊图像和编码点身份配对的样本,再通过卷积神经网络对大量的样本的学习来逼近模糊图像和编码标记点身份的函数关系;
(2)采用计算机合成运动模糊图像的方法,快速产生大量样本,训练卷积神经网络,然后用训练出来的网络来对实际拍摄的运动模糊图像进行处理,得到对应的编码标记点的身份;
(3)本发明将卷积神经网络的训练和编码标记点的身份识别分开在不同的时间和机器上进行,从而使识别的速度大大加快;同时具有良好的稳健性,能容忍一定程度的运动模糊和图像噪声。
(4)本发明对于高速运动物体机器视觉测量可以提供快速可靠的前期数据,扩大机器视觉测量方法的应用领域。
附图说明
图1为本发明基于卷积神经网络的运动模糊编码点的身份识别方法中构造的卷积神经网络MBCNet结构示意图;
图2为本发明基于卷积神经网络的运动模糊编码点的身份识别方法中模拟生成的编码点运动模糊图像;
图3为本发明基于卷积神经网络的运动模糊编码点的身份识别方法中实际场景中采集的编码点运动模糊图像;
图4为本发明基于卷积神经网络的运动模糊编码点的身份识别方法实施例表一中第五组数据集训练过程中迭代次数与识别精度的关系图;
图5为本发明基于卷积神经网络的运动模糊编码点的身份识别方法实施例表一中第五组训练数据量与识别精度的关系图。
具体实施方式
为了便于本领域技术人员的理解,下面结合具体实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。
步骤一、标定实拍相机,构造虚拟相机编码点,获取大量运动模糊编码点图像-编码点身份样本;
步骤1.1、对实拍所用相机进行标定,确定相机的内参矩阵K,像平面记做π1;
步骤1.2、确定在相机坐标系下,被测物体的空间运动区域Ω;
步骤1.3、确定编码标记点的边长l;确定需要使用的编码标记点的序号集合M,准备好相应的编码标记点的图形Im,其中m∈M;
步骤1.4、构造虚拟场景和虚拟相机:虚拟场景采用虚拟相机的坐标系,虚拟相机的内参矩阵为K;
步骤1.5、虚拟的编码点为一个正方形T(m),边长为l,正方形正面贴有编码标记点图像Im,编码标记点的图像Im恰好填充正方形T(m);正方形所在平面记做π0;
其中,正方形的四个顶点在π0内坐标分别为:
在空间的齐次坐标分别为:
步骤1.6、在空间运动区域Ω中选取随机的两个点P0以及P1,分别作为编码标记点运动的起点P0和终点P1;
步骤1.7、选取两个随机的向量作为起点的方向向量和终点的方向向量
步骤1.8、由P0,P1.决定一条三次样条曲线P=P(t),t∈[0,1];
步骤1.9、在参数区间[0,1]上取均匀分割的采样点tn,其中,
其中,编码标记点的姿态由函数α、β、γ决定,
其中α=α(t),β=β(t),γ=γ(t),t∈[0,1],这三个函数为线性函数,由α(0),α(1),β(0),β(1),γ(0),γ(1)完全决定,这6个值在[0,2π]随机选取;
选择模糊程度参数b,b为在2到N之间的整数;取值小则模糊程度轻,取值大则模糊程度大。
对每一个n=0,1,…,N,计算tn时刻的姿态角αn、βn、γn,其中
αn=α(tn),βn=β(tn),γn=γ(tn),计算tn时刻的变换矩阵
其中
步骤1.10、计算出tn时刻正方形四个顶点在空间的齐次坐标,表示为列向量Xi=P(tn)+RnSi(i=1,2,3,4);
步骤1.11、计算出Xi在像平面的投影ui=KXi,i=1,2,3,4;
步骤1.12、根据Si和ui的对应关系计算从π0到π1的单应矩阵Hn;
步骤1.13、利用Hn和Im(m∈M)计算出虚拟相机在tn时刻的成像结果Jm,n;
步骤1.14、计算模糊图像k=1,2,...,n-b+1;(Bm,k,m)就是一个运动模糊编码点图像-编码点身份样本;Bm,k需要经过适当剪裁,保留有效区域,尺寸适合卷积神经网络的输入;
重复步骤1.6至步骤1.14,获取大量运动模糊编码点图像-编码点身份样本;该样本的集合记做D;
步骤1.15、将样本的集合D随机分割为两个互不相交的子集D1和D2,分别用于训练和测试;分配70%的数据给D1,30%给D2;
步骤二、构造卷积神经网络MBCNet;
步骤2.1、卷积神经网络MBCNet的功能层包括输入层,卷积层、池化层、全连接层、输出层;
步骤2.2、卷积神经网络MBCNet从输入到输出的层次结构为:输入层,卷积层C1,池化层P2,卷积层C3,池化层P4,卷积层C5,池化层P6,卷积层C7,全连接层F8,输出层;其中卷积层C7和全连接层F8使用Dropout,每次更新部分权值;所述的输出层采用Softmax回归模型;
具体的,如图1所示,C表示卷积层,P表示池化层,F表示全连接层,它们的计算形式为
F:f=ReLU(WTx+b), (3)
以上三式中h(k)表示当前层的第k个特征图,W是权重,x表示上一层的输出,b是偏置,表示卷积操作,max(·)表示最大值函数,f表示全连接层的输出,i和j是特征图索引,上标T表示转置,ReLU(·)为激活函数,其形式为
ReLU(z)=max(0,z), (4)
公式(4)中z表示函数变量。另外,从公式(1)和(3)中可以看出卷积层和全连接层的激活函数均取为ReLU,该函数相对于另一种常用的激活函数Sigmoid而言,可以使网络更具稀疏性,减少参数的相互依存关系,有助于防止过拟合。
MBCNet中的特征提取阶段包含四个卷积层:C1、C3、C5、C7,其中C1层包含12个卷积核,C3层16个卷积核,C5层22个卷积核,C7层50个卷积核,C1层和C3层的卷积核窗口大小均为5x5,而C5层和C7层的卷积核窗口大小为3x3,所有卷积核窗口的滑动步长均取为1。除卷积层外,本阶段剩下的网络层均为池化层,分别为P2、P4、P6。从公式(2)可以看出,池化层使用的池化函数为最大池化,即在上一层特征图中的小邻域内取值最大的神经元作为该层的神经元,池化窗口大小为2x2,滑动步长为2。为了防止过拟合,利用Dropout技术从P2—C3、P4—C5、P6—C7的连接中分别随机选择25%的权值不更新。
步骤三、将步骤一中得到的运动模糊编码点图像-编码点身份样本的集合对步骤二中的卷积神经网络MBCNet进行训练及测试;具体为用子集D1训练MBCNet,并用D2进行测试,重复训练;损失函数采用交叉熵,当测试正确率测试数据集的平均损失降到0.03训练结束;
本发明模拟生成了100种编码点的运动模糊图像。具体方法是对模拟图像控制参数r(旋转轴向量)、d(编码点运动方向)、l(模糊程度)等间隔取值,r的三个分量的取值个数分别为90、90、180,d的三个分量的取值个数为100、100、2,模糊度l的取值个数为40,可以看出r、d、l有大量的组合可以选择,另外,其他噪声控制变量在各自的范围内随机产生,这足以保证所生成的图像的不重复性,本发明最终从所有变量的可取值范围中随机选取不同的组合生成了6组共66.5万张模拟图像,每组的数量详情如表1所示。
表1模拟生成的数据量统计
其中第1~5组数据均为训练数据集,第6组为测试数据集,每种编码点在每组数据集中的图像数目都相等,其中部分已经过分割和尺度对齐的模拟编码点图像如图2所示。
在实际编码点运动模糊图像数据集构建过程中,本发明选取了五类编码点布设于旋转运动中的吊扇扇叶上,保证每个类别的编码点均从不同角度、以不同的速度被拍摄3000次。根据实际拍摄的图像分割出了5类共15000个实际运动模糊编码点图像,其中部分已经过分割和尺度对齐的实拍编码点图像如图3所示。事实上,实际测量场景中分割出的编码点运动模糊图像大小基本上在68x68左右,所以选择图像大小68x68作为网络输入可以很大程度上地保留原有图像信息。
为了评价MBCNet网络的效果,本文使用数据集的识别精度作为评价标准,它表示识别正确的数据量与数据集总数据量的比值。另外,训练过程中使用的优化算法为小批量的随机梯度下降算法,批量大小设置为128,初始学习率为0.1,梯度由反向传播算法计算,每个批量反向传播计算结束后学习率下降10-6。
将表1中的第五组数据集输入运动模糊编码点识别网络MBCNet进行训练,在每一次迭代结束后对测试数据集进行测试,得到当前迭代次数下的测试数据集识别精度,该组训练迭代终止条件为测试数据集按照式(5)的公式计算的平均损失降到0.03。MBCNet使用了交叉熵损失函数,若y=[0,...,1,...,0]T表示单个样本的类别向量,其中1所在位置的索引值表示其真实类别,则该样本的损失Loss为
图4表示其迭代次数(x轴的Epoch)与识别精度(y轴的Accuracy)的关系。然后,用另外四组训练数据集分别对MBCNet重新进行训练,为了保证可对比性,它们的训练时间与第五组保持一致,迭代结束后,选取各组测试集识别精度最高的结果作为该组的实验结果。图5所示为训练数据量(x轴)与识别精度(y轴)的关系,从中可以看出,随着数据量的增长,测试数据集的识别精度也随之提升,但是其提升的程度在逐渐降低。
使用各组样本的网络训练结果测试表1中15000个实际采集的运动模糊编码点,其识别精度如表2所示。
表2编码点实拍运动模糊图像集识别精度
从表2中可以看出第五组模拟图像样本训练的网络对实际运动模糊编码点的识别精度达到了92.51%,第三组和第四组的精度也都超过了90%,以上结果不仅说明本文模拟生成的运动模糊图像可以很好地表达真实模糊图像的特征,也说明本发明构建的运动模糊编码点识别网络MBCNet具有良好的泛化性能。
步骤四、运用训练后的卷积神经网络MBCNet对运动模糊图像进行分割、使得分割后的图像区域符合MBCNet的输入,对分割以后的图像集合用MBCNet进行分类,输出的结果就是对应的编码标记点身份ID。