光流引导下机器人抓取目标物角点动态匹配
2021-03-23吕栋阳姚兴田苏波泳
吕栋阳,张 磊 ,张 丹,姚兴田,苏波泳
1.南通大学 机械工程学院,江苏 南通 226019
2.德岛大学 信息工程学院,日本 德岛 770-0855
3.约克大学 拉松德学院 机械工程系,加拿大 多伦多 M3J 1P3
特征(角)点匹配是指在两帧图像内找到特征点集之间的映射和对应关系,其在图像拼接、目标跟踪以及目标位姿估计等领域具有重要作用[1-4]。
传统特征匹配大多基于全局图像,如视觉SLAM(Simultaneous Location And Mapping)通常将移动机器人采集得到的图片提取全局ORB(Oriented FAST and Rotated BRIEF)特征[4],对其进行特征匹配后根据位姿估计算法求取出摄像机运动过程中的姿态。但这种方式仅适用于整幅图像具有相同的变换,也即摄像机运动的情况。
对机器人抓取来说,更常见的情况是摄像机固定而物体运动。通过对目标物区域进行特征匹配并结合PNP(Perspective-N-Point)或者对极约束等算法,可以方便地求取目标物相对摄像机的位姿,因此针对目标物的特征匹配具有重大研究及应用价值。
近年来,有众多优秀的特征匹配算法被相继提出,这其中较为成功的有SIFT(Scale Invariant Feature Transform)算子[5]和SURF(Speeded Up Robust Features)算子[6],然而这两种特征提取算法复杂且耗时,难以满足视频序列的实时性需求,而且提取得到的特征点也不具备显著性。角点是图像中亮度变化剧烈的点或图像边缘曲率极大值的点,作为图像重要的局部特征,角点在保留图像大部分信息的同时极大地加速了图像处理的速度。考虑到角点运算的快速性,学者们采用角点作为特征点并结合SIFT 和SURF 进行特征描述从而衍生出了Harris-SIFT[7-8]和Harris-SURF[9]等算法进行图像匹配。尽管这些算法相较单纯使用SIFT和SURF算子而言,特征提取和特征匹配的速度有所加快,但仍旧无法达到实时处理,与此同时还需要配合RANSAC(Random Sample Consensus)等方法来去除一定的误匹配。
为了解决上面的问题,本文引入深度学习网络Yolov2-tiny 限定特征提取范围。采用Shi-Tomasi 角点作为待匹配的特征点,加快了特征提取的速度。同时针对特征匹配算法慢的问题,提出使用LK 光流[10]引导进行匹配的方法,避免了高维特征描述符的计算,加快了特征匹配的速度。实验证明本文方法可以有效地在视频序列中对目标物角点实现动态的匹配。
1 Yolov2-tiny目标物定位
目标物特征匹配首先需要通过目标物定位确定特征提取区域,此步骤不仅可以极大地减少后续特征提取的运算时间,也可以将特征点限定在目标物体上,避免了环境点的干扰。
目标物位置的提取可以采用离线的方式,即通过鼠标笔势手动框选待匹配的物体,但此方法不适用在线的场合。帧差法或背差法[11]可以有效地对移动的物体进行检测,但当物体静止时算法失效。有些学者通过颜色对物体进行跟踪[12],但是目标物必须拥有易于辨别的颜色特征,而且该方法对光照十分敏感。
随着人工智能的迅速发展,一系列优秀的物体识别算法被相继提出,相较传统方法,使用深度学习进行物体定位的准确度高,泛化性强,同时额外获得的物体类别信息具有一定的可区别性,可以用来指定待处理对象。
Yolo[13-14]系列算法将目标定位和目标分类融合在一个网络中,将物体检测简单地看作回归问题,相较Faster-RCNN[15]等两步法速度更快。由于角点动态匹配对于系统的实时性具有极高的要求,所以本文采用了Yolo系列中的轻量型网络Yolov2-tiny使物体识别速度进一步加快。
Yolov2-tiny 的识别流程如图1 所示,首先对图片网格化,如图1(a)所示,将输入图片划分成13×13 大小的黑色网格,滑动窗口(黄色矩形)自上而下,自左而右遍历所有网格,对各个网格进行候选框的预测与提取。图1(b)为候选框预测的原理,Yolov2-tiny 借鉴了Faster-RCNN中锚框(Anchor Box)的思想,通过对边框位置的回归来预测候选框的位置,图中虚线框为锚框,其为一系列先验框,红色实线框是预测框(Bounding Box)。
图1 Yolov2-tiny识别流程
预测框通过预测中心点相对于其所在网格左上角位置的相对偏移(offset),以及其相对于锚框的大小得到。每个预测框预测5个参数tx、ty、tw、th和to,具体公式如下:
公式(1)、(2)中bx、by是预测框中心点坐标,cx、cy是当前网格左上角的坐标,tx、ty是预测框中心点偏移值,通过sigmod 函数将偏移量限制在当前网格内,这种约束使得模型训练时更易收敛。公式(3)、(4)中bw、bh是预测框的宽高,pw、ph分别为锚框的宽高,tw、th是预测框相对锚框的宽高比例。
针对使用单一尺度的候选框容易造成漏检的问题,Yolov2-tiny采用了5个不同尺度的锚框,由图1(b)原理可知一个网格可以预测5 个尺度的候选框。其预测结果如图1(c)所示,图中黄色框为滑动窗口当前所在网格,红色框为当前网格的5个预测候选框。
按公式(5)计算每个预测框的置信度σ(to),当预测框内存在物体时Pr(object)为1,否则为0。IOU代表了预测框与物体真实框之间的重合率,其公式如下:
每个预测框同时预测C个类别的物体概率,将各类别物体概率Pr(Ci|object)与预测框置信度σ(to)相乘得到该框各类别得分scorei:
对scorei排序,取其最大值与设定的阈值比较过滤出潜在的候选框,最后对这些候选框使用非极大值抑制(Non-Maximum Suppression,NMS)筛选得到最终的识别结果,如图1(d)所示。
2 Shi-Tomasi角点提取
角点提取相较SIFT 以及SURF 特征点的提取更为简单与方便,Shi和Tomasi对Harris[16]方法进行改进提出了Shi-Tomasi[17]角点检测方法。该算法计算简单,提取得到的角点均匀合理,且其相较于Harris角点更加稳定。
算法通过计算局部检测窗口W向各个方向做微小移动后的灰度变化情况判定角点。窗口平移产生后灰度的变化如下公式:
式中,w(x,y)是高斯窗口函数。对于微小移动,I(x+Δx,y+Δy)按泰勒公式展开并忽略二阶以及更高阶项,代入式(8)化简后可得:
其中:
M是2×2的自相关矩阵,其决定了E的取值大小,通过计算M的两个特征值φ1、φ2可以判断点(x,y)是否为角点。定义角点响应函数为公式(11),当R大于设定阈值时则判断为Shi-Tomasi角点。
3 特征点匹配
特征点匹配通常是通过计算特征点邻域的特征描述,再进行某种相似性度量来实现匹配。但是由于高维度的特征描述计算复杂,所花取的时间代价昂贵,本文提出了一种通过光流引导实现特征点匹配的方法。首先使用LK 光流初步估算角点位置,在估算点邻域进行角点再提取得到角点精确位置,并结合光流跟踪得到的角点匹配信息实现了光流引导下的角点匹配。算法避免了特征描述符的计算,有效地加快了匹配速度。
3.1 LK光流匹配
LK光流算法是一种通过计算两帧差分估算目标运动参数u、v的稀疏光流算法,算法首先基于灰度不变假设,有:
将等式(12)左边按泰勒公式展开,并忽略二阶及以上项得:
连列式(12)和式(13),并消去I(x,y,t)得:
式(14)两边同除dt,并记为矩阵形式:
式(15)为二元一次方程,仅由其无法求解算出运动参数u、v,LK光流对此进行了空间一致性假设,即假设w×w窗口内的像素具有相同的运动,有:
记[IxIy]k为A,Itk为B,简化得:
解超定方程组式(17),按最小二乘求解得光流值:
3.2 角点邻域提纯
通过光流跟踪可以方便地得到待匹配帧中角点位置的初值以及角点间的对应关系。但光流法是一种基于灰度上的近似,实际得到的角点位置并不精确,存在一定的偏移现象。针对上述问题,提出了一种角点再提纯的方法,角点提纯过程如图2所示。
图2 角点提纯过程
图2(a)是对Yolov2-tiny 定位的目标物区域按第2章所述的Shi-Tomasi算法进行角点初始化的结果。图2(b)是直接使用3.1节LK光流跟踪算法得到的角点匹配结果,图中蓝色点为光流跟踪得到的角点,可以发现此时的角点已经发生了微小的偏移,如果继续对产生偏移的点进行跟踪势必会造成更大的误差,从而造成后续目标物位姿估计的不准确。图2(c)是角点修正示意图,以图2(b)光流跟踪得到的初值点(图中蓝色点)为中心构建11×11 的掩模,掩模如白色区域所示,对掩模进行循环遍历,按公式(11)对每个掩模内的121个像素点求取响应函数R,并取其中最大值作为提纯后的角点,提纯后的角点以红色圈出。图2(d)即为改进后的角点匹配的结果,可以发现此时的角点均出现在木块的棱角上,与图2(b)相比角点位置更为精确。
至此整体算法流程如图3所示,首先将输入图片送入训练好的Yolov2-tiny 模型进行目标物候选区域的提取,设置检测阈值为0.7过滤掉得分较低的目标框,当满足此阈值的目标框个数超过一个时,对这部分区域进行Shi-Tomasi角点初始化,之后按上述一系列的光流跟踪及角点提纯的步骤实现角点的匹配。角点提纯操作完成后,将提纯后的角点压入OPENCV中的vector容器中进行保存,以此作为下一帧光流跟踪的初始值,此种匹配点实时更新的方式可以有效地避免误差的累积。同时,对每一帧图像,根据角点跟踪的状态判断匹配是否成功,当角点匹配失败(如遇到遮挡等)则转向第一步继续进行Yolov2-tiny的目标物识别,直至提取到目标物为止,之后算法按步骤继续往下执行。
依照本文算法流程,在T形物块视频序列上进行了目标物角点动态匹配实验,根据目标物的运动状态分别进行了遮挡、平移和旋转的测试。实验结果如图4(a)、图4(b)和图4(c)所示,图中红色方框为Yolov2-tiny 定位的结果,白色文本框记录了物体识别的种类以及概率,红色圆点记录了角点位置,绿色数字描述了角点间的匹配关系。实验验证了本文算法流程对目标物角点动态匹配的可行性。
图3 算法流程图
使用LK光流法替换原算法流程(如图3所示)中的改进光流部分,在目标物旋转情况下进行了对比实验,实验结果如图4(d)所示。为了便于区分,使用蓝色点表示光流跟踪得到的匹配点。通过观察可知光流跟踪得到的匹配点存在漂移现象,而且随着跟踪的持续进行,漂移现象愈为严重。与图4(c)相比,可以得出本文提出的改进光流法具备更好的角点匹配效果。
图4 T形物块角点动态匹配结果
4 实验
木块因质量较轻,易于加工以及尺寸精准等优点被广泛应用于机器人抓取的研究之中。木块形状多样,常见的如圆柱体、球体以及长方体等,由于本文研究需要目标物本身具备清晰且易于辨别的角点,故采用长方体木块作为实验对象。
为了进一步验证本文算法两个组成部分的优越性,分别进行了两组实验。第一个实验是Yolov2-tiny 目标物定位实验,为了验证了采用Yolov2-tiny进行目标物位置提取的可行性以及泛化性。第二个实验是特征点匹配实验,将本文所提出的角点匹配算法同SIFT 以及Harris-SIFT 算法进行比较来验证本文算法的准确性与实时性。实验中,硬件环境为CPU Intel Core i5-9400F,内存16 GB,GPU 8 GB GTX-1070TI,软件环境为VS2015+OPENCV,操作系统为Windows10专业版。
4.1 Yolov2-tiny目标物定位实验
4.1.1 数据集
由于本系统中Yolov2-tiny 的作用仅仅是作为目标物定位网络,故实验数据集类别数为1,且所有样本均为正样本。为了体现Yolov2-tiny泛化性强的特点,对三种大小的长方体木块在不同光照条件下拍摄了共360 张不同视角的图片作为原始数据集,图片尺寸为640×480,数据集部分图片如图5 所示。对原始数据集使用LabelImg 打标,之后随机分配其中80%作为训练集,20%作为测试集。
图5 数据集部分图片
4.1.2 锚框聚类参数选择
Yolov2-tiny 网络识别性能的好坏与锚框宽高的选择有很大关系,Yolov2-tiny网络配置文件中自带的锚框参数是根据VOC2007 和VOC2012 数据集确定的,并不具普遍性,所以利用K-Means 算法对自制数据集的训练框的ground truth 进行聚类。聚类结果如图6 所示,图6(a)为聚类簇的个数与IOU的关系曲线,随着聚类簇数的增多,IOU增大,但同时网络负担也会变大,识别速度变慢。通过观察曲线可以得出当聚类簇数为5 时综合性能最好,此时IOU 达到80.74%。图6(b)为训练集在5 个聚类核下的聚类分布,图中红色点为聚类中心点,各类别集合以不同颜色区分,锚框的宽高分别对应 5 个聚类中心点的坐标:(1.09,1.48),(1.80,2.49),(2.37,3.55),(3.29,4.77),(4.94,6.94)。
图6 聚类结果
4.1.3 训练与测试结果分析
训练参数选择的好坏决定了网络收敛的快慢以及性能的优劣,通过多次实验进行试参,最终网络配置参数如表1所示。
表1 网络配置参数
训练结果如图7 所示。图7(a)为训练过程中的平均误差情况,可以发现随着训练的进行,平均误差也趋近于0;图7(b)展示了训练过程中平均交并比情况,在训练完成时,最终交并比超过了70%;图7(c)为训练过程中的平均召回率曲线,虽然召回率一直在波动,但当训练批次达到1 000 步以后,其值基本稳定在100%附近。
图7 训练结果可视化
在训练结束后,使用OPENCV 扩展模块中的深度学习DNN 模块将在Darknet 环境下训练得到的模型迁移到VS2015中,并在该环境下对测试集进行了测试,测试实验中设定检测阈值为0.7,测试集中部分识别结果如图8所示。
测试集上的测试数据如下:
(1)平均召回率为94.45%,物体的检出率很高,测试集内基本所有的目标物均被提取出来。部分物体由于置信度低于阈值而未被检测出,此问题可以通过在保证检测准确率的前提下,适当地降低检测的阈值进行解决。此外还对网络在不同环境下进行了迁移实验,实验发现当物体所处环境变化过大时,召回率明显降低,这是由于训练样本不充分所致。由于本实验所有的训练样本均为手工制作,制作过程较为繁琐,所以数据量有限而且难以涵盖目标物存在的各种情况。这部分问题只能通过增大训练样本或者采用数据增强等方式进行解决。
图8 部分定位结果
(2)平均交并比为70.37%。由于本文在最初神经网络选型时,将算法运算速度作为首要考虑因素,采用了简化版的Yolov2神经网络,舍弃了一定的网络深度,从而导致检测效果的下降。但此交并比依旧能够满足大部分实验情况,同时为了进一步保证候选框能够充分包围目标物,在网络识别过程中,将候选框的宽高各扩张20个像素。
(3)平均识别速度为38.78 ms,检测速率超过25 帧/s,此检测速率完全可以满足一般视频处理中的速度要求。
4.2 特征点匹配实验
本实验将摄像机固定而物体运动情况下拍摄的一段视频作为原始数据,任取其中四组相邻图像对进行实验对比。在每组实验中,首先对第一帧图像使用Yolov2-tiny进行特征点初始化,对第二帧图像分别使用SIFT、Harris-SIFT以及本文提出的改进光流法进行特征匹配。其中第一组实验的特征匹配结果如图9 所示。图9(a)为SIFT匹配的结果,可以发现SIFT提取到的特征点不具备显著性,有很多特征点落在目标物之外。图9(b)是采用Harris-SIFT 匹配的结果,相较 SIFT 特征点,Harris角点均落在目标物体上,但其匹配过程中出现了角点匹配出错的问题,这是由于在不同角点处,SIFT特征描述出现了相似,从而造成了误匹配。图9(c)是采用本文算法得到的角点匹配结果,可以发现此时角点全部匹配成功。
为了进一步更直观地比较三种算法的性能,采用特征点个数,匹配的准确率以及匹配所用时间三种评价指标对实验进行量化。其中,特征点数指图像对中第一帧图像的特征点个数,匹配准确率为匹配成功的点对数除以第一帧特征点个数,匹配所用时间为特征点提取时间与特征点匹配时间相加。表2 记录了四组实验过程中的相关数据。
表2 特征点匹配结果
图9 特征点匹配效果对比图
由表2可以发现SIFT算法所提取的特征点数最多,但实际上这些点有很多是不在物体上的无效特征点,而且算法匹配的准确率也最低,平均准确率仅为30.81%。本文方法和Harris-SIFT 特征点数一样多,但本文算法的匹配准确率最高,四组实验准确率均为100%。算法耗时性方面,本文方法速度最快,平均耗时仅为30.89 ms,比Harris-SIFT的53.00 ms快了约1.72倍,比速度最慢的SIFT快超过6倍,这样的速度完全可以满足特征点动态匹配的实时性需求。
5 结束语
针对机器人抓取问题中的目标物角点动态匹配的问题,本文结合当今研究前沿中的深度学习算法,提出使用Yolov2-tiny 进行目标物框选,并进一步使用Shi-Tomasi角点结合LK光流引导匹配的方法完成了对目标物特征点的动态匹配。通过实验证明了本文方法的可行性,并为机器人抓取中目标物位姿在线估计提供了一种新的思路。未来将进一步增加目标物的种类,同时加入位姿估计算法的研究,完善整个目标物位姿在线估计系统。