基于CNN双目特征点匹配目标识别与定位研究
2018-07-16蒋强卫甘兴利李雅宁
蒋强卫,甘兴利,李雅宁
(1.哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 150000; 2.卫星导航系统与装备技术国家重点实验室,河北 石家庄 050081)
0 引言
物体识别和定位是机器人视觉导航、智能监控、服务型机器人、工业自动化和汽车安全驾驶等领域的非常关键的技术,与之相关的技术也得到了前所未有的发展和重视。近几年兴起的深度学习是研究的热点[1],在无人驾驶和机器人等方面应用广泛。卷积神经网络作为深度学习的重要分支,通过大量的样本数据训练,学习到物体相应特征,从而实现高效的物体识别。双目立体视觉定位因其具有较大测量范围、较高的测量精度和低成本,成为机器人视觉定位、无人驾驶等领域最常用的一种方法。
目前有许多方法用于检测障碍物和测距(传统的目标测量方法,如激光雷达、红外测距和超声波测距等),但这些传统测距技术所用的传感器容易受到其他传感器的影响和环境干扰,导致测距不准,存在的一个最大缺点是不能检测与识别目标物体[2]。
图1 基于CNN双目视觉物体识别和定位算法流程
据此,本文提出了基于CNN双目视觉物体识别与定位的方法,其实现流程如图1所示。在特征点匹配算法的研究中发现,SURF算法[3]是一种有效的特征点提取和匹配的算法[4],相比于传统的SIFT算法具有更高的效率和稳定性[5]。在双目三维重建中,重投影矩阵Q随着目标与摄像头的距离变化也会发生相应的变化[6],进而影响到定位精度,通过采样大量数据,通过最小二乘法拟合位置和视差模型。实验结果表明,改进后的三维重建模型有效提高了双目视觉目标定位的精度。
1 目标识别
物体识别,有时又叫做目标检测[7],其任务有2个:① 在给定的测试图片的情况下,预测其中包含的物体实例的类别;② 预测给定测试图像中物体的位置,用矩形框画出来,效果如图2所示。
图2 物体识别实例
1.1 卷积神经网络模型
卷积神经网络是由Lencun在1989年提出的一种网络结构,现已成为语言分析和图像识别领域研究的热点。它的权值共享网络和生物神经网络类似,降低了网络的复杂度,减少权值的数量。从结构上看,CNN是一个多层的神经网络,主要有输入层、卷积层、池化层和全连接层组成。每层由多个二维平面组成,而每个平面是由多个独立的神经元组成,经典的LeNet-5结构如图3所示。
图3 LeNet-5卷积神经网络模型结构
输入层:通常是输入为二值图像或RGB彩色图像,在输入之前对图像滤波[8]、尺寸修改等预处理操作以提高网络识别结果。
卷积层:使用卷积层的原因是通过卷积运算,可以使原信号特征增强,并且降低噪音[9]。
池化层:也叫降采样层,根据图像局部相关性原理,对图像进行子采样,以减少计算量,同时保持图像旋转不变性[10],还可以混淆特征的具体位置。因为某个特征找出来后,它的具体位置已经不重要了,只需要这个特征与其他的相对位置。
全连接层:一般采用softmax全连接[11],得到的激活值即CNN提取到的图片特征,在整个CNN中起到“分类器”的作用,即全连接层将学到的“分布式特征表示”映射到样本标记空间。
1.2 基于SSD模型的物体识别
采用由北卡罗来纳大学教堂山分校的Weiliu博士提出的物体识别模型(Single Shot MultiBox Detector,SSD),它既保证了速度,又保证了精度,与现有的检测模型一样,将检测过程整合成一个单一的深度神经网络,便于训练和优化,同时提高了精度。该网络综合了Faster R-CNN[12]的anchor box和YOLO[13]的单个神经网络检测思路,既有Faster R-CNN的准确度,又有YOLO的检测速度,可以实现高准确度的实时检测。目标检测算法性能对比如表1所示。
表1目标检测算法性能对比
目标检测算法准确率/%帧率/FPSFast R-CNN(VGG-16)73.27Faster R-CNN62.1 17YOLO63.4 45Fast YOLO52.7155SSD30071.2 58SSD50075.1 23
SSD是一种多尺度特征图检测模型,其检测网络模型如图4所示。将输入图像resize到300*300,再将图像输入到VGG卷积神经网络中提取特征,然后添加额外的卷积层,这些卷积层的大小是逐层递减的,可以在多尺度下进行目标检测。模型选择的特征图包括:38*38(block4),19*19(block7),10*10(block8),5*5(block9),3*3(block10),1*1(block11)。每一个block中包含物体实例的可能性,进行一个非极大值抑制(Non-maximum suppression)得到最终的置信度。本文采用PASCLA VOC数据集训练自己的网络,包括20类物体,加上背景一共21类。
图4 SSD多尺度特征检测模型
2 SURF特征点匹配算法
SURF算法是对SIFT算法的改进和优化。SURF借鉴了SIFT中的简化近似思想,将DoH中的高阶二阶微分模板进行近似简化,用积分图像提高卷积的运算速度,牺牲很小的精度为代价,获得更快的特征点匹配运算速度。SURF特征点匹配主要包括3个步骤:
① 特征点提取。计算图像的积分图像,采用方框滤波近似代替二阶高斯滤波[14],计算待候选点和周围点的Hessian值[15],判断候选点与周围的值是否最大,如果是最大,则为特征点。
② 特征点描述。在检测到的特征点周围小区域上计算Haar小波[16],并计算其4种和以构建特征描述。
③ 利用特征点描述向量的匹配。
2.1 特征点检测
SURF算法对特征点检测基于Hessian矩阵,给定积分图像中的一点x(x,y)在点x处,尺度为σ的Hessian矩阵H(x,σ)定义如下:
(1)
为了将模板与图像的卷积转化为盒子滤波(Box Filter)运算,需要对高斯二阶微分模板进行简化,简化后的模板由几个矩形区域组成,矩形区域内填充同一值,如图5所示,在简化模板的白色区域的值为1,黑色区域的值为-1,灰色区域的值为0。对于σ=1.2的高斯二阶微分滤波,设定模板的大小为9*9,并用它作为最小的尺度空间值对图像进行滤波和斑点检测。使用Dxx、Dyy和Dxy表示模板与图像进行卷积的结果,这样,便可将Hessian矩阵的行列式做如下简化:
Det(Happrox)=DxxDyy-(0.9Dxy)2,
(2)
使用近似的Hessian矩阵行列式来表示图中的某一点的斑点响应值,遍历图像中所有的像素点,使用不同的模板尺寸,便形成了尺度的斑点响应的金字塔图像,利用这一金字塔图像,在三维(x,y,σ)空间中,每个3*3*3的区域进行非极大值抑制,选取比相邻的26个点响应值都大的点作为斑点的特征点,即可得到稳定的SURF特征点的位置和尺度值。
(a) Lxx的简化模型
(b) Lxy的简化模型
2.2 特征点描述
通过上一步检测出来的特征点,对每一个特征点为圆心和6σ为半径的圆形区域计算x和y方向的Haar小波响应[17]。Haar小波响应模型如图6所示,以特征点为中心对这些响应进行高斯加权。采用张角为π/3的扇形区域的滑动窗口,并对滑动窗口内图像Haar小波x和y方向的响应进行累加,得到一个局部的方向向量,转动扇形遍历整个圆,选择最长的方向作为特征点的主方向。
图6 Haar滤波器模型
以特征点为中心,将坐标轴旋转到主方向,即
(3)
沿特征点的主方向将20*20的图像划分为4*4的子块,每个子块利用2 s的Haar小波模板进行响应值计算,然后对响应值进行统计(∑dx,∑dy,∑|dx|,∑|dy|)形成特征矢量。所有子区域的向量构成该点的特征向量,得到长度4*4*4=64维的特征向量。
2.3 特征点匹配
得到左右2幅图的特征点后,采用欧式距离来判断匹配特征点,为了剔除误匹配的点,以左图为参考图像,因为左右图像经过矫正后几乎是平行的,所以检索的时候,只检索右边图像[y-3,y+3]垂直范围[18],提高了检索效率和匹配精度。
3 三维重建
双目立体视觉三维重建是基于视差原理,以左相机为参考,左图像上的任意一点要能在右图像上找到对应的匹配点,就可以确定出该点的三维信息,上面阐述了采用SURF特征点匹配算法,识别检测图像的特征点和匹配,通过神经网络到目标的区域,计算区域内的匹配点的视差,从而得到目标的三维信息。工作原理如图7所示。
图7 双目定位场景模型
由三角测量原理,即由2台摄像机的图像平面和被测物体之间构成一个三角形,如果已知2台摄像机之间的位置关系,便可以通过三角几何关系求解空间物体特征点的三维坐标。以左摄像机的O1为原点坐标系,通过相机标定和矫正,得出重映射矩阵Q,得到世界坐标系和相机坐标系关系,进而计算场景点P1(x1,y1,z1)的计算关系式如下:
tempx=Q[0][0]×x1+Q[0][3],
(4)
tempy=Q[1][1]×y1+Q[1][3],
(5)
temp=Q[2][3],
(6)
temp=Q[3][2]×(u1-u2)+Q[3][3],
(7)
(8)
实际实验过程中发现,导致的误差与相机标定误差和匹配点误差有关[19],通过均值滤波,滤除一些异常匹配点,计算均值作为目标视差。距离和视差并非完全符合以上关系式,采用最小二乘曲线拟合,对距离和视差非线性优化,提高定位精度。
4 实验结果及分析
下面开展物体识别、特征点匹配和物体定位的综合实验。卷积神经网络算法是基于Caffe(Converlution Architecture for Fast Feature Embedding)框架编写,特征点匹配和定位算法是C++编写,通过Python脚本调用这2个功能模块。开发环境采用Ubuntu系统。实验中采用2个Logitech C992摄像头,DELL电脑(Intel i7、GTX960,内存4G,显存4G),组成平行双目视觉系统。系统实物图如图8所示。
图8 双目视觉目标识别与定位系统
目标识别实验:采用PASCLA VOC数据集训练自己的网络,一共包括20类物体。单一目标识别实验如图9所示,该系统识别到显示器,置信度达到了0.997。目标像素中心采样结果如图10所示。实验结果表明,目标中心变动范围在(-2,2),识别目标稳定,保证后续目标定位稳定性。
图9 目标识别实验
图10 目标像素中心采样结果
特征点匹配实验:通过SURF特征点匹配算法,得到目标左右图像的匹配点,如图11所示。
图11 SURF特征点匹配结果
计算目标区域类的视差值如图12所示,通过中值滤波后的视差值,去除了异常点视差,稳定在(68,74)范围,可以提高后续的定位精度。
(a) 未滤波的视差
(b) 滤波后的视差值图12 目标范围内计算的视差值
目标识别与定位实验:选取单一的目标进行目标识别与定位实验。视差和距离(z轴方向)的关系,如图13所示。
(a) 视差值/距离分布
(b) 拟合视差值/距离曲线图13 视差/距离分布
通过对比拟合和滤波后测距误差明显减少,从而提高定位精度和稳定性,如图14所示。
(a) 实测数据/真实数据对比
(b) 拟合、滤波后实测数据/真实数据对比图14 测距误差对比
该系统能够精准地实现目标识别与定位,实测结果如图15所示。
图15 实测结果
实验结果表明,通过拟合后的双目立体模型定位精度明显提高,基于CNN双目特征点匹配目标检测与定位系统,能够很好地实现目标识别与定位。
5 结束语
针对传统的物体识别算法识别物体类别单一、基于物体特定特征实现识别的精度不高等问题,本文采用CNN改进双目物体识别与定位系统实现物体识别类别多样,识别精度也有所提高。针对双目标定误差,对误差进行分析,对实验结果和标定相机参数进行拟合,滤除实验异常点,提高物体定位精度。提出的CNN和双目视觉原理结合以实现物体识别和定位,识别速度、精度和定位精度达到实用性要求,可以广泛应用于机器人视觉方面。在未来的工作中,通过GPU加速,提高匹配速度,实现在更高要求的实用场景中应用。