基于YOLOv2的双足机器人目标检测与拾取

known 发布于 2025-07-17 阅读(369)

刘超强 叶坤 李鹤喜

摘  要:本文采用YOLOv2深度学习模型对双足机器人拍摄到的第一帧图像进行目标定位检测,接着通过传统的Camshift算法对后续图像中的目标进行跟踪,直到逼近目标后利用机器人关节运动控制程序拾起目标。该方法的优点是:将深度学习算法与传统图像跟踪技术相结合,增强了系统的鲁棒性和实时性。

关键词:YOLOv2;Camshift;目标检测

中图分类号:TP391.41;TP242      文献标识码:A 文章编号:2096-4706(2019)18-0137-04

Abstract:In this paper,we use YOLOv2 deep learning model to detect a target location through the first frame image captured by biped robot. Then we use traditional Camshift algorithm to track the target in the follow-up image until the target is approached and the robot joint motion control program is used to pick up the target. The advantage of this method is that the combination of deep learning algorithm and traditional image tracking technology enhances the robustness and real-time performance of the system.

Keywords:YOLOv2;Camsift;target detection

0  引  言

视觉感知是智能机器人的核心技术,特别是双足行走的机器人,更需要靠视觉来感知环境、发现目标与规划行走路线,从而实现自主导航。双足机器人视觉任务中主要涉及到目标检测和目标跟踪。目标检测与识别是当前计算机视觉领域中一个重要的研究方向,早期的目标检测系统主要采用尺度不变特征变换(SIFT)和方向梯度直方图(HOG)等传统的特征提取方法[1],将提取到的特征输入至分类器中进行分类识别。这一时期的系统一般都是针对某个特定的目标并且数据规模不大的任务,对于复杂环境下目标识别能力的泛化性较差。本文将采用深度学习的方法解决双足机器人运动过程中的目标检测与定位问题,其中,YOLOv2是深度学习中目标检测的有效方法之一[2]。运动目标跟踪也一直是计算机视觉研究领域的热门课题之一,在进行目标跟踪时,利用简单的模板匹配方法难以达到理想的效果,且容易出现误匹配和目标跟踪丢失等情况,Camshift算法可以较好地解决上述问题,故本文将YOLOv2与Camshift两种方法结合起来实现双足机器人对目标的自动检测、跟踪和拾取。

1  目标检测与拾取系统的设计

系统可分为三大模块:目标检测模块、目标跟踪模块、双足机器人的运动控制模块。目标检测模块的核心是YOLOv2,目标跟踪模块的核心是Camshift算法。具体流程如图1所示。

1.1  目标检测模块

目标检测模块是整个系统中第一个起作用的模块,该模块的核心是YOLOv2。所以,训练出一个适用于本文的YOLOv2神经网络是关键的一步。在这一步中,面临的问题有两个。其一是用于训练的样本数据量的不足,要增加训练样本,可以采用数据增强的方法;第二个问题是,因YOLOv2的结构较深,有20多层,整个网络的训练耗时较长。要缩短训练时间,本文采用迁移学习的方法。

1.1.1  数据增强

数据增强是常见的增加样本量的手段。具体的方法有空间几何变换、像素颜色变换、随机裁剪等。联系到数据增强的要求:增加的样本(图像)应是有可能出现在场景中的样本,故应选择合适的增强方法。因为本文机器人操作的目标是小物件,如抓起的球或端起的杯子,在通常情况下,锁定目标的整体都在双足机器人的摄像头视野里,故我们可采用镜像翻转来进行数据增强。设图像高度、宽度分别为height和width,则图像水平与垂直翻转按式(1)计算:

对机器人摄像机拍摄的目标杯子的原图像如图2(a)所示,下面是几种典型的图像数据增强实例,垂直翻转后的图像如图2(b)所示,采用小半径模糊的原图像变换后如图2(c)所示,采用大半径高斯模糊处理的图像如图2(d)所示。

1.1.2  迁移学习

迁移学习是深度学习中被广泛使用的学习策略,其重要性在于当数据样本数量较小时可明显改进学习效果。迁移学习的另一个更重要的作用是可以利用别人的学习成果来缩短自己的训练时间。其基本思想是:迁移一个已有分类问题的信息源头到另一个目标任务上去,从而增加网络见过的数据量[3],图3给出了一个迁移学习的实例。

