基于双目图像多特征点融合匹配物体识别与定位研究
2018-07-16王霖郁蒋强卫
王霖郁,蒋强卫,李 爽
(1.哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 150000; 2.卫星导航系统与装备技术国家重点实验室,河北 石家庄 050081)
0 引言
工业自动化水平的提高、计算机视觉的进步[1]以及人工智能领域内双目视觉物体识别与定位等成为近年来人们研究的热门问题。物体识别与定位在众多领域有着广阔的应用前景和非常巨大的应用价值。该技术可应用在智能辅助驾驶技术、无人机、工业机器人、服务机器人、军事侦察、仿生机器人和星球探测车等领域。在这些领域的应用中,通常需要通过双目相机获取场景中物体的类别和位置信息。基于此,本文设计实现了基于卷积神经网络和双目视觉物体识别与定位系统。对于传统的物体识别和定位算系统,采用人工设计特征和支持向量机结合的方式实现物体识别,但存在识别物体单一和识别准确率低的问题[2-4],本文提出了YOLO卷积神经网络和双目视觉结合方式实现物体定位,以提高物体识别种类和识别准确率,使得系统具有扩展性,可以根据需要训练物体。文献[5-7]采用传统的特征点匹配算法用于双目图像,针对纹理少的物体匹配特征点少、无法支撑物体定位的问题,本文提出了多特征点融合算法,通过Canny边缘检测算法和FAST角点检测算法结合,使得检测算法能够提取边缘信息,从而提高纹理少物体的匹配点数量。本文设计的基于卷积神经网络和双目视觉的物体识别与定位系统可以有效完成物体定位和识别。
1 物体识别算法
1.1 基于YOLO卷积模型物体识别
物体识别,又称目标检测[8],它包括2个任务:① 给定测试图片的情况下,预测其中包含的物体实例的类别;② 预测给定测试图像中物体的位置,用矩形框画出来[9]。YOLO卷积神经网络模型主要由卷积层、池化层和全连接成组成。YOLO网络模型思想是直接将图像作为输入,直接在输出层回归目标的框位置和目标框的所属类别。YOLO卷积网络模型结构如图1所示。该网络与GoogleNet相似,一共有24个卷积层和2个全连接层。首先YOLO网络采用PASCAL VOC数据训练卷积层,然后再利用卷积层和全连接构成RPN(Region Propasal Network)[10],实现目标的类别和物体位置的预测。
图1 YOLO网络结构
YOLO物体检测算法如图2所示。首先将图像调整到448×448大小,将图像特征均匀地划分为7×7的网格,每一个网格作为锚框,每个锚框产生B个检测框。输入到卷积神经网络中,得到特征图后,采用全连接层,将每个区域的特征映射到S×S×(B×5+C)大小的特征图,对每个检测框的类别和检测框进行线性回归。YOLO直接将输入图像分为S×S个格子,每个网格负责检测物体中心落入该网格的物体。即某物体的中心位置的坐标落入到某个网格,那么这个网格就负责检测这个物体,每个网格输出B个检测框(bounding box)信息[11],以及C个物体属于类别的概率信息(置信度),最后输出特征图大小为S×S×(B×5+C)。假设采用PASCAL VOC训练数据,训练20个类别,S=7,B=2,C=20,所以最终的输出特征为7×7×30。每个检测框有5个参数:x,y,w,h和置信度(Confidence)。(x,y)为检测边框的中心相对于网格的位置。(w,h)为检测框的宽与高。由于YOLO简单地将图像进行网格划分和每个网格只生成2个检测框。
图2 YOLO算法示意
1.2 YOLO网络模型损失函数
(1)
式中,Ii为判断是否有物体中心落入在第i个网格中,如果有,Ii=1,否则Ii=0。Iij为判断第i个网格中是否有物体中心落入其中。如果有,Iij=1,否则Iij=0。
2 基于多特征点融合匹配算法
基于多特征点融合匹配算法是通过Canny边缘检测算法[12]和FAST角点检测算法[13]相结合的一种特征点检测算法,FAST角点检测算法不具有尺度和旋转不变性,因此检测速度快。通过Canny算法获得边缘的特征点,保证纹理少的物体具有特征点。通过FAST算法获得物体局部的角点特征,使得物体特征点分布更均匀。最后采用BRIEF描述算法[14]实现对特征点构建描述子。算法实现流程如图3所示。
图3 多特征点融合匹配算法流程
2.1 特征点检测
2.1.1Canny特征点检测
Canny特征点检测步骤如下:
① 采用3×3的高斯滤波器模板[15],模板的移动步长为4,从左到右,从上到下移动滤波模板,等效于1/4降采样,得到滤波器图像I(x,y)。之所以降采样,是因为原图检测到的特征点过多,信息冗余,对于双目定位系统,特征点太多,影响匹配速度。高斯滤波数学表达式为:
(2)
fs(x,y)=f(x,y)*G(x,y),
(3)
式中,f(x,y)为输入数据;G(x,y)为二维高斯函数;fs(x,y)为经高斯滤波器处理后的数据。
② 计算图像I(x,y)的每个像素点的梯度M和方向,图像的梯度计算,转化为求像素的灰度变化,分别求x方向和y方向的偏导,采用3×3的卷积模板作为对x方向和y方向的偏微分的近似值。如式(4)所示为x方向和y方向微分算子。通过3×3微分算子[16]与3×3的像素卷积运算得到x方向和y方向的偏导,即
(4)
φx(x,y)=I(x,y)*Hx(x,y),
(5)
φy(x,y)=I(x,y)*Hy(x,y)。
(6)
计算幅值:
(7)
计算方向:
(8)
③ 对图像进行局部梯度“非极大值抑制”。首先将角度划分4个方向范围:(0°,-45°,90°,45°),然后对像素邻域的4个方向进行非极大值抑制,也就是中心点与领域上4个方向比较幅值大小,如果是最大则保留,否则就直接丢弃。为了方便说明采用3×3的邻域。
④ 对梯度图像采用双阈值算法检测和边缘连接,选取2个阈值T1和T2(T2>T1),如果像素点的梯度值J(x,y)≥T2,则把此像素点判为边缘特征点。如果像素点的梯度值J(x,y)≤T1,该像素为非特征点;当满足梯度值T1 2.1.2FAST特征点检测 FAST的角点检测采用灰度图像,它是根据像素点与圆形邻域的圆线上的像素点比较灰度值[17],当它们差值的绝对值有一定比例超过阈值时,则该点为FAST特征点。判别特征点p是否是一个特征点,可以通过判断以该点为中心画圆,该圆半径为3个像素点,那么圆周上有16个点。当在圆线上的16个点中是否最少有n个连续的像素点满足都比(Ip+t)大,或者都比(Ip-t)小。Ip指p点的灰度值,t是一个阈值。如果满足这样的要求,则判断p是一个特征点,否则p不是。由于对每个特征点进行这样的运算非常耗时,因此采用一种进行非特征点判别方法,如图4所示。 图4 FAST算法示意 从编号为1的像素点每隔4个点进行检测(1,5,9,13),如果这4个像素点中有3个满足,都比(Ip+t)大或都比(Ip-t)小,则继续检测其余圆周的上的像素点,否则判别为非特征点。算法实现过程如下: 步骤1:对需要检测的多张图像进行角点检测,使用设定的n和t。将得到的特征点作为训练样本。对于圆周的16个像素点位置x∈{1,···,16},若选择一个位置x对上面的特征点集合进行划分,划分为3个部分,规则如下: (9) 当特征点是角点时,布尔变量Kp为真,否则为假。 步骤2:对步骤1得到的特征点集合进行训练,使用ID3算法建立决策树,假设通过使用第x个像素点进行决策划分,那么对集合P得到熵K为: (10) ∂=H(P)-H(Pd)-H(Ps)-H(Pb)。 (11) 然后使用信息增益最大的位置进行分割,最终得到这棵决策树,以后再有类似的场景进行特征点检测时,则使用该决策树进行检测。对于特征点容易聚集在一起的问题,采用非最大值抑制的方法,给每一个已经检测到的角点一个量化的值V,然后比较相邻的角点的值V,删除比较小V值角点。 (12) 式中,Sb为16领域像素点灰度值大于Ip+t的像素集合;Sd为灰度值小于Ip-t的像素集合。 2.1.3BRIEF描述子算法 BRIEF描述子是一种二进编码的特征描述符,没有采用SIFT和SURF在特征点邻域统计方向直方图和计算梯度特征作为特征点描述子方法,而是比较邻域的灰度值产生的二进制编码作为特征点描述子,这大大加速了描述子的建立,因为描述子是二进制编码,相比于采用浮点数据作为特征向量计算量显著减少,这也提高了匹配速率。 为了提高描述子的抗噪性[18],采用窗口尺寸为9×9和方差为σ=2的高斯模板对图像滤波, (13) 然后在特征点p周围S×S的像素块中选取n个对比点,通过τ方法比较2个像素点的强度值,对比规则为: (14) 式中,p(u)和p(v)分别为u和v处的灰度值。通过逻辑运算得到n维的BRIEF描述子,通常n=128,256,512,则 (15) 构成一个n比特的二进制描述子,需要选取n对像素点,它们的采样是有序的,如果存在多组相同的位置,最终会影响匹配的效果。所以给出了5种采样方式:① 平均采样;②p和q都符合(0,S2/25)的高斯分布;③p符合(0,S2/25)的高斯分布,而q符合(0,S2/100)的高斯分布;④ 在空间量化极坐标下的离散位置随机采样;⑤ 把p固定为(0,0),q在周围平均采样。 实验环境为Ubuntu16.04系统,处理器型号Inter i7,显卡型号GeForce GTX960,显存4 GB,内存8 GB,STERROLABS ZED双目摄像头。基于卷积神经网络与双目视觉物体识别与定位研究通过双目摄像头采集双目图像,预先通过张正友棋盘标定方法实现对双目摄像头标定,获得双目相机的内外参数,然后通过标定的参数实现对双目图像进行校正。以左相机图像为参考,输入到卷积神经网络实现对训练物体识别和获得物体所在图像的区域;再利用双目图像特征点匹配算法,计算特征点视差;最后利用双目测距原理[19],通过卷积神经网络获得物体类别和物体在图像的区域,计算该区域的视差,实现物体识别与定位。整体系统实现过程如图5所示。 图5 本文提出的物体识别和定位系统原理 本文双目特征点匹配算法采用ZED双目相机拍摄图像,先通过张正友双目标定,获得双目相机参数,然后对双目图像进行矫正。本文采用传统的SIFT、SURF、FAST、ORB算法和基于多特征点融合匹配算法在目标纹理少的图像上进行实验,以电脑显示器上显示的具有纹理少的特性为检测目标,验证本文算法的可行性,实验结果如图6和表1所示。 图6 双目特征点匹配算法 表1双目图像特征点匹配算法性能 算法检测点(左/右)匹配点耗时/sSIFT957/873 920.863 6SUFT576/624 880.413 7FAST1 942/1 789 360.148 6ORB600/600 260.082 4本文算法1 789/2 0092350.125 7 图6(a)为SIFT算法,因为双目图像不存在旋转和尺度变换,因此在匹配算法添加极线约束,在匹配过程中,极线上下3个像素空间搜索,这不仅提高匹配精度,而且缩短匹配时间,效果如图(b)所示。传统算法在电脑显示器上匹配的特征点很少,而基于多特征点融合匹配算法匹配[20]的特征点显著增加,从而保障后续的目标定位。特征点匹配算法的匹配点对和算法耗时对比如表1所示,本文算法在算法耗时和匹配点数目上都优于SIFT和SURF算法,相比ORB和FAST,在匹配特征点数目上占优。 实验结果证明,基于多特征点融合匹配算法比传统特征点匹配算法更好地解决了纹理少的目标匹配点少的问题,减少了算法的耗时,这为后续的目标定位提供稳定的视差,从而提高物体定位的精度。 采用PASCAL VOC2007和VOC2012数据集选取了生活中常见14类物体(包括自行车、瓶子、巴士、车、猫、椅子、桌子、狗、山地车、人、植物、沙发、火车和显示器)作为训练集。为了验证算法的定位精度,以目标人在同一场景的不同距离情况下为测试场景进行识别,如图7所示。首先采集目标区域内的匹配特征点,计算出视差,然后进行中值滤波,最后利用双目标定出的参数,计算出目标区域中心点的位置信息,分析测量与实际位置的误差。 系统输出检测物体类别及其三维坐标如图7所示。 图7 整体系统的输出效果 在不同的距离下采集100组数据,测得距离的平均值,如表2所示。数据表示,在双目标定准确的情况下,物体识别与定位系统在12 m范围内物体定位精度为cm级。物体识别与定位系统的性能分析,如表3所示。 表2测距结果 实际距离/cm实测距离/cm 10098.3 300295.6 500507.5 700709.3 900910.71 1001 113.51 2001 218.6 表3物体识别与定位系统性能 系统模块耗时/s整体系统 0.212 0特征点匹配模块0.125 7物体识别模块0.086 3 本文设计实现了一套完整的基于卷积神经网络和双目视觉物体识别与定位系统,提出基于多特征点融合匹配算法。系统整体实验结果表明,该算法既解决了纹理少物体特征点少的问题,也提高了物体匹配速度和匹配特征点数目。提出的基于卷积神经网络和双目视觉物体识别与定位系统有效地完成了物体识别与定位,在双目基线为10 cm的时候,双目定位范围12 m左右,物体定位精度cm级,具有较好的鲁棒性。匹配算法可以通过GPU加速,实现实时处理,从而使整个系统达到实时的计算效率。3 实验结果和分析
3.1 双目特征点匹配算法结果与分析
3.2 整体系统实验与结果分析
4 结束语