基于Mask R-CNN的物体识别和定位
彭秋辰, 宋亦旭     
清华大学 计算机科学与技术系, 智能技术与系统国家重点实验室, 北京 100084
摘要:为了让机器人能识别物体类别、探测物体形状、判断物体距离,提出一种基于Mask R-CNN模型的双目视觉的物体识别和定位方法。该方法利用Mask R-CNN处理双目图像,对每张图像进行物体识别和形状分割,然后利用神经网络特征对双目图像中的相同目标进行匹配。以物体形状为依据,使用最近点搜索算法估计视差并计算距离。实验结果表明,该方法能够以准实时的速度进行物体的识别和定位,与传统的依赖计算全局视差图的方法相比,在速度和精度上都有提高。
关键词机器人导航    Mask R-CNN    特征匹配    物体识别    双目视觉    
Object recognition and localization based on Mask R-CNN
PENG Qiuchen, SONG Yixu     
State Key Laboratory of Intelligent Technology and Systems, Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China
Abstract: Robots need to identify the type of object, detect the shape and judge the distance to the object. This paper presents an object recognition and localization method that uses binocular information based on the Mask R-CNN model. The Mask R-CNN is used to process the binocular image and complete the bounding box selection, recognition and shape segmentation for each image. Then, the neural network feature is used to match the same object in the binocular images. Finally, the iterative closest point (ICP) method is used to estimate the parallax and calculate the distance according to the obtained object shape. Tests show that the method can process data in near real-time speed with better precision than the traditional disparity map algorithm.
Key words: robot navigation     Mask R-CNN     feature matching     object recognition     binocular vision    

视觉是机器人感知周围环境的重要方式之一。通过视觉技术,机器人可以完成回环检测、物体抓取、避障等复杂任务,而完成这些复杂任务的基础则是探测出周围环境中存在的物体的类别、形状和位置。传统基于双目视觉的目标探测主要采用全局视差图方法,其识别精度和运算速度都存在一些不足。

近年来,深度神经网络技术快速发展,将它与传统视觉技术相结合成为了一种新的研究方向。Yang等[1]提出了Fast-YOLO(you only look once)模型,并结合半全局匹配(semi-global matching,SGM)算法来处理双目图像数据,进而完成对物体的识别和定位。他们先利用SGM算法完成双目图像的视差图计算,然后用Fast-YOLO对左右目图像进行目标框选和识别,最后以左目图像框选的目标的平均视差作为测距的依据,与右目图像中对应目标作一致性检测。然而,由于YOLO系列神经网络[2]属于一阶段(one-stage)目标检测模型,因此检测出的目标边框不够精准,进而造成距离估计误差较大。

为了解决以上问题,本文采用将Mask R-CNN(regions with convolutional neural network feature)[3]神经网络模型和最近点搜索算法(iterative closest point,ICP)相结合的方式来实现基于双目视觉的物体识别和定位。Mask R-CNN是针对单张图像完成物体分割与识别的神经网络模型,它采用了Girshick等[4-6]提出的R-CNN系列网络采用的Anchor技术,并结合图像金字塔网络(features pyramid network,FPN)[7]对尺度不同物体的识别效果进行优化,还通过引入全卷积网络(fully convolutional networks,FCN)[8],实现了精确的物体分割。

为了将Mask R-CNN对单目图像物体分割识别结果用于估计目标的实际位置,本文提出了按左右目图像中目标的神经网络特征进行目标匹配,并对分割结果利用ICP算法进行视差计算的物体识别定位方法。本文提出的方法不计算视差图,相比于传统算法具有更快的速度和更高的精度。同时,本文还对Mask R-CNN进行了模型优化,使其性能得到提升。

1 双目Mask R-CNN系统 1.1 系统原理

本文搭建的系统的输入为普通的双目图像,输出为图像中主要物体的类别、形状掩码和距离。

