APP下载

利用深度学习进行目标检测

2018-12-18李奥

中国设备工程 2018年23期
关键词:候选框卷积物体

李奥

(辽宁 大连 116100)

1 概述

1.1 研究背景与意义

随着社会的发展,汽车已经越来越成为我们的生活中不可或缺的交通工具。我国的人均汽车拥有量也在呈持续上升状态,汽车给当今社会带来了极大的推动力,给人们提供生活上的许多便利,改变了人们的交通出行方式,随着汽车的快速发展,其所带来的问题也日渐显露出来,其中最重要的问题就是安全问题。严峻的交通安全问题,受到社会的广泛关注。

汽车在行驶过程中,主要由驾驶员控制,由此可见,驾驶员是汽车驾驶中最重要的一个人。研究指出,绝大多数交通事故的发生,都要归咎于驾驶员的状态及反应,首当其冲的便是疲劳驾驶或酒驾等。基于此现象,有关人士通过研究表明,大多数的交通事故实际上是可以避免的。然而现实生活中,汽车都是由驾驶员驾驶,道路上的各种信息都是通过驾驶员来感知的,如果由于特殊原因导致驾驶员判断错误,那么就可能引发交通事故。试想如果现在有一个全自动的系统,能够在发生事故之前避开危险,这不仅可以大大降低交通事故的数量,而且可以保障人们的生命安全,于是便有了智能车辆。其最重要的功能就是能够根据道路信息,结合相关技术,帮助驾驶员驾驶汽车或直接代替驾驶员驾驶汽车,通过智能判断,避开道路上的危险。由此可见,智能车辆越来越符合社会的需求,这也是许多国家花费大量人力物力研究智能车辆的发展的原因,所以,本课题具有重要的研究意义和应用价值。

1.2 研究现状

Felzenszwalb等人提出了基于利用弹簧形变来模拟目标姿态形变的模型,对于不同的姿态以及形状的相同种类的物体检测有着非常好的效果,为后来目标检测算法的研究奠定了良好的基础。Dalai等人提出了将有向HOG描述子与SIFT特征级联,得到新的对目标局部区域有着很好效果的目标区域描述子。该特征描述子改进后在行人测试任务中取得了很好的效果,横向对比其他方法都要有优势。但是由于该特征的优势目前只应用于一个测试项目,所以还有待进一步研究。Riori等人提出了LeNet网络模型,由于该网络模型基于CNN算法,在二值图像上的处理优势明显展露出来,相较其他算法都要略高一筹。该模型事实上是CNN中最早的一个被用于手写数字识别任务的模型,并且在当时取得了最佳效果。Nowlan等人介绍了手势识别系统,该系统借助CNN算法来实现实施高精度定位每一帧图像中手的位置与手势,由此判断手势状态该实验可在适当环境中进行快速高精度的运行,并得到准确度几乎高达100%的结果。Ouyang等人提出的行人检测任务中,利用CNN算法,将端到端CNN作为目标检测人物模型,极大地改善了许多问题。

2 目标检测

2.1 什么是目标检测

目标检测是计算机视觉的一个基础的任务,主要的目标是根据给定的一张图片,从中检测出我们想要检测的物体,用一个框去将物体包括起来。本文用4个值来表示一个物体,分别是物体在整幅图像中的左下角的x,y坐标,以及物体的长和宽。

2.2 本文使用的数据集

本文在自建的数据集上进行目标检测任务,数据集中包括的图片为高速公路上采集的数据,总共包括13000张图片,我们选择其中的10000张作为训练数据集,其余的作为测试数据集。总共包括5个类别,分别是车辆、自行车、行人、摩托车以及广告牌,另外包括一个背景类,背景类的类别是0。

2.3 目标检测的一般过程

对于一个完整的目标过程来说,我们首先要做的是构建一个供我们的算法学习的数据集,这个数据集中应该包括原始图像,以及原始图像的每一个物体的位置,详细的信息我们已经在2.2中介绍过了。接下来我们需要对数据集做一个简单的处理,由于本文使用的算法的原因,我们需要将图像调整为固定的大小,本文中所使用的固定的大小为300×300。接下来需要对数据做一个增强,主要原因是因为本文包括的训练数据比较少,因此需要增加数据的数量。

本文中使用的图像增强操作主要包括图像的随机翻转,以及随机对长和宽做裁剪。第四步是对构造检测模型,这一部分我们主要在第三部分进行介绍,最后是使用我们已经训练好的网络对图像进行预测,获得检测的最终结果。

3 目标检测方法

3.1 SSD

首先,在做检测的时候我们需要使用一个基础网络来提取数据的特征,由于resnet在图像分类这一任务上取得了最好的效果,同时应为其相比vgg来说具有更少的参数以及更深的网络结构,因此我们选择resnet作为我们的基础网络。同时我们对基础网络做了如下的修改,首先将resnet最后作为分类的全连接层去掉,本文在此基础上增加了6个卷积层,分为三组,每一组包括两个卷积层。第一个卷积层是用来提取本层的特征的,因此我们使用1×1的卷积核,第二层我们想要获得不同大小的特征图,因此这一层我们使用3×3的卷积核,同时stride设置为2,这样卷积过后的特征图刚好为原先的一半。

