基于OpenCV的机器人目标检测候选区域生成算法

2020-06-12 11:38乔诗展
科技创新与应用 2020年17期
关键词:目标检测卷积

乔诗展

摘  要:针对当前目标检测算法主要集中在GPU上运行且对家庭机器人任务针对性不强的问题,提出了一种基于OpenCV的RMFC算法。该算法首先对输入图像进行裁剪、腐蚀、Canny边缘检测操作;其次使用二维顺序查找的方法过滤地面边缘以外的区域;随后使用卷积判断模块抽取物体的位置,最后在视频测试集上测试,结果表明该方法在快速提高检测速度的同时兼顾了准确性及针对性,并得到每幅图像少于10个的候选区域。

关键词:目标检测;候选区域;顺序查找;卷积

中图分类号:TP311.5 文献标志码:A 文章编号:2095-2945(2020)17-0001-06

Abstract: In order to solve the problem that the current target detection algorithms mainly run on GPU and are not targeted to home robot tasks, a RMFC algorithm based on OpenCV is proposed. Firstly, the algorithm clips, erodes and conducts Canny edge detection to the input image. Secondly, the two-dimensional sequential search method is used to filter the areas outside the ground edge. Then, the algorithm utilizes a two-dimensions sequential search to filter the regions out of the bound of the ground. To extract the position of objects, the convolution and judge method would be processed after that. Finally, after the video data test, it is demonstrated that the algorithm can reach the balance among speed, accuracy, and pertinence. Also, the region proposal in every picture is less than 10.

Keywords: object detection; region proposal; sequential search; convolution

1 概述

近年来随着家庭机器人的发展,诸如树莓派、32单片机被广泛搭载于机器人之上。而原生树莓派不支持CPU加速,其资源也较为紧张,而在家庭机器人中,识别目标是进行目标抓捕的前提[1]。而目标候选区域的生成(Region Proposal, RP)又是识别目标的基础。因此对于以树莓派等为核心的家庭机器人而言,进行目标的实时定位仍是目前的挑战之一。

Girshick等人提出的Fast-RCNN模型,采用选择搜索(Selective Search, SS)来提取目标,而使用该方法在CPU上进行RP时每张图片需花费2秒,无法做到实时检测[2]。而Ren等人提出的Faster-RCNN网络首次采用了候选区域生成网络(Region Proposal Network,RPN)及GPU加速来完成候选区域生成的过程[3,4]。此外Redmon等人在2016年提出了YOLO模型,采用回归的方式实现了目标的检测,每张图片仅生成98个候选区域,使训练和测试的速度大幅提升[5]。

而对非机器学习算法而言,原生SIFT算法在进行目标检测时,关键点配对查准率低,速度较慢[6]。此外Zitnick等人提出了一种基于边缘检测的Edge Boxes算法,该算法采用结构化边缘检测算法生成边缘,随后遍历边缘组成边缘组(edge group, EP),并以EP的相似度对EP进行评分,最后输出评分较高的候选区域[7,8]。

综上,国内外众多学者的研究已提出了基于机器学习算法和非机器学习算法实现RP的方法。但仍然存在下述问题:(1)CPU环境下使用机器学习算法速度较慢,效率较低。(2)针对诸如扫地机器人等家庭机器人的目标检测任务无针对性策略。(3)生成的候选框个数较多。

针对上述问题,本文针对家庭机器人行动贴近地面的特征提出了一种基于OpenCV实现的区域遮罩-卷积判断模型(regionMask-fakeConv,RMFC)。该模型基于Canny算子进行图像的边缘检测,并通过平均颜色模型及顺序查找的方法提取地面的有效区域,随后通过卷积判断模块获取候选框,能有效减少候选框的数量,并加速图像的运算[9]。

2 算法框架

RMFC模型的总体框架如图1所示。首先通过OpenCV的imread()函數输入包含地面及地面上物体的BGR三通道图像,在进行数据预处理和图像裁减后,进入区域遮罩二维搜索算法(regionMask)中查找并去除地面边界。随后进行卷积判断(fakeConv)算法,进行目标的定位和提取操作,最后生成目标的候选区域框。

2.1 平均颜色模型

由于光线的直线传播原理及地面颜色一般较均匀,目标物体和地面间的亮度和梯度差异较大。而如图2所示,通过取图形最下方的区域作为模板,对模板内像素点(取值为0-255)取平均值后对灰度图像做绝对值差分,并进行类型转换,得到整张灰度图像与地面平均像素值的差异。该差异充分体现了物体与地面间的亮度差异。而所选区域的大小一般为整张图像的,可近似于地面的总体颜色,因此可在未定义地面颜色的情况下进行处理。

2.2 regionMask搜索算法

2.2.1 二维空间的顺序查找