一般被迁移的是一些低级的特征信息,比如点、直线、曲线等。这些低级特征在不同的场景下,都能够正常使用。因为即使是不同的场景,其低级特征也都是点、线。而这些低级特征通常保留在一个网络的前面几层甚至十余层。而高级特征,比如具体的颜色,以及低级特征的多种组合及其构成的不同的形状,则因具体的场景而异,迁移高级特征意义不大,高级特征的信息,要通过对具体的数据进行学习,才能获得。除非数据源相似,任务相似,否则不应该迁移高级特征。所以通常的具体做法是冻结网络前面某些层,只训练最后面的数层。在本项目中,训练的是最后数层,其余的层均被冻结(参数不变)。由于只需训练数层,故能有效缩短训练时间。迁移的权重来源于YOLOv2在VOC数据集上的训练(VOC数据集较为庞大,通过基于它的训练能得到足够多的低级特征)。

1.2  目标跟踪模块

目标跟踪依赖于检测模块的输出和Camshift算法。Camshift算法是对Mean-shift算法的改进。Camshift算法能够根据目标的形变大小自动调节搜索窗口大小来适应目标尺寸的变化,从而在一定程度上有效地避免物体形变导致的目标丢失情况,Camshift算法主要包括反向投影、Mean-shift算法、自适应迭代过程。

1.2.1  反向投影

反向投影(Back Projection)是一种通过给定目标的像素分布直方图模型计算图像中目标概率的方式,即在图像中利用目标颜色直方图模型查找目标。RGB颜色空间对光照亮度变化敏感,在目标跟踪任务中,为了减少光照强度变化对目标跟踪的影响,将目标对象由RGB颜色空间映射到HSV颜色空间进行处理。H表示色调(Hue),S表示饱和度(Saturation),V代表亮度(Value)。我们利用Hue的值,建立关于Hue的颜色直方图模型。Hue值的求取与RGB空间的颜色分量R,G和B的关系如下[4]:

得到目标对象的Hue之后,将[0,255]区间划分成多个等长子区间,统计落在各个子区间的像素的个数Mk,将其与目标对象的总的像素个数TOTAL的比值(Mk/TOTAL)作为概率(以频率代替概率),建立直方图。接着以整幅图像的Hue通道中的各个像素值所在区间对应的概率值代替像素值,得颜色概率分布图,将其归一化到[0,255],得到新的图像,称该图像为Back。

1.2.2  Mean-shift算法

Mean-shift算法是一种非参数密度梯度估计算法,它根据搜索框的样本点反复迭代搜索目标图像特征空间中样本点最密集的区域,搜索点沿着样本点密度增加最快的方向“漂移”到局部密度极大值点处,Mean-shift算法设立1个“漂移”阈值和最大迭代次数,设I(x,y)是Back的搜索窗中位于(x,y)处的像素值,其实现过程如下。

步骤1:在Back中设置搜索窗的初始大小和位置。

步骤2:按式(5)—(8)计算搜索窗的质心。

步骤4:移动搜索窗的中心到质心,如搜索窗的中心与质心间的移动距离小于预设的固定阈值,或者循环运算的次数达到某一最大值,停止计算;否则重复步骤2、3、4。

在本项目中,第一帧的搜索窗(主要包含目标物)由YOLOv2经过前向传导输出。YOLOv2的输出为(x,y,w,h),其中(x,y)表示搜索窗的中心坐标,而w表示搜索窗的宽度,h表示搜索窗的高度。根据这个区域建立直方图,对后续的每一帧进行反向投影。

1.2.3  自适应迭代过程

Camshift算法是对视频序列中每帧图像分别作Mean-shift运算,将位置结果和目标大小作为下一帧Mean-shift算法搜索窗位置的中心和搜索框大小的初始化值[5]。

Camshift算法在实际应用中要求帧率较高,实际上是希望前后两帧中的同一目标物有重叠。而在本文中,目标物不动,双足机器人移动,接着拍摄,如此反复。此时,通过设置比较慢的步速和较小的位移,可使相邻两帧中的同一目标物在位置上有一定的重叠。这是本文能够使用Camshift的原因。

1.3  运动控制模块

1.3.1  拾取动作

