YOLO算法在目标姿态检测中的应用

2019-09-17 08:28徐昆朱国华刘文凤范超
电子技术与软件工程 2019年16期
关键词:姿态维度函数

文/徐昆 朱国华 刘文凤 范超

目标检测的目的是从不同复杂程度的背景中辨识出运动目标, 并分离背景, 从而完成跟踪、识别等后续任务。

20世纪80年代, Rumelhart、Hinton 和Williams 三位科学家完整而系统地提出了基于反向传播算法 (Back propagation, BP) 的神经网络,开启了深度学习在学术界和工业界的浪潮。深度学习自从其诞生之初,便一次又一次地在它所涉及的领域取得巨大的成功,其核心原因在于它具有强大的特征表示和学习能力。一个强有力的特征表达, 对于多媒体内容识别和分析的效果是事半功倍的。

通常而言,目标检测是针对多目标进行的,而我们要做的是对同一目标的不同姿态进行识别。相对而言,对同一物体的姿态进行分类会有几个突出的技术难点:

(1)由于是对同一物体进行特征提取,因此解决过拟合问题比较困难;

(2)由于同一物体不同姿态的差别往往很细微,因此要求我们的分类器需要有更高的灵敏度。本文充分利用了YOLO算法实时检测,一次读取的特点,设计了一种可以识别特定场景下目标方向的方法。

1 方法提出

1.1 目标检测的研究现状

2015年,Redmon J提出了YOLO检测算法。YOLO属于CNN,由卷积层,池化层和全连接层组成。与CNN不同的是,YOLO的输出层不再是Softmax函数,而是张量。目前基于深度学习应用比较广泛的目标检测算法可以分为两类:第一类是双步 (two stage)目标检测算法,如 Fast R-CNN,Faster R-CNN,Mask R-CNN等,这些算法都是将目标检测分为两个阶段,首先使用区域候选网络(RPN)来提取候选目标信息,然后再经过检测网络完成对候选目标的位置和类别的预测和识别;第二类是单步(one stage)目标检测算法,如 SSD,YOLO,如图1所示。

图1:YOLO中的检测原理

图2:数据集示例

图3:图2增加随机扰动因子后的效果

1.2 损失函数设置

对目标的姿态进行识别是计算机视觉领域的一个难点,如果要识别的目标的种类有10种,假定每张图片中只有一个需要识别的目标,每个目标只有简单的4个姿态(上下左右),那么使用传统的one-hot编码方式,最后网络的输出向量的维度应该为10+4+4。

可以看到,即便是一个功能如此简单的模型,它最后的输出维度也到达了18*1,如果在此之前对图像进行7*7的区域划分,则模型最后的输出维度至少应有7*7*18。但是在某些特定的场景下,相应的损失函数可以写为如下公式:

2 数据集及数据处理

图4:测试样例

2.1 数据集制作与处理

和单纯的目标检测相比,如果想要使得模型具有识别目标姿态(上下左右)的功能,那么我们使用的数据集至少是原始数据集的4倍。在实际的操作中,我们制作了一个简单的只有300多张图片的数据集。每张图片对应的标签有5个维度,(cx,cy,width,height,classification),分别表示目标中心点坐标(cx,cy),宽度,长度(width,height),和类别(classification),如图2所示。

为防止网络过拟合,通常而言我们需要尽可能多的训练数据,然而,通过人工进行图像采集的方式获取数据的效率很低,想获得足够多的数据需要很长时间。对于图像识别问题来说,使用数据增强来扩大数据量是一 种效率很高且行之有效的办法。图像识别问题中常用 的数据增强方法有:平移、旋转、翻转、缩放、色彩 偏移等。

从图3我们可以看到,对图片增加均值0,方差40的随机扰动之后,可以有效的屏蔽光线,明暗等局部无关特征。由于我们要做的是对目标的角度进行识别,因此我们可以对图像进行180°的翻转操作,这样可以有效屏蔽由于角度差异而带来的误差。

3 检测方法

3.1 设置相对坐标

为了能够在不同尺度的照片上进行检测,我们用相对坐标来标识物品。如下图所示,设图像的水平长度为width,竖直长度为height,以图像的左上角为原点,向下,向右为正方向。如果预测框的左上角坐标为(x1, y1),右下角坐标为(x2,y2),那么预测框的位置可以用一个三元组(cx,cy,RelativeW,RelativeH),分别表示相对水平位置,相对竖直位置,相对宽度,相对高度,计算方式为:

3.2 实验结果及分析

在训练过程中,我们最终定下了一个10层的卷积神经网络,它在规模相对较小的条件下能够得到较高的精确度。在训练1000次之后,我们的模型的均方误差已经降到了0.004,如图4所示。

4 结束语

本文根据YOLO算法,提出了一种改进算法,通过对损失函数进行设置使得模型具有判别目标方向的功能。在实验的过程中,为了提高模型的泛化能力,我们使用了不同方法对数据集进行增强,使得模型在较少数据集的情况下,完成了在特定场景下对特定目标进行定位和姿态检测的功能。

猜你喜欢
姿态维度函数
二次函数
二次函数
函数备考精讲
攀爬的姿态
全新一代宋的新姿态
跑与走的姿态
光的维度
“五个维度”解有机化学推断题
人生三维度
阅读是最美的姿态