regionMask搜索算法的本质是一种顺序查找算法。而地面的边界分为如图3所示的四种情况。

其中,I型边缘和II型边缘的主要特征为左右两侧地面边界所连的图像边界均在图像下沿或图像左右两侧。而III型边缘及IV型边缘的特征为各有一边连于图像下边缘,另一侧连与图像的左/右边界。此外,地面边缘还具有(1)地面边界均成直线或近似为直线;(2)地面边界外可能有其他物品等特点。

因此,若需将地面区域从图像中分割出来,可先取图像下边缘中点分别朝左及右侧顺序搜索,当目标像素为黑色(值为0)时,进行下一个像素的搜索。而当目标像素为白色(值为255)时,停止搜索,如图4所示。

将停止搜索的点记为点A,如图5所示,进行斜向上的搜索算法,直到搜索到下一个点B,并记录点A、B的坐标(w1,h1)及(w2,h2)。设地面边界所连于图像上边缘的点为C,坐标为(w3,0),则A、B、C三点近似满足关系式(1)及式(2)。

2.2.2 重合点映射算法

顺序查找存在查找失败的可能,针对于上述任务,查找失败时查找点的坐标为(0,0)或(W,0),此时无法构建出一条直线。因而需要将该点视为重合点,分别垂直地向两个方向移动一段距离,视作一条直线,如图6所示。

2.2.3 图像与操作

由顺序查找算法及各边缘的类型可得地板边界各点的坐标,而OpenCV中的fillPoly()函数可将各点绘制成一个闭合且填充非0值像素点的多边形。利用bitwise_and()函数使该多边形与原始图像进行像素点的操作,可将地面多边形以外的像素点全部排除,仅保留地面多边形内的像素点。

2.3 fakeConv判断算法

针对regionMask搜索算法生成的图像具有较多0值像素点的问题,可采用逐一卷积判断的方法。如图7所示,分别截取图像15*15的像素区域,对其中的像素点的值作和S,其等价于采用size=15的全1卷积核对图像进行卷积。

而当S=0时,说明感受野内均为0值像素点,可另等价的卷积核直接向右移动size=15个单位,进行下一步卷积判断。

当S≠0时,说明感受野内存在非0值像素点,此时感受野每次均向右移动一格,并记录下当前的S,及当前点的坐标(wx,hx),按照式(4)计算结果R。

其中式(4)中分母所代表的几何含义即当前点距机器人视野中心点(,H)之间的距离。因而距离视野中心点的距离越大,所占的权重也越小,也即物体被注意到的可能性也就越小。因而该公式也对regionMask搜索算法没有除净的边界点起到了一定的过滤作用。

上述fakeConv算法会对卷积结果不为0的点进行结果的计算,但此时列表长度较长,且对同一个物体会有不同的候选点。因此可通过列表降序排列,且设定物体间距来进行候选点过滤。而考慮部分物体靠近地面边缘,即距离机器仍有一定的距离,因此可判断通过候选点所生成的矩形左上点是否超出地面区域从而判定该物体是否被检测到。

此外,对区域内的物体,按照候选区域左上角距视野中心距离进行排序,以起到后期对机器人抓捕目标路径规划的作用。

2.4 Jit-RMFC算法

针对含有大量for循环及numpy数组运算的python代码,由于Python解释器逐行转换和编译的原理,其效率会非常低。而Python中的Numba库可通过即时编译(Just In Time, JIT)功能将Python代码预先转换为本地机器码,从而达到提高效率的目的[10]。

而RMFC中的fakeConv和regionMask的二维搜索部分恰好具备了含有大量循环及numpy数组运算的特性,因此可以通过Jit进行编译加速。并且,使用Jit加速只需要在需加速的函数前添加一个装饰器,无需改动算法框架。

3 实验

3.1 实验环境

本文使用一台搭载Intel(R) Core(TM) i7-8750H的CPU的个人计算机在Windows10下进行实验,RAM大小为8GB。使用python语言的OpenCV 3.4.1版本编写,采用CPU进行运算。

3.2 实验数据集

如图8所示,测试数据集为一段长1分35秒的视频,共包含2864张图片,每张图片中含有0-10个中央物体,每张图片大小为1280*720,为确保差异度,每隔五帧取一张图片作为测试数据。

测试集读取使用OpenCV提供的VideoCapture()函数逐帧读取,随后对每一帧进行运算,运算的结果使用imwrite()函数保存到本地,直到最后一帧读取完毕。

3.3 数据预处理

考虑到1280*720的输入图片过大,因此首先使用OpenCV的resize()函数,将输入图片调整为384*216的尺寸作为算法的输入。随后使用cvtColor()函数将输入图像转化为灰度图,并使用absdiff()函数做图像差分,erode()函数做图像形态学的腐蚀操作,其中腐蚀滤波器的大小为5*5,最后再使用Canny()函数完成图像的边缘检测。