构建运动模块的第一步是设计机器人可靠的操作目标物的动作。比如取杯子、捡球,要参考厂家给出的机器人各个关节的运动API参数的范围,大致确定关节的运动幅度,确定运动顺序,根据视觉反馈,按机器人关节运动的正向解,控制双足机器人做出移动、端杯或捡球的动作。

1.3.2  目标物的中心区域

这里以捡球为例,当球落在图像上的某个区域,机器人就执行捡球动作。故这个区域的确定,也是不可或缺的一个环节。确定该区域的方法较为简单,将球置于不同的位置,并先调用摄像头API拍照,并保存。然后捡球。如果能捡起来,则保留该位置对应的图片,否则去掉。当保留足够的照片,用标注工具Labeling对图片中的小球做标注,然后从对应的位置数据中,得到一系列的中心点。这个中心点区域用一个矩形来描述。这个矩形用左上角顶点(Node1)和右下角顶点(Node2)来表示:Node1(x1,y1),Node2(x2,y2)。

1.3.3  机器人运动控制算法

结合一套设计好的捡球动作,和预先确定的一个关于球的中心的区域,判断每一帧中的由Mean-shift得到的最终的移动搜索窗的中心点是否落在区域内,是则停止;否则,进行相应的移动。具体的步骤用伪代码描述如下:

(1)得到搜索窗的中心(xc,yc)。

(2)如果xcx2,向右移动,重复(1)和(2),否则,跳转至(3)。

(3)得到搜索窗的中心(xc,yc)。

(4)如果ycy2,向后移动,重复(3)和(4),否则跳转至(5)。

(5)执行捡球操作。

2  实验结果与分析

本文设计的系统图像处理采用了OpenCV,深度学习采用了TensorFlow框架,双足机器人运动控制采用自带的SDK,下面以捡起地面上小球为目标考查系统软件的有效性。双足机器人的摄像头的分辨率为640*480,拍到第一张图片后,传输到PC机,将尺寸修改为416*416,经过YOLOv2的前向传播,得到关于目标物的位置信息和大小信息,通过判断由Mean-shift算法得到的搜索窗中心与区域的关系来决定移动与否。若移动,则PC机通过SDK的接口,发送移动相关的信息,否则发送捡球的信息。

2.1  目标检测的结果

机器人摄像机拍摄获取当前场景信息,输入YOLOv2前向传播后,获取当前目标小球的结果如图4所示。

2.2  目标跟踪的结果

以YOLOv2输出的(x,y,w,h),作为Camshift算法需要的第一个搜索窗,得到的下一帧的跟踪结果如图5所示。

2.3  运动模块的结果

双足机器人锁定目标后,利用Camshift跟踪算法和机器人运动控制,进行对目标的逼近,整个小球目标检测与拾取过程如图6所示。

3  结  论

本文将流行的YOLOv2目标检测算法和经典的目标跟踪算法结合起来应用到双足机器人的目标视觉检测与跟踪系统中,实现了对预定目标的定位与拾取。其中,针对YOLOv2的训练集数据不足的问题,采用数据增强的方法来获得更多的数据;针对训练完整的网络耗时长的问题,采用迁移学习的手段来缩短训练时间。

参考文献:

[1] 李英豪,王华军,汪绪彪,等.SIFT算法研究及在目标识别中的应用 [J].舰船科学技术,2016,38(10):172-174.

[2] 雷维卓.基于YOLOv2的实时目标检测研究 [D].重庆:重庆大学,2018.

[3] 庄福振,罗平,何清,等.迁移学习研究进展 [J].软件学报,2015,26(1):26-39.

[4] Gonzalez R. C. 数字图像处理 [M].阮秋琦,等译.北京:电子工业出版社,2009.

[5] 师庆敏.基于Camshift算法的目标跟踪问题研究 [D].合肥:安徽大学,2013.

作者简介:刘超强(1994.10-),男,汉族,广东恩平人,本

科,学士学位,研究方向:图像分析与机器学习;叶坤(1997.03-),男,汉族,广东江门人,本科,学士学位,研究方向:图像分析与机器学习;通讯作者:李鹤喜(1961.11-),男,汉族,辽宁昌图人,教授,博士,研究方向:人工智能与机器视觉。

标签:  目标 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。