根据其他人的研究成果,我们发现使用多种不同尺度的特征图进行预测,会获得比较好的效果,因此本文选择使用6个卷积层的输出作为我们的网络的预测层,分 别 是 res3b3,res5c/conv1-2, res5c/conv2-2,res5c/conv3-2,pool6。分别在每一层后会有两个分支,一个分支负责预测候选框,直接在特征图后接一个卷积层预测候选框即可,另外一个分支负责预测候选框属于哪一个类别,当然,每一层预测的候选框以及所属类别的个数都是固定的。因此,我们可以获得6组候选框,接下来只需要将6组候选框合并到一起并且计算损失函数,然后更新网络的参数即可。下面介绍网络的详细结构。

对于上面的每一层中的一个特征图来说,会产生固定个数的候选框。比如说特征图的大小是m×n,并且每个位置产生的候选框的个数是k个,那么对于一个c类物体的检测任务来说,会产生(c+4)×k×m×n个数据。我们把他叫做prior box。下面介绍k是如何产生的。

之所以需要在特征图的同一个位置产生k个不同的候选框,是因为这样可以处理不同尺度的物体的问题。本文中使用的长宽比是{2,3},在res3b3这一层的特征图中我们只使用长宽比为2,也就是说,在res3b3这一层,特征图上的每一个点产生3个候选框,其他特征图上的每一个点产生4个候选框。这样我们就获得了m×n×k个候选框。6个候选框包括两个正方形的,分别是min_size×min_size, max_size×max_size,另外两个根据长宽比以及min_size进行计算。这样我们就获得了很多个候选框了。接下来需要将候选框与我们的数据集中标定的真实的框进行匹配,就可以获得我们的训练的真实的框了。首先我们需要计算我们在当前层中产生的候选框与真实的框的IOU,然后挑选出IOU大于0.5的作为正样本,小于0.5的就作为负样本。但是,这样做有一个很大的问题就是由于我们在每一个位置上都产生一个候选框,会有大量的样本是负样本,这样我们在训练的时候就会出现样本不均衡的现象,会对最终的训练结果产生比较大的影响。因此,我们需要在这里处理样本不均衡的现象,是使用focal loss来处理这样的情况,主要是在loss上对负样本与正样本做一个均衡。本文使用的方法是,使用难样本挖掘方法,本文在前向计算的时候会计算出每一个候选框的损失函数的值,然后选取几个具有最大的损失函数值的候选框保留下来,其他的候选框直接丢掉,以保证我们在训练的过程中正负样本的比例是3:1即可。这样,我们就获得了所有的训练的数据。

3.2 RefineDet

RefineDet在SSD的基础上做了一些修改,结合以一步做检测的方法的优点以及两步做检测的方法的优点,不仅增加了模型的准确率,而且模型的速度也比较快。两步做检测的方法通会有一步用于筛选掉大量的不包含物体的样本,只保留包含物体的样本,这样可以解决正负样本不均衡的问题,但是一步做检测的方法中,往往是不包含这样的步骤的,所以虽然一步做检测的方法速度比较快,但是由于网络中存在着大量的负样本,因此会造成样本不均衡的情况,这样准确率上就没有非常大的提高了。

RefineDet为了解决这样的问题,在原先SSD的基础上分成了两个模块,一个是图1中上面的部分,我们称之为ARM,主要用于尽可能多的在这一步移除掉大量的负样本,另一个模块就是检测的模块,主要用准确的回归出物体的位置以及增加检测的准确度。另外由于在多个位置中做检测的时候特征图的大小不一致,因此我们在连接的时候,也就是下图1中的TCB模块,需要对较小的图做一个反卷积来增加特征图的大小,这样我们就可以把上一层的特征与当前层的特征加起来,获得不同尺度的信息,接下来就和SSD一样直接预测出候选框的位置以及类别来了。

图1

4 实验结果

本文所使用的GPU是3块Titan X,每一块的显存为12GB。基础网络选择ResNet,输入的图像尺寸为300×300,batch_size为24,即每一块GPU上的batch为8,网络的的优化方法为SGD,初始的学习率为0.01,在训练的第40000步将为初始学习率的1/10,网络总共的迭代次数为60000次,每隔10000次保存一下网络的参数。Momentum为0.9。SSD中所使用的长宽比在第一个特征图中是2,在其他的特征图中使用的长款比是2和3。另外在实际的程序调试中,本文在生成候选框的时候,分别对左下角坐标以及候选框的长款做了微调,在左下角的坐标中每个值中加了0.1,长宽加了0.2。

5 结语

在当今的信息社会中,目标检测在我们的生活中的应用也越来越多,如手机相机中的人脸定位,各种监控系统中的车辆检测人脸检测,自动驾驶中的各种检测任务等。另外随着GPU并行计算的发展,为深度学习提供了比较良好的硬件基础。

本文主要介绍了目标检测的背景、意义,当前的研究现状以及目标检测的多个方法,包括SSD、RefineDet等方法,并进行了视线。

目前目标检测的方法仍然存在着比较多的问题,主要包括:(1)对于较小物体的检测比较困难;(2)对于特别大的物体的定位仍然存在着问题。

猜你喜欢

候选框卷积物体
面向自然场景文本检测的改进NMS算法
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于深度学习的重叠人脸检测
深刻理解物体的平衡
卷积神经网络的分析与设计
从滤波器理解卷积
基于单帧标注的弱监督动作定位
我们是怎样看到物体的
基于傅里叶域卷积表示的目标跟踪算法
一种针对特定目标的提议算法