3.4 评估指标

模型评估主要采用平均用时、查准率、候选框个数三个指标,平均用时T和查准率P的计算公式如式(5)及式(6)所示。选取SS算法、Edge Boxes算法与本模型进行性能对比。

3.5 实验结果及分析

RMFC模型及其他模型的实验数据如表1所示。

从表中可以看出,RMFC模型每张图片的用时仅为Edge Boxes的三分之一左右,而经过JIT加速后的Jit-RMFC模型的用时仅为原生RMFC模型的五分之一。且RMFC模型生成的候选框个数相比于SS和Edge Boxes均明显减少,查准率相较于上述两种方法提高了4%左右。

而在平臺方面,对比其他神经网络模型,包括Faster RCNN, YOLO等机器学习算法的结果如表2所示。

对于Faster-R-CNN的RPN和YOLO而言,输入图像后首先需要将比例缩放到1:1,这样会让图像产生挤压,从而丢失一些特征并影响精度。针对地面视觉导航而言,由于地面视野较宽,因而整体图像长宽比较大,不宜采用压缩到1:1的方式进行数据的处理,这也是RPN和YOLO的一个缺陷。

在速度方面,Jit- RMFC模型在CPU上处理每张图片的速度超过了GPU上的原生DPM,并且接近RPN在GPU上的用时。Jit-RMFC模型每秒可处理59.8张图片,对于机器人输入的视频流,达到了实时检测的效果。

对于RMFC模型而言,由于一开始的resize()操作,改变了输入图像的大小,虽然不改变原始比例,但由于大小的改变造成了特征丢失,导致查准率下降。而由于Jit-RMFC的效率是原生RMFC的六倍,因此可以适当增加图像大小,同时保证实时性,即每秒处理30张以上图片。增加图像大小后Jit-RMFC的准确率及效率如表3所示。

从表中可看出,随着Resize的大小不断增大,查准率也在缓慢增大,而Resize尺寸达到原图的50%时,该算法依然可以在保证查准率的情况下实时检测。

4 结论

为了针对性地解决家庭机器人视觉导航中目标检测的RP问题,提出了一种基于OpenCV的RMFC算法。一方面,通过regionMask可快速提取出地面的有效区域,同时抑制掉地面边缘以外的区域,可让候选区域生成的有效范围比例增大。另一方面,通过fakeConv算法,可有效并快速提取目标所在区域而无需经过漫长的训练过程,在一定程度上节约了移动机器人的资源。

参考文献:

[1]Gareth, Halfacree. Raspberry Pi user guide. Raspberry Pi User Guide. Wiley Publishing, 2014.

[2]Girshick, Ross. Fast R-CNN. Computer Science (2015).

[3]Ren, Shaoqing, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis & Machine Intelligence, 39.6(2015):1137-1149.

[4]Shih KH, Chiu CT, Lin JA, Bu YY. Real-Time Object Detection with Reduced Region Proposal Network via Multi-Feature Concatenation [published online ahead of print, 2019 Aug 21]. IEEE Trans Neural Netw Learn Syst.

[5]Redmon, Joseph, et al. You Only Look Once: Unified, Real-Time Object Detection. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) IEEE, 2016.

[6]Prakash, Choudhary Shyam, et al. Detection of copy-move forgery using AKAZE and SIFT keypoint extraction. Multimedia Tools and Applications 7(2019).

[7]Zitnick, Charles Lawrence, and P. Dollar. Edge Boxes: Locating Object Proposals from Edges. (2014).

[8]Piotr Dollár, and L. C. Zitnick. Structured Forests for Fast Edge Detection. ICCV IEEE Computer Society, 2013.

[9]Canny, John. A Computational Approach To Edge Detection. IEEE Transactions on Pattern Analysis and Machine Intelligence PAMI-8.6(1986):679-698.

[10]Lam, Siu Kwan, A. Pitrou, and S. Seibert. Numba: a LLVM-based Python JIT compiler. the Second Workshop ACM, 2015.

[11]Felzenszwalb, Pedro F, et al. Object Detection with Discriminatively Trained Part-Based Models. IEEE Transactions on Software Engineering,32.9(2010):1627-1645.

猜你喜欢
目标检测卷积
基于图像处理与卷积神经网络的零件识别
深度学习卷积神经网络研究概述
基于全卷积神经网络的变压器故障诊断
基于深度卷积网络与空洞卷积融合的人群计数
深度卷积生成对抗网络结构
卷积神经网络概述
视频中目标检测算法研究
行为识别中的人体运动目标检测方法
移动机器人图像目标识别
基于背景建模法的运动目标检测