双目图像采用Mask R-CNN作前向计算,获取图像中主要物体的具体信息,包括物体的类别和形状。针对从双目图像中分割识别得到的物体,利用神经网络的中间层特征,对左右目图像中的相同物体进行匹配。匹配完成后,对所有左右目图像中的相同物体,以其形状为依据,利用ICP算法计算物体的平均视差,从而根据对极几何原理估计物体的距离。

1.2 Mask R-CNN

Mask R-CNN是He等[3]在Faster R-CNN的基础上研发的深度神经网络模型,在处理单张图片的物体识别和分割任务中的优秀表现使其成为当前最佳技术之一。

Mask R-CNN由5个部分组成,分别是特征提取网络、特征组合网络、区域提交网络(region proposal network,RPN)、ROIAlign、功能性网络,如图 1所示。

图 1 Mask R-CNN结构简化图

特征提取网络是深度神经网络的骨干网络,是整个模型计算量最大的部分。根据不同的应用需求,可以选择不同的特征提取网络。以ResNet101[9-10]为例,取其4个Residual Block输出的4个特征图,记为C2C3C4C5,分别代表图像不同深度的特征。特征组合网络的作用是将不同深度的特征图进行重新组合,新生成的特征图中同时包含不同深度的特征信息。Mask R-CNN中使用FPN来组合特征图C2C3C4C5成为新的特征图P2P3P4P5P6。对于i=5, 4, 3, 2, U6=0,特征组合处理过程如式(1)所示:

$ \begin{array}{l} \left\{ \begin{array}{l} {{P'}_i} = {\rm{sum}}\left( {{U_{i + 1}}, {\rm{conv}}\left( {{C_i}} \right)} \right), \\ {U_i} = {\rm{upsample}}\left( {{{P'}_i}} \right), \\ {P_i} = {\rm{conv}}\left( {{{P'}_i}} \right). \end{array} \right.\\ \;\;\;\;\;\;{P_6} = {\rm{pooling}}\left( {{P_5}} \right). \end{array} $ (1)

其中:conv代表卷积操作,sum代表逐元素的对位求和操作,upsample代表使得特征图长宽变为2倍的升采样操作,pooling代表stride为2的最大池化操作。

区域提交网络的作用是利用特征图计算出能表示物体在图像中位置的候选框,目前通常会采用Anchor技术来完成区域提交功能。Mask R-CNN中RPN基于P2P3P4P5P6这5个特征图,对每一个特征图中的每一个特征向量回归得出一个5n维的向量,用以描述n个Anchor的修正值,每个Anchor的修正值包括Δx、Δy、Δh、Δwp。其中p为前后景置信度。Anchor是一个预先设定好的Box。对于P2P3P4P5P6中的每个点,都会以其坐标为中心,以不同的宽、高来预设多个Anchor。然后,根据RPN网络回归得出的修正值对每个Anchor的中心和宽、高进行修正,从而得到新的Box。Anchor修正过程如图 2所示,图 2a为特征图中的一个特征点预设的3个Anchor;图 2b图 2a所示的3个Anchor经过RPN层回归得出的修正值变换之后的结果。式(2)给出了Anchor修正计算过程。

$ \left\{ \begin{array}{l} x = \left( {1 + \Delta x} \right) \cdot x, \\ y = \left( {1 + \Delta y} \right) \cdot y, \\ w = {\rm{exp}}\left( {\Delta w} \right) \cdot w, \\ h = {\rm{exp}}\left( {\Delta h} \right) \cdot h. \end{array} \right. $ (2)
图 2 (网络版彩图)Anchor修正过程示意图

其中:xy代表Anchor的中心的坐标, wh分别代表Anchor的宽和高。

当Anchor修正完成后, 会产生大量的Box,这时再根据每个Box的p值,利用非极大抑制(non-maximum suppression,NMS)即可过滤出较为精确的候选框。

获取候选框之后,传统方法会根据每个候选框的位置从原图中裁剪出对应的区域,再对该区域进行分类和分割。然而,考虑到这些功能性网络所需要的输入都来源于特征图P2P3P4P5P6,因此本文采用ROIAlign算法直接从特征图中裁剪出候选框对应位置的特征,并加以双线性插值和池化,将特征变换为统一的尺寸(Mask R-CNN采用7×7作为分类和二阶段修正任务的输入尺寸,采用14×14作为分割任务的尺寸)。ROIAlign算法可以看作是一个引入了双线性插值的池化过程,它将原先离散的池化变为连续。

得到每个候选框对应区域同一尺寸的特征后,将其作为一些被称为头部(Head)的功能性网络的输入参与后续计算。对于分类头部,通常采用全连接层和Softmax层的固定搭配。对于候选框的二阶段修正,Mask R-CNN对每个类别都回归得出一个5维向量的修正值,修正过程与式(2)一致。

Mask R-CNN的分类和二阶段修正实际上是对Faster R-CNN的优化更新,完成了物体的分类和框选两个任务。在此基础上,根据得到的物体边框,通过FCN分割网络(图 3),即可获得物体更为精准的形状信息。

图 3 (网络版彩图)FCN分割网络

图 3所示,FCN分割网络以14×14的ROIAlign输出特征图为输入,通过4个3×3的卷积层,保持14×14的尺寸不变,再通过1个2×2的反卷积层将输出尺寸升采样为28×28,最后再经过一个1×1的卷积层和sigmoid激活层获得一个28×28的输出,该输出中每个点代表候选框某个类别的形状的前后景置信度。最后,用0.5作为置信度阈值获取物体形状掩码。Mask R-CNN进行物体识别分割的结果如图 4所示。原图引自于INRIA数据集。

图 4 (网络版彩图)Mask R-CNN物体识别分割结果示例

1.3 目标匹配

Mask R-CNN能分割出双目图像中的目标,但是目标的数量可能不止一个,因此在对左右目图像中的同一目标计算视差之前,需要进行目标匹配。

为了减少计算量,本文直接利用Mask R-CNN中ROIAlign输出的特征图作为目标匹配的依据。根据该特征图的性质,设计了目标的差异度算法。

ROIAlign输出的特征图是一个维度为C×H×W的数据块。其中:C代表通道数,H代表高度,W代表宽度。本文采用式(3)来计算两个同等尺寸特征图αβ的差异度Δαβ

$ {\mathit{\Delta }_{\alpha \beta }} = \sum\limits_{\left( {y, x} \right) = \left( {0, 0} \right)}^{\left( {H-1, W-1} \right)} {\mathop {{\rm{min}}}\limits_{\left( {h, w} \right) = \left( {r, r} \right)}^{\left( {-r, - r} \right)} } \sum\limits_{i = 0}^{C - 1} {{{\left( {\alpha _{y, x}^i - \beta _{y + h, x + w}^i} \right)}^2}.} $ (3)

其中:r表示搜索半径,通常取r =1;αy, xi表示特征图中坐标为(i, y, x)处的值。

式(3)由平方误差变形而来,考虑到框选会出现几个像素的偏移,本文算法将点对点的求差,变换为在一个半径为r的方形邻域内求最小差值,以减小框选误差带来的影响。采用上述算法进行目标匹配的结果如图 5所示。原图引自于KITTI数据集。

图 5 (网络版彩图)左右目图像物体匹配示例

1.4 视差测距

基于双目RGB的视差测距方法多采用特征点匹配或者计算全局视差图的方式,这两种方式都易受物体光照、纹理的影响。与传统的深度测量在像素层面作视差分析不同,本文只考虑图像中主要物体的平均视差,而且由于使用Mask R-CNN获取了双目图像中的分割目标,因此本文提出一种基于分割目标的视差算法。本文共测试了5种方案,分别是:形状中心法、ICP视差算法、FAST(features from accelerated segment test)& BRIEF(binary robust independent elementary features)视差算法、FAST & P2视差算法、GC算法(OPENCV提供的GC视差图算法)。

形状中心法简单地计算左右目图像中相同目标形状的中心坐标,然后求差获得视差。

ICP视差算法是形状中心法的改进,以形状中心求法作为ICP的粗配准阶段,然后在此基础上进行迭代修正,最后获得视差。

FAST & BRIEF视差算法是参照求两张图片本质矩阵的方法,利用FAST算法提取特征点,利用BRIEF算法描述特征,利用随机抽样一致算法(random sample consensus,RANSAC)完成特征点匹配,最后求取有效数据(inliers)中配对点的视差平均值。

FAST & P2视差算法则是将BRIEF特征替换为Mask R-CNN的特征图P2,因为P2是分辨率最高的特征图,为原图的1/4,通道为256维。将FAST算法在左右目图像中计算得到的特征点坐标利用双线性插值在P2特征图中获取到一个256维的特征向量,以之作为匹配依据。其他部分与FAST & BRIEF一样。

GC算法是传统视差算法中效果较好的算法,但是由于速度太慢,全图的视差计算基本不会选用该算法。本文尝试利用它对图像中的目标进行视差计算,过程如下:先将左右目图像中的相同目标拉伸到同一尺寸,然后使用GC算法计算视差,最后求目标形状内所有像素视差的平均值。

目标距离对测距误差的影响可以通过视差的单位像素误差与测距的相对误差的关系来进行直观分析,如图 6所示。图中数据来源于对焦距f=689 mm、基线|OlOr|=120 mm的双目相机的误差计算。从图 6可以看出,物体距离大于5 m时,误差大于5%,绝对值为25 cm;物体距离大于20 m时,误差接近20%,绝对值则已经达到5 m。这种误差源于相机的像素是离散的。要减少这种系统误差,只能采用更高分辨率的相机,但这样做会增加整个系统的计算负担。因此,双目视觉的方式很难对远距离物体精准测距。

图 6 双目测距每像素相对误差

本文首先在1 m以内的距离下作精度测试,测距数据如图 7所示。可以看出,ICP视差算法、FAST & BRIEF视差算法、GC算法的测试精度较高,形状中心法和FAST & P2视差算法的精度较低。

图 7 (网络版彩图)各视差算法精度比较图

形状中心法易受左右目目标形状估计误差的影响,鲁棒性较差;而FAST & P2视差算法的精度较低是由于神经网络特征的分辨率相对较低;ICP视差算法得益于双目相机左右目视图特殊的位置关系,测试结果精准稳定,而且不存在基于像素特征的算法易受纹理和光照影响的缺点,且运行速度很快。综合考虑,ICP视差算法更适合完成本文系统中物体视差的计算。

2 Mask R-CNN模型改进与优化 2.1 模型预处理

Mask R-CNN的骨干网络通常使用的是ResNet101,其中包括有100多个由conv、bias、BN(BatchNorm)组成的运算块,如图 8左边部分所示。在网络模型训练完成后,只用作前向运算的网络模型存在一些冗余的计算步骤,可以采用参数合并的方式预先完成。本文将bias和BN运算块合并成一个axpy运算块来统一运算,如图 8右边部分所示。

$ X' = {\rm{conv}}\left( X \right) + {\beta _{\rm{b}}}, $ (4)
$ Y = \alpha \cdot \frac{{X'-\mu }}{{\sqrt {\varepsilon + {\sigma ^2}} }} + \beta . $ (5)
图 8 (网络版彩图)模型预处理过程示意图

式(4)表示一次conv和bias操作。其中:βb代表bias操作的偏置,X表示输入,X′表示中间结果的输出。式(5)表示一次BN运算。其中:αβμσ2分别代表BN中的规模、偏置、均值、方差这4个参数,ε=1×10-5Y为整个模块的输出。

参数合并是把bias层和BN层的5个参数βbαβμσ2,化简为axpy层的2个参数α′、β′,之后通过Y=αX+β即可计算出结果。

$ \left\{ \begin{array}{l} \alpha ' = \frac{\alpha }{{\sqrt {\varepsilon + {\sigma ^2}} }}, \\ \beta ' = \frac{{\alpha \left( {{\beta _{\rm{b}}}-\mu } \right)}}{{\sqrt {\varepsilon + {\sigma ^2}} }} + \beta . \end{array} \right. $ (6)

经过预处理,运算块中所需的运算次数和参数量都明显减少,在GTX1080上测试结果表明,整体系统性能提升8%以上。

2.2 ROIAlign并行化处理

由于Mask R-CNN运用了FPN技术,每一张输入图片经过FPN的特征组合之后都会生成深度、规模不同的多张特征图。Mask R-CNN会根据候选框的大小来选择其中一张特征图进行ROIAlign操作。选择的原则是针对面积越大的候选框,选择深度越大的特征图,可以通过式(7)来描述这一过程。

$ k = \left\lfloor {4 + {\rm{lo}}{{\rm{g}}_2}\left( {\sqrt {wh} /224} \right)} \right\rfloor . $ (7)

其中:wh分别代表候选框宽、高,k即特征图Pk的下标。

Mask R-CNN采用分流法完成不同深度特征图的ROIAlign,涉及到多次CPU与GPU间的数据交换,降低了系统速度和稳定性。

本系统完全采用CUDA(compute unified device architecture)技术实现ROIAlign并行化处理过程,减少了CPU与GPU间数据交换,提高了网络速度和稳定性。算法实现如图 9所示。首先,根据目标特征图的尺寸对所有ROI区域进行均匀划分,每个划分作为一个CUDA线程,并行地进行特征块选择、双线性插值和池化。

图 9 ROIAlign并行化处理过程示意图

3 实验 3.1 物体识别实验

物体识别实验采用COCO数据集[11]。该数据集由美国微软公司发布,自2014年至今一直被广泛用于计算机视觉的各个研究领域中。COCO数据集包括了20多万张标注图片,超过150万个对象实例,总计80个类别。这里采用该数据集来验证本文改进优化的Mask R-CNN的性能,评估结果如表 1所示。

表 1 Mask R-CNN性能评估
AP 用时/ms
Mask R-CNN(Caffe2) 40.9 308
本文的实现 38.6 192

表 1中的Mask R-CNN(Caffe2)的平均精度(AP)是文[3]作者公布的评估成绩。对于时间,由于文[3]作者的测试设备为8块Tesla P100,其平均速度为19 ms处理一张图片,而本文的实验设备为1块GTX1080,因此为了便于比较,采用文[3]作者发布的工程代码在GTX1080上执行,将得到的执行时间列入表 2中。

表 2 不同方法的近距离物体相对测距误差和用时对比
误差/% 用时/ms
YOLOv3 & SGM 282
YOLOv3 & GC 4.35
Mask R-CNN & ICP 0.53 218

表 1可见,本文改进的Mask R-CNN在精度误差处于合理范围内(误差来源于训练时间、参数配置等因素)的情况下,实现了速度的提升。

3.2 双目定位实验

本文采用Mask R-CNN和基于神经网络特征的双目目标匹配算法,以及ICP视差算法组成了双目Mask R-CNN系统,进行了物体定位实验。

对于近距离物体测距,本文在450~1 000 mm范围内进行了测距实验,结果表明在该范围内的测距误差小于1 cm。实验部分结果如图 10所示,其中图 10a图 10b是正常纹理、不同距离的测试,图 10c是单一纹理透明物体的测试,图 10d是多物体的测试,图 10e图 10f分别为图 10a图 10b的深度图。本文还测试了Kinect结构光方式的物体测距以及双目视觉传统的深度图计算方法,结果表明Kinect测距会受到物体表面颜色的干扰,同一平面的不同颜色块的误差已经高达1 cm,而深度图计算方法很难检测到透明瓶子的深度,对物体测距的鲁棒性较差。

图 10 (网络版彩图)近距离物体双目测距结果示例

对于大于5 m的远距离物体测距,本文采用了KITTI数据集[12]。该数据集来自于德国Karlsruhe技术研究所和日本Toyota技术研究所的一个项目,其中包含了大量不同场景的行车图像数据。测试得到的部分结果如图 11所示。

图 11 (网络版彩图)远距离物体双目测距结果示例

实验结果显示,对于5~10 m的目标,本系统的相对测距误差基本符合KITTI数据集相机设备的误差理论值2%。对于距离大于10 m的目标,误差则偏大。图 11所示为10 m以内物体的测距结果,相对测距误差符合2%的理论值,例如图 11a中近处的车以及图 11d中近处的两个人和其手中的包;然而,对于其他较远的物体,相对测距误差则偏大。这是Mask R-CNN对远处极小物体的分割精度不够导致的,根本问题还是相机分辨率不够高。

3.3 对比分析

本文将Mask R-CNN & ICP的双目物体定位方法和YOLOv3 & GC方法进行了对比实验,实验结果如图 12所示。

图 12 Mask R-CNN & ICP方法和YOLOv3 & GC方法的结果对比

可以看出,基于YOLOv3 & GC方法的测距受到物体分割精度低的影响,测距误差较大而且不稳定,而且GC算法速度非常慢。Mask R-CNN & ICP方法的精度和稳定性都好于前者。本文还测试了YOLOv3 & SGM方法,但是由于物体透明等原因,SGM很难正确估计出物体部分的视差,因此没法得到测试结果。表 2为3种方法的误差和用时对比。可以看出,传统计算全局视差图的方案速度慢、精度低,且鲁棒性差,而Mask R-CNN & ICP方法不涉及视差图的计算,既保证了物体测距的精度和鲁棒性,同时还提高了速度。

4 结论

本文在Mask R-CNN的基础上,提出了基于深度神经网络特征的目标匹配算法和基于双目目标形状的ICP视差算法,并对模型进行了预处理参数优化,设计了并行化的ROIAlign,从而实现了完全自主编码的基于Mask R-CNN的物体定位和识别系统。在1 m以内的近距离物体测距中该系统能达到1 cm以内的精度;在GTX1080下运行能达到218 ms的识别速度。测试结果表明:相比于采用YOLO和传统视差图算法的系统,本文系统能够更快更好地完成双目视觉下的物体识别与定位任务。

参考文献
[1]
YANG R J, WANG F, QIN H. Research of pedestrian detection and location system based on stereo images[J]. Application Research of Computers, 2018, 35(5): 1591-1600.
[2]
REDMON J, FARHADI A. YOLO9000: Better, faster, stronger[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu, USA, 2017: 6517-6525.
[3]
HE K M, GKIOXARI G, DOLLAR P, et al. Mask R-CNN[C]//Proceedings of the IEEE International Conference on Computer Vision (ICCV). Venice, Italy, 2017: 2980-2988.
[4]
GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Columbus, USA, 2014: 580-587.
[5]
GIRSHICK R. Fast R-CNN[C]//Proceedings of the IEEE International Conference on Computer Vision (ICCV). Santiago, Chile, 2015: 1440-1448.
[6]
REN S Q, HE K M, GIRSHICK R B, et al. Faster R-CNN:Towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2016, 39(6): 1137-1149.
[7]
LIN T Y, DOLLAR P, GIRSHICK R, et al. Feature pyramid networks for object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu, USA, 2017: 936-944.
[8]
SHELHAMER E, LONG J, DARRELL T, et al. Fully convolutional networks for semantic segmentation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(4): 640-651. DOI:10.1109/TPAMI.2016.2572683
[9]
HE K M, ZHANG X Y, REN S Q, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas, USA, 2016: 770-778.
[10]
XIE S, GIRSHICK R, DOLLAR P, et al. Aggregated residual transformations for deep neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu, USA, 2017: 5987-5995.
[11]
LIN T Y, MAIRE M, BELONGIE S, et al. Microsoft COCO: Common objects in context[C]//Proceedings of the European Conference on Computer Vision. Zurich, Switzerland, 2014: 740-755.
[12]
GEIGER A, LENZ P, STILLER C, et al. Vision meets robotics:The KITTI dataset[J]. The International Journal of Robotics Research, 2013, 32(11): 1231-1237. DOI:10.1177/0278364913491297