本发明涉及一种行人检测方法。特别是涉及一种基于深度监督学习提取图像多级特征的行人检测方法。
背景技术:
行人检测是利用计算机视觉技术判断图像中是否存在行人并给予精确定位。针对远红外图像的行人检测拥有诸多优点和广泛的应用场景。相比与可见光波段,远红外热成像探测距离远、成像质量高、行人目标特征突出,广泛应用在车辆自动驾驶、辅助驾驶、安防监控、机场安全等领域。深度学习技术和卷积神经网络近年来在许多计算机视觉任务中都有不俗的表现。许多采用深度学习检测模型的行人检测方法,相比基于传统机器学习的模型,也取得了突破性的进展。现行的深度学习行人检测方法大多先行在imagenet数据集上预训练分类模型,随后再于行人检测的数据集上进行检测任务的调优。但是远红外的图像为单通道灰度图像,而预训练的imagenet数据集为彩色三通道图像,远红外热成像的细节特征也与可见光图像迥异,由分类模型转向检测任务会有也迁移学习的瓶颈,这些因素极大的影响了神经网络训练结果,限制了红外行人检测系统的准确率。基于深度学习的行人检测方法虽然性能优异,但也有计算量大,占用内存空间大的缺点,现行算法多运行在gpu平台,限制了其在嵌入式终端和pc端cpu上的应用。技术实现要素:本发明所要解决的技术问题是,提供一种实现了在红外数据集上的端到端训练,提高了基于远红外图像行人检测准确率的基于深度监督学习提取图像多级特征的行人检测方法。本发明所采用的技术方案是:一种基于深度监督学习提取图像多级特征的行人检测方法,包括如下步骤:1)构建红外行人检测训练集和测试数据集;2)在深度学习框架caffe上搭建基于深度监督学习的行人检测网络;3)采用rmsprop学习策略训练行人检测网络,采用如下配置进行训练:参数初始化方法为msra,设置batchsize大小为48,初始学习率为0.025,每迭代5个epoch,学习率衰减一次,衰减率为0.98,进行240000次迭代后达到最佳效果;4)针对intelhaswellcpu硬件平台,对行人检测网络的前向推理阶段进行优化加速。步骤1)中红外行人检测训练集和测试数据集所需红外图像数据采用elektra研究中心的cvc-09和cvc-14数据集,包括:(1)修改红外图像的标注数据格式为voc数据集标准;(2)将cvc-09和cvc-14两数据集合并;(3)选取12534张图片为训练集,剩余3600张图片为测试集;(4)制作训练和测试时时所需的图片目录文本文件。在输入神经网络前,将图片尺寸裁剪为320*320,此时图片长宽均为cpu单指令多数据流指令宽度的整数倍。步骤2)所述的行人检测网络包括:骨干网络和后端检测器。所述的骨干网络采用mobilenet-v2,骨干网络最前端采用3*3传统卷积的基干层,后续各层均采用基于深度可分离卷积的bottleneck反转风格设计。所述的骨干网络包括:1个3*3卷积的基干层,通道数为32,步长为2;15个反转bottleneck组成的特征提取层,各层通道数分别为16、24、24、32、32、32、64、64、64、64、96、96、96、160、160,且第2、4、7、11、14层的步长为2。所述的后端检测器是以ssd的架构为基础,选用骨干网络的第十五层和ssd的五层特征图作为ssd的特征输入,所述的ssd的五层特征图,是采用mobilenet-v2中的bottleneck卷积建立的特征图,并将线性层的通道数提升为输入通道的二分之一,在特征图间建立深度监督残差连接,采用1*1卷积连接,连接合并后的结果先进行通道升维,再输送到后续检测网络。步骤4)包括:(1)对行人检测网络进行速度测试,得到网络中调用次数最多,占用运行时间最长的是深度可分离卷积;(2)以深度可分离卷积的输入数据的宽、高作为变化最快的维度,对深度可分离卷积进行分块,并对每个分块的运算进行循环展开;(3)在c++代码中调用intelintrinsic指令,对循环展开后的分块进行向量化处理。本发明的一种基于深度监督学习提取图像多级特征的行人检测方法,不需要预训练模型,从零开始训练的行人检测方法,实现了在红外数据集上的端到端训练,提高了基于远红外图像行人检测的准确率。同时精心设计了精简高效的网络架构,优化了运算热点,可实现基于pc端x86cpu和嵌入式端armcpu的实时检测。本发明有益效果如下:1、本发明中,卷积网络各层之间均有残差连接,改善了梯度从网络较深层向较浅层的流动性,同时增加了特征的重用性,使得不同尺度的特征能被网络各层加以利用,使得网络可以基于较少的通道数量,特征图尺寸,实现较高的表达能力,在保证检测精度的同时减少了网络参数和运算量。2、本发明中,基于深度监督网络的架构,可实现在红外数据集上从零开始的训练。传统方法为在大规模可见光数据集上预训练,再与目标数据集调优。由于可见光rgb的预训练模型与红外数据集的单通道图像有较大的属性差别,使得调优之后的网络并不能很好的拟合红外图像。本方法直接在红外数据集上训练,可实现更好的拟合。同时减小了训练的工作量,可节约训练时长和能耗。3、本发明中,对神经网络推理阶段的“热点”:深度可分离卷积进行了优化加速,加大的减少了运行时间。同时,使得本行人检测方法可运行在许多运算资源受限的平台,例如手机和某些嵌入式设备,极大地拓宽了本发明的应用场景。附图说明图1是ssd检测网络特征图;图2是本发明检测网络特征图;图3是本发明中特征图间的bottleneck卷积方式和残差连接。具体实施方式下面结合实施例和附图对本发明的一种基于深度监督学习提取图像多级特征的行人检测方法做出详细说明。本发明的一种基于深度监督学习提取图像多级特征的行人检测方法,包括如下步骤:1)构建红外行人检测训练集和测试数据集;所述的红外行人检测训练集和测试数据集所需红外图像数据采用elektra研究中心的cvc-09和cvc-14数据集,本发明的构建红外行人检测训练集和测试数据集包括:(1)修改红外图像的标注数据格式为voc数据集标准;(2)将cvc-09和cvc-14两数据集合并;(3)选取12534张图片为训练集,剩余3600张图片为测试集;(4)制作训练和测试时时所需的图片目录文本文件。本发明在输入神经网络前,将图片尺寸裁剪为320*320,此时图片长宽均为cpu单指令多数据流指令宽度的整数倍,方便后续的向量化优化。2)在深度学习框架caffe上搭建基于深度监督学习的行人检测网络;所述的行人检测网络包括:骨干网络和后端检测器。其中,(1)所述的骨干网络采用mobilenet-v2,骨干网络最前端采用3*3传统卷积的基干层,后续各层均采用基于深度可分离卷积的bottleneck反转风格设计,bottleneck为反转风格,bottleneck首先采用1*1的普通卷积进行升维,再选用3*3的深度可分离卷积对特征图的空间信息进行处理,最后再选用1*1卷积实现降维,并去掉非线性层relu以保全特征图的全部信息量。在此过程中,深度可分离卷积运算开销极小,故先将网络升维,再进行高维运算,以增强网络的表达能力。如图3所示,不同层次间的残差连接在低维的线性层进行,因线性层的通道数较小,在骨干网络中通常设定为输入通道数的六分之一,故此种连接方式可极大节约内存。所述的骨干网络如表1所示,包括有:1个3*3卷积的基干层,通道数为32,步长为2;15个反转bottleneck组成的特征提取层,各层通道数分别为16、24、24、32、32、32、64、64、64、64、96、96、96、160、160,且第2、4、7、11、14层的步长为2。(2)所述的后端检测器是以ssd的架构为基础,选用骨干网络的第十五层和ssd的五层特征图作为ssd的特征输入,这里与已有的ssd的不同之处在于,如图1所示,已有的ssd是采用传统卷积生成检测用特征图,本发明所述的ssd的五层特征图,如图2所示,是采用mobilenet-v2中的bottleneck卷积建立的特征图,并将线性层的通道数提升为输入通道的二分之一,使网络运行时开销更小,检测精度更高。在特征图间建立深度监督残差连接,由于不同特征图的尺寸、通道数不同,此处采用1*1卷积连接,连接合并后的结果先进行通道升维,再输送到后续检测网络。3)采用rmsprop学习策略训练行人检测网络,采用如下配置进行训练:参数初始化方法为msra,设置batchsize大小为48,初始学习率为0.025,每迭代5个epoch,学习率衰减一次,衰减率为0.98,进行240000次迭代后达到最佳效果;4)针对intelhaswellcpu硬件平台,对行人检测网络的前向推理阶段进行优化加速。包括:(1)对行人检测网络进行速度测试,得到网络中调用次数最多,占用运行时间最长的是深度可分离卷积;(2)在现有深度学习框架如caffe中,深度可分离卷积采用传统分组卷积实现,利用for循环遍历各个通道,再进行im2col将卷积运算转化成矩阵相乘交给高性能gemm库完成。整个过程较繁琐,对于运算量不大的深度可分离卷积而言,产生了许多不必要的开销。本发明不需要额外的存储空间,以深度可分离卷积的输入数据的宽、高作为变化最快的维度,对深度可分离卷积进行分块,并对每个分块的运算进行循环展开;(3)本发明目标优化平台为采用intelhaswellcpu,对输出特征的每个点而言,其计算都是独立的,故可以在使用循环展开的同时使用向量化处理,在c++代码中调用intelintrinsic指令,对循环展开后的分块进行向量化处理。在c++代码中调用intelintrinsic指令,每条向量指令一次可处理8个32位浮点数据。最终测试算法性能提升小于8,瓶颈在三级缓存的带宽处。由于处理器具有四个核心,支持4线程,在使用avx向量化和循环展开后,算法性能已经限制在三级缓存上,因此可使用openmp线程级并行,添加openmp的指导语句进行多核并行化,增加对三级缓存的独立请求,以充分发挥三级带宽,测试发现相比单线程代码,获得了1.2倍的性能提升。最终实现计算访存比4:3,并大幅缩短了程序运行时间。表1:骨干网络配置输入大小操作类型通道数重复次数步长320*320*3conv2d3212160*160*32bottleneck1611160*160*16bottleneck242280*80*24bottleneck323240*40*32bottleneck644240*40*64bottleneck963116*16*96bottleneck1602216*16*160bottleneck1281116*16*128bottleneck1281116*16*128bottleneck64128*8*64bottleneck64118*8*64bottleneck6411当前第1页12