一种针对复杂场景的行人检测方法与流程

文档序号:17187195发布日期:2019-03-22 21:27阅读:416来源:国知局
一种针对复杂场景的行人检测方法与流程
本发明涉及目标检测技术,具体为针对复杂场景的行人检测方法。
背景技术
:行人检测是目标检测领域的一个分支,其主要任务是将行人从图像或者视频序列等输入数据中检测出来,并确定行人在输入数据中的位置。随着智能视频监控、无人驾驶和智能机器人等需求的不断增长,行人检测成为目标检测领域的研究热点和难点。同时,行人检测技术也是许多计算机视觉任务的基础,如行人重识别、行人跟踪等工作,都需以行人检测技术为基础开展后续的工作。因此,行人检测技术具有重要的研究意义和良好的应用价值。上世纪90年代开始,行人检测技术以其重要的理论价值和巨大的商业潜力引起了人们的关注,许多科研人员围绕该领域开展研究,提出了大量的算法和改进技术,其中较为经典的是基于机器学习的行人检测方法,此类算法的研究主要集中于2005年至2011年。2005年,dalal和triggs等人在cvpr(ieeeconferenceoncomputervisionandpatternrecognition)会议上提出梯度方向直方图(histogramoforientedgradient,hog)特征,并将其应用于行人检测。该算法以线性支持向量机作为分类器,结合hog特征,在mit行人数据集上取得非常高的检测准确率,在inria行人数据集上也取得了约90%的检测准确率。hog特征的提出大大推动了行人检测技术的发展,此后,大量基于hog特征的变种算法相继被提出。基于机器学习的行人检测方法采取人工提取特征的方式,其往往具有片面性和主观性,且此类算法普遍存在特征提取能力不足的缺点。近几年,随着数据量的日益丰富以及硬件设备计算能力的不断提升,深度学习技术取得重大突破,深度学习以其强大的特征提取能力在计算机视觉领域引起了一大批学者的关注,研究者们纷纷尝试将深度学习应用到目标检测和行人检测任务中。2014年,girshick等人在cvpr会议上提出r-cnn目标检测模型,该算法在pascalvoc数据集取得了53.7%的检测准确率,与传统方法相比有巨大的提升。虽然r-cnn在检测精度上有较大的提升,但其检测速度非常慢,无法满足实时检测。随后,girshick等人又相继提出fastr-cnn、fasterr-cnn目标检测模型,进一步提升检测准确率和检测速度。r-cnn、fastr-cnn和fasterr-cnn三种算法统称r-cnn系列目标检测算法。与r-cnn系列算法不同,redmon等人提出yolo目标检测模型,其舍弃r-cnn系列算法的候选框生成步骤,一步到位直接检测出目标的类别及坐标,该算法在保持较好检测准确率的同时极大提升了检测速度。2016年,liu等人在eccv(europeanconferenceoncomputervision)会议上提出ssd目标检测模型,ssd使用特征金字塔的方式来解决多尺度检测问题,在目标检测上取得重大突破,进一步提升检测速度与精确度。行人检测作为目标检测的一个分支,基于深度学习的行人检测算法大多都是在目标检测算法的基础上进行改进,进而实现行人检测任务。虽然近几年许多学者针对行人检测提出了大量基于深度学习的算法与技术,并在众多公开数据集上不断的刷新行人检测任务的检测精度,但对于场景较为复杂的数据集或贴近生活场景的视频数据,由于光照变化、背景复杂、视角差异等因素的影响,大部分算法在此类场景下无法提取有效的行人特征,检测效果无法令人满意,距离大规模商业应用还有一定距离,故当前行人检测技术的研究依然具有挑战性。总而言之,现有行人检测技术存在以下不足:1、虽然基于深度学习的行人检测算法在许多公开数据集上取得了不错的检测效果,但对于行人所处环境较为复杂的场景,如夜间环境、光照不均、人群密集、背景复杂等,当前主流的算法普遍存在误检率高、召回率低等缺点。同时,对于场景复杂的图像或视频序列,由于输入数据复杂性较高,采用结构简单的卷积神经网络往往无法提取有效的行人特征,使得模型得不到较好的训练,容易导致模型训练不拟合。2、现有ssd目标检测模型使用vgg16作为前置基础网络,使用其提取输入数据的低维纹理特征。对于复杂性较大的输入数据,由于vgg16网络层数较少,无法提取有效的行人特征,直接添加卷积层虽然能增加网络的深度,一定程度上提高模型的特征提取能力,但这种方式会导致梯度消失加剧,随着网络层数的加深,反而会出现检测准确率下降的现象,因此无法通过简单添加卷积层的操作来提升ssd模型在复杂场景下的行人检测性能。3、现有ssd目标检测模型在网络后端采用特征金字塔结构实现多尺度目标检测,其包含六层特征提取层,分别用于检测不同尺度的目标。由于ssd模型的六层特征提取层相互独立,没有共享特征信息,对于重要的特征,没有特征重使用,致使其浅层特征提取层特征提取能力较弱,无法在复杂场景下提取有效的行人特征。4、现有ssd目标检测模型所有卷积层中最小输出维度为64,最大为1024,且大部分卷积层的输出维度为256或512,过大的输出维度导致模型的参数量非常之多,同时增加了模型的计算量,降低了检测速度,无法满足嵌入式设备的需求。另外,ssd模型的所有卷积层均使用单一尺度卷积核进行卷积操作,没有使用不同尺度的卷积核来提高模型的特征提取能力,在关键特征层上无法充分提取有效特征,导致模型在复杂场景下的特征提取能力不足。技术实现要素:本发明的目的在于克服现有技术的缺点与不足,提供一种针对复杂场景的行人检测方法,该方法有效地克服了现有技术在复杂场景下行人检测误检率高和召回率低等缺点,增强了ssd模型的鲁棒性,同时降低了该模型的参数量,提升该模型在复杂场景下的行人检测性能。本发明采用以下技术方案来实现:一种针对复杂场景的行人检测方法,包括以下步骤:s1、搭建ssd目标检测模型,所搭建的ssd目标检测模型包括依次连接的前置基础网络、特征提取网络和分类检测模块;s2、修改前置基础网络,修改特征提取网络中的前两层特征提取层,提高ssd目标检测模型的特征提取能力;s3、添加inception组件,并修改所添加的inception组件,提高ssd目标检测模型的多尺度适应性;s4、设置相应的训练参数,训练ssd目标检测模型,当ssd目标检测模型达到拟合或者到达最大训练迭代次数时停止训练并保存训练好的模型文件;s5、设定相应的测试参数,根据训练好的ssd目标检测模型读取测试数据进行测试,输出并保存测试结果。优选地,步骤s2修改前置基础网络时,删除ssd目标检测模型的前置基础网络中的前四组卷积组,新建四组denseblock并串联形成densenet,将densenet添加进ssd模型的前置基础网络,替代所删除的前四组卷积组。优选地,步骤s2修改特征提取网络中的前两层特征提取层时,删除ssd目标检测模型的特征提取网络中的前两层特征提取层,新建两组denseblock分别替代所删除的两层特征提取层,保留特征提取网络中的后三层特征提取层,使其与新添加的两组denseblock形成新的特征提取网络。优选地,步骤s3在每组denseblock的concat层后端添加inception组件,对denseblock的输出特征进行卷积操作;在inception组件的每层卷积层后端添加batchnormalization层,并在inception组件的前端添加一层卷积层,在inception组件的concat层后端添加一层卷积层,形成inception组件的最终输出特征;在inception组件的输出特征后端分别添加池化层,对inception组件的输出特征进行池化操作。本发明与现有技术相比,具有如下优点和有益效果:1、本发明基于ssd目标检测模型,创新性地结合densenet(denseconvolutionalnetwork)、inception组件等多种特性,利用深度卷积神经网络强大的特征提取能力提升行人检测方法在复杂场景下的检测性能。本发明使用denseblock(稠密块)独特的网络连接方式取代常规的单向网络连接结构,将前置基础网络vgg16前四组卷积组替换为densenet,在加深模型深度的同时抑制梯度消失现象,提升了模型在复杂场景下的特征提取能力;另外,本发明将模型特征提取网络的前两层特征提取层替换为denseblock,加强关键特征的重使用及特征之间的信息共享,提升模型对中小目标的检测能力。2、本发明将densenet的连接模块由1x1的卷积层替换为inceptin组件,对denseblock的输出特征进行多尺度卷积,充分提取输出特征的信息,提高了模型的多尺度适应性,增强了模型的鲁棒性,使得模型的特征提取能力得到进一步提升。另外,本发明在inception组件的后端添加池化层,逐步降低网络特征宽度与高度,使得本发明所提方法的模型特征宽度、高度保持与原ssd模型的特征宽度、高度一致。3、本发明所添加的denseblock中3x3卷积层的输出维度为32,1x1卷积层的输出维度为128,而原ssd模型中卷积层最大的输出维度为1024,最小为64,且大部分卷积层的输出维度为256或512。由于本发明方法的卷积层输出维度较小,在加深网络深度的同时降低了模型的参数量,使得本发明方法的模型参数量远低于原ssd模型。另外,本发明在每组inception组件前端添加一层卷积核大小为1x1的卷积层,其输出维度为输入特征维度的一半,降低了inception组件的参数量,从而进一步降低了模型的参数量,提高了模型的检测速度。附图说明图1是本发明方法的目标检测模型结构图,主要包含六组denseblock,六组inception组件,五层pooling层(池化层),三层ssd模型原有的特征提取层及分类检测模块,其中pooling层及部分卷积层没有在图中画出。图2是本发明方法的denseblock及inception组件的连接简图,左边方框表示denseblock,右边方框表示inception组件。其中denseblock部分中圆形代表denseblock的一个节点,其形式为bn-relu-conv(1x1)-bn-relu-conv(3x3),1x1卷积层的输出维度为128,3x3卷积层输出维度为32;inception组件部分主要由三层卷积核大小分别为1x1、3x3、5x5的卷积层并联形成,且5x5的卷积层由两层3x3卷积层串联实现,本发明方法在inception组件的三层并联卷积层的后端都添加了bn层,这在图中没有画出。图3是本发明方法的目标检测模型训练流程图,主要训练流程为:搭建caffe版ssd目标检测框架、修改模型训练网络、转换训练数据格式、读取训练数据前向计算及反向传播训练神经网络、保存训练好的模型文件。图4是本发明方法的目标检测模型测试流程图,其主要测试流程为:搭建caffe版ssd目标检测框架、修改模型测试网络、转换测试数据格式、读取测试数据前向计算得到测试结果、保存测试结果。图5是本发明方法实施例中实验室结果的p-r曲线图。具体实施方式本发明基于ssd目标检测模型,结合densenet和inception组件的特性,提出一种针对复杂场景的行人检测方法,利用深度卷积神经网络强大的特征提取能力提升行人检测方法在复杂场景下的检测性能。本发明通过将ssd模型的前置基础网络vgg16替换为densenet,达到提升模型特征提取能力,降低模型参数量的目的。接着使用denseblock替换ssd模型特征提取网络的前两层,使特征提取网络能更加有效地利用关键特征,加强特征提取网络中卷积层的信息共享。最后,本发明在每个denseblock后端添加inception组件,使用不同尺度的卷积核对denseblock的输出特征进行卷积操作,增加模型的多尺度适应性,进一步提高模型的特征提取能力,增强了模型的鲁棒性,提升模型在复杂场景下的行人检测性能。下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。实施例本实施例主要基于caffe版的ssd模型实现,下面分别以psdb(cuhk-sysupersonsearchdataset,也称personsearchdatabase)数据集所划分的训练图像和测试图像作为训练数据和测试数据来详细介绍本发明的实施过程。psdb数据集是香港中文大学多媒体实验室王晓刚研究组发布的行人检测数据集,该数据集由拍摄图像和视频截图组成,共18184幅图像,包含训练图像11206张,测试图像6978张;全部图像中有12490幅图像由电子设备拍摄于各类生活场景,包括夜间、阴天、雨天、室内及室外等;另外的5694幅图像来源于电影或电视剧的截图。本实施例通过本发明的行人检测方法,将场景较为复杂的psdb测试图像中的行人检测出来,并给出行人坐标框及其对应的置信度,其模型训练流程如图3所示,对应的模型测试流程如图4所示。实施具体步骤如下:第一步,框架搭建及修改。基于caffe深度学习框架搭建ssd目标检测模型,修改ssd目标检测模型中的分类参数,将其由21分类模型修改为二分类模型,使其适用于行人检测,构建caffe版的ssd行人检测框架。本实施例中,使用python编程语言执行ssd_pascal.py文件,生成适用于pascalvoc数据集的多分类ssd模型,并对多分类ssd模型的训练网络和测试网络中的相关类别参数进行修改。其中,ssd目标检测模型包括依次连接的前置基础网络、特征提取网络和分类检测模块三部分,前置基础网络负责提取输入数据的低维纹理特征,特征提取网络负责提取高维及多尺度特征,分类检测模块负责对特征提取网络所提取的特征进行分类。前置基础网络为vgg16中的conv1_1至fc7层,共包含15层卷积层,其中vgg16的全连接层fc6、fc7被改为卷积核大小为3x3的卷积层。另外,特征提取网络包含六层特征提取层,分别为:conv4_3、fc7、conv6_2、conv7_2、conv8_2、conv9_2,其中conv4_3和fc7为前置基础网络vgg16的卷积层。第二步,psdb数据集格式转换。从psdb数据集的标注文件中读取行人框标注信息,计算每个行人框所对应的坐标值。以pascalvoc数据集的格式为标准生成psdb数据集中每幅图像所对应的xml标签文件,共生成18184份xml标签文件,包含行人框99809个。第三步,生成训练数据与测试数据。将psdb数据集所划分的训练图像和测试图像与相应的xml标签文件一一对应起来,并分别创建txt文件保存图像与xml的对应信息。运行create_data.sh文件读取相应的图像和xml标签文件,生成lmdb格式的训练数据和测试数据。第四步,修改前置基础网络,修改特征提取网络中的前两层特征提取层,提高ssd目标检测模型的特征提取能力。删除ssd模型的前置基础网络vgg16中的前四组卷积组,新建四组denseblock并串联形成densenet,其中四组denseblock所包含的3x3卷积层数量分别为2、4、8、16,且每层卷积层的输出特征维度为32,将上述得到的densenet添加进ssd模型的前置基础网络,替代所删除的vgg16前四组卷积组。删除ssd模型特征提取网络中的前两层特征提取层,新建两组denseblock分别替代删除的两层特征提取层,其中添加的denseblock所包含的3x3卷积层数量为8,保留ssd模型的特征提取网络的后三层特征提取层,使其与新添加的两组denseblock形成新的特征提取网络。其中,densenet为一种卷积神经网络结构;本实施例新建3x3卷积层数量分别为2、4、8、16的四组denseblock,得到dense_block1、dense_block2、dense_block3和dense_block4,其中denseblock的基础结构为bn-relu-conv(1x1)-bn-relu-conv(3x3),卷积层conv(1x1)的输出维度为128,卷积层conv(3x3)的输出维度为32。通过concatenation操作将denseblock中的基础结构连接起来,便形成了denseblock。分别替代所删除的两层特征提取层的两组denseblock,其构建方式与densenet中的denseblock构建方式相同,分别为dense_block5和dense_block6,其所包含的3x3卷积层数量为8;不同的是,特征提取网络中所添加的denseblock作为特征提取层,除了向网络后端的特征提取层传递特征之外,还将其输出特征传递至分类检测模块,取代原有的conv4_3、fc7、conv6_2共三层多尺度特征层,其中conv4_3被前置基础网络的第四组denseblock的输出特征取代。后三组denseblock的输出特征与conv7_2、conv8_2、conv9_2组成新的特征提取网络,该特征提取网络所包含六层特征提取层所对应的尺寸大小分别为:38x38、19x19、10x10、5x5、3x3、1x1。第五步,添加inception组件,并修改所添加的inception组件,提高ssd模型的多尺度适应性。在每组denseblock的concat层后端添加inception组件,分别使用尺寸大小为5x5、3x3、1x1的卷积核对denseblock的输出特征进行卷积操作;在inception组件的每层卷积层后端添加batchnormalization层,并在inception组件的前端添加一层卷积核大小为1x1的卷积层,降低特征维度,减少计算量,最后在inception组件的concat层后端添加一层卷积核大小为1x1的卷积层,形成inception组件的最终输出特征。在前五组inception组件的输出特征后端分别添加池化层,对inception组件的输出特征进行池化操作,使得inception组件的输出特征的宽度与高度随denseblock数量的增加而减少,保持新的神经网络结构的整体宽度与高度与原ssd模型一致。形成的目标检测模型如图1所示。在添加inception组件过程中,通过concatenation操作将卷积核大小分别为5x5、3x3、1x1的三层并联卷积层进行融合,组成inception组件,其中卷积核大小分别为5x5、3x3、1x1的三层并联卷积层的卷积核个数比为1:2:1,且卷积核大小为5x5的卷积层由两层卷积核大小为3x3的卷积层串联实现,如图2所示。将上述inception组件作为尺度转换模块添加至每组denseblock后端,得到inception1、inception2、inception3、inception4、inception5、inception6,对denseblock的输出特征进行多尺度卷积操作。在修改所添加的inception组件过程中,inception组件前端所添加的卷积层的输出维度为输入特征维度的一半,且inception组件融合特征层后端所添加的卷积层的输出维度等于卷积核大小分别为5x5、3x3、1x1的三层并联卷积层的卷积核个数之和。在前五组inception组件后端添加的池化层为pool1、pool2、pool3、pool4、pool5,使得每组denseblock和inception组件的特征宽度、高度与原ssd模型的特征组的尺寸相同,即网络特征的宽度和高度依次为300x300、150x150、75x75、38x38、19x19、10x10、5x5、3x3、1x1。第六步,设置模型的训练策略。经第四、五步修改后,所得ssd目标检测模型作为训练网络,运行ssd模型自带的脚本文件生成训练数据与测试数据所对应的lmdb格式文件,设置相应的训练参数,运行训练脚本读取训练数据的lmdb格式文件训练ssd目标检测模型,当模型达到拟合或者到达最大训练迭代次数时停止训练并保存训练好的模型文件。本实施例中,设置训练batch_size=2,iter_size=16,最大训练迭代次数max_iter=150000,设置优化函数为sgd(stochasticgradientdescent,随机梯度下降),动量参数momentum=0.9,初始学习率base_lr=0.005,分别在第80000、100000、120000次迭代之后将学习率缩小10倍。第七步,对模型进行训练,并保存训练好的模型。修改第五步所得神经网络的训练数据路径,将其指向lmdb格式的psdb训练数据集,输入相关参数运行caffe开始训练,利用卷积神经网络的反向传播机制不断更新模型权重值,降低模型的损失值,当模型拟合或者达到最大训练迭代次数,停止训练并保存模型权重值,输出对应的caffemodel文件。第八步,模型测试并输出测试结果。修改测试神经网络的训练数据路径,将其指向lmdb格式的psdb测试数据集,根据实际任务要求设定iou交并比阈值、置信度阈值、非极大值抑制阈值等测试参数,运行测试脚本调用训练好的模型读取测试数据的lmdb格式文件进行测试,输出并保存测试结果。本实施例中,调用第七步所保存的caffemodel文件作为测试模型,输入相关参数运行caffe调用测试模型对测试网络参数进行初始化,读取测试图像并对测试网络进行前向计算得到测试结果,最后将测试结果存储于txt文件中,包含测试图像名称、检出行人框坐标值及该矩形框所对应的置信度。使用python编程语言执行plot_detections.py文件,在测试图像上绘制所检测出的行人框,并在行人框上方显示其置信度。为了验证本发明方法的可行性以及检验该方法的各项性能,本发明在caffe深度学习框架上对所提方法进行仿真,实验选择psdb数据集中的训练图像作为训练数据,共有训练图像11206张。同样,选择psdb数据集中的测试图像作为测试数据,共有测试图像6978张。程序运行平台为linux-ubuntu16.04操作系统,所使用的gpu型号为nvidiageforcegtx1080ti,gpu显存为11g,详细训练参数设置为:batch_size=2,iter_size=16,最大训练迭代次数max_iter=150000,优化函数为sgd(stochasticgradientdescent,随机梯度下降),动量参数momentum=0.9,初始学习率base_lr=0.005,分别在第80000、100000、120000次迭代之后将学习率缩小10倍;详细测试参数设置为:batch_size=1,test_iter=6978,iou交并比阈值overlap_threshold=0.50,nms非极大值抑制阈值nms_threshold=0.45,置信度阈值confidence_threshold的取值范围为0.1-0.9,步进为0.1。为了更好地验证本发明所提方法的有效性,将本发明方法的测试结果与默认的ssd框架的测试结果进行对比,在检测准确率、召回率、模型收敛速度等方面对本发明方法进行分析评价,为了保证实验数据的有效性及公平性,除了学习率之外,本次实验ssd模型与本发明方法的实验环境和所有实验参数均相同。由于ssd模型默认没有添加bn层,设定学习率为0.005时会出现梯度爆炸现象,所以本次实验本发明方法的学习率为0.005,ssd模型的学习率为0.0005。表1列举了ssd模型和本发明方法的各项检测结果,以及这两个模型的对比数据。其中“原始数据”表示psdb测试集所包含的数据,其它三列分别表示ssd的检测结果、本发明方法的检测结果、本发明方法对比于ssd模型的提升量。“height<60”表示高度小于60个像素值的行人框数量,由于psdb数据集只标注了高度大于50个像素值的行人,故该项也表示高度位于50-60像素值的行人数量,“60≤height<200”和“200≤height”则分别表示行人高度位于60-200像素值以及行人高度大于200个像素值的行人数量。另外,表1的测试数据所对应的测试参数为:iou交并比阈值overlap_threshold=0.50,nms非极大值抑制阈值nms_threshold=0.45,置信度阈值confidence_threshold=0.50,两种方法的实验环境及其他实验参数全部保持一致。表1对比项原始数据ssd本发明方法提升量height<601939761366060≤height<2002232911479140312552200≤height1364210094113961302召回正样本数量3791021649255633914检测框数量-23198271693971召回率-52.97%62.54%9.57%准确率-93.32%94.09%0.77%map-75.21%81.13%5.92%由表1的数据可知,本发明方法在所有对比指标上的检测结果均优于ssd模型。其中对于高度小于60个像素值的行人框,psdb测试集原有的数量为1939个,ssd模型只检测出了76个,召回率约为3.92%,本发明方法检测出了136个,召回率约为7.01%,相比于ssd模型提高了3.09%;对于高度位于60-200像素值的行人,本发明方法有较大的提升,比ssd模型多检测出了2552个行人框,召回率上提高了11.43%;对于高度大于200像素值的行人,ssd模型和本发明方法的召回率分别为73.99%和83.54%,该项两个模型的召回率均高于70%,虽然提升空间有限,但本发明方法依旧比ssd模型多检测出了1302个行人框,召回率上提高了9.55%。另外,本发明方法在整体召回率和map(meanaverageprecision)等指标上与ssd模型相比均有所提升,其中map指标与ssd相比提升了5.92%。图5是测试结果的p-r曲线图,纵坐标表示检测准确率(precision),横坐标表示检测召回率(recall),设置不同的置信度阈值求得多对p-r值,将多对p-r值绘制成相应的p-r曲线。带三角形的曲线为本发明方法的p-r曲线,带圆点的曲线为ssd模型的p-r曲线,其中iou交并比阈值overlap_threshold=0.5,nms非极大值抑制阈值nms_threshold=0.45,置信度阈值confidence_threshold的最大值为0.9,最小值为0.1,步进为0.1,每种方法包含9对p-r值。由图可知,在曲线的中间部分,本发明方法在相同的准确率下召回率明显高于ssd模型,且ssd模型在取得最高召回率的同时准确率却低于20%,而本发明方法的准确率均大于55%。同样,当ssd模型取得最高准确率时,其召回率却低于40%,而本发明方法的召回率均高于50%。上述实施例从多个角度将本发明方法的测试结果与ssd模型的测试结果进行对比,由对比结论可知,本发明方法以psdb数据集作为训练数据和测试数据,在不同的对比条件下检测结果优于ssd模型,且模型的训练收敛速度与ssd模型相当,证明了本发明方法的有效性。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1