本发明涉及图像模式识别的技术领域,尤其是指一种基于神经网络的行人实时检测方法。
背景技术:
行人检测在计算机视觉领域中是指基于摄像头采集到的图像或视频信息对行人的位置进行检测。行人检测具有极其重大的意义,它是车辆辅助驾驶、智能视频监控和人体行为分析等应用中的第一步。因为公共安全,数字娱乐产业等领域对行人的检测需求提升,行人检测技术越来越受到学术界和工业界的重视。行人检测的应用场景十分广泛,如重要通道出入口的人流量统计,大厦门禁系统,安全防范等。
目前实现行人检测方法有很多种,其中一种是基于机器学习的行人检测方法。通过对行人提取特征,再设计分类器进行识别,但受光照不均,行人姿态各异等的影响,提取到的特征鲁棒性较差。另一种是基于通用深度学习方法。通过获取大量图像数据,训练深度神经网络模型,再进行识别,准确率高且鲁棒性强,但是深度学习方法往往计算量较大,需要较长的行人检测时间以及强大的硬件条件,特定应用场景无法满足。以上局限性使得目前的行人检测基于传统图像处理特征提取的识别方法鲁棒性较差,且较难使用深度学习进行实时有效的行人检测。
综合以上论述,发明一种满足实时性和准确度的基于神经网络的行人检测方法具有较高的实际应用价值。
技术实现要素:
本发明的目的在于克服现有技术的缺点与不足,提出了一种基于神经网络的行人检测方法,主要利用数据增强方法扩充数据,再设计满足实时性和准确性的神经网络模型,并使用坐标和置信度的误差平方和损失进行网络训练,使行人检测在满足检测精确度前提下减少大量检测时间。
为实现上述目的,本发明所提供的技术方案为:一种基于神经网络的行人实时检测方法,包括以下步骤:
1)通过图像采集设备收集待进行行人检测的原始图像数据,构建原始训练数据集;
2)对原始训练数据集中的图像,标定对应采集图像的行人位置,构建训练数据集的真实位置输出;
3)根据训练数据集特点,构建神经网络模型;
4)为增大网络训练数据量以及增强方法的适用性,需要使用数据增强方法对原始输入图像进行数据增强;
5)对设计的神经网络模型设定训练参数进行训练,并保存训练的神经网络模型参数;
6)使用图像采集设备获取待进行行人检测的图像数据,然后将待检测行人的图像输入保存好的神经网络模型中,得到待行人检测的图像的行人位置。
在步骤1)中,通过图像采集设备采集不同场景下的行人图像数据,构建原始数据集,再将其中存在模糊、行人角度不符合要求的影响神经网络训练及识别的干扰数据剔除,并对其余数据进行标注,标注内容为行人在图像中的位置。
在步骤3)中,结合识别对象及应用场景的特点构建相匹配的神经网络,包括以下步骤:
3.1)构建特征提取网络
根据实时性和高精度要求构建特征提取网络,特征提取网络主要由多个组合卷积模块组成:
第一层为组合卷积模块a,它由一个卷积层、一个批归一化层、一个h-swish激活层组成;
第二层为组合卷积模块b,它由一个深度卷积层、四个批归一化层、两个relu激活层、三个卷积层组成;
第三层为组合卷积模块c,它由一个深度卷积层、三个批归一化层、两个relu激活层、两个卷积层组成;
第四层为一个组合卷积模块b;
第五层为一个组合卷积模块d,它由一个深度卷积层、五个批归一化层、三个relu激活层、一个h-sigmoid激活层、四个卷积层、一个平均池化层组成;
第六层为一个组合卷积模块e,它由一个深度卷积层、六个批归一化层、三个relu激活层、一个h-sigmoid激活层、五个卷积层、一个平均池化层组成;
第七层为一个组合卷积模块e;
第八层为组合卷积模块f,它由一个深度卷积层、三个批归一化层、两个h-swish激活层、两个卷积层组成;
第九层为组合卷积模块g,它由一个深度卷积层、四个批归一化层、两个h-swish激活层、三个卷积层组成;
第十层为组合卷积模块g;
第十一层为组合卷积模块g;
第十二层为组合卷积模块h,它由一个深度卷积层、六个批归一化层、一个relu激活层、一个h-sigmoid激活层、两个h-swish激活层、五个卷积层、一个平均池化层组成;
第十三层为组合卷积模块h,它由一个深度卷积层、六个批归一化层、一个relu激活层、一个h-sigmoid激活层、两个h-swish激活层、五个卷积层、一个平均池化层组成;
第十四层为组合卷积模块h,它由一个深度卷积层、六个批归一化层、一个relu激活层、一个h-sigmoid激活层、两个h-swish激活层、五个卷积层、一个平均池化层组成;
第十五层为组合卷积模块i,它由一个深度卷积层、五个批归一化层、一个relu激活层、一个h-sigmoid激活层、两个h-swish激活层、四个卷积层、一个平均池化层组成;
第十六层为组合卷积模块h,它由一个深度卷积层、六个批归一化层、一个relu激活层、一个h-sigmoid激活层、两个h-swish激活层、五个卷积层、一个平均池化层组成;
3.2)根据特征提取网络不同层的输出构建预测不同尺寸目标的预测网络,有:
a、大尺寸目标预测网络
输入为特征提取网络第十层输出,大尺寸目标预测网络主要由多种组合卷积模块和卷积层这些神经网络模块组成;
大尺寸目标预测网络结构为:
第一层为组合卷积模块j,它由五个组合卷积模块a组成;
第二层为组合卷积模块k,它由两个卷积层、一个批归一化层、一个leakyrelu激活层组成;
第三层为一个组合卷积模块a;
b、中等尺寸目标预测网络
输入为特征提取网络第九层输出和大尺寸目标预测网络第一层输出,中等尺寸目标预测网络主要由多种组合卷积模块和卷积层这些神经网络模块组成;
中等尺寸目标预测网络结构为:
第一层为一个组合卷积模块a,卷积核为(1,1),步长为1,滤波器数量为255,输出为13×13×255;
第二层为输出融合模块,它由一个组合卷积模块j、一个上采样层和一个张量拼接层组成;
第三层为组合卷积模块k,它由两个卷积层、一个批归一化层、一个leakyrelu激活层组成;
c、小尺寸目标预测网络
输入为特征提取网络第六层输出和中等尺寸目标预测网络第二层输出,小尺寸目标预测网络主要由多种组合卷积模块和卷积层这些神经网络模块组成;
小尺寸目标预测网络结构为:
第一层为一个组合卷积模块a;
第二层为输出融合模块,它由一个组合卷积模块j、一个上采样层和一个张量拼接层组成;
第三层为组合卷积模块k,它由两个卷积层、一个批归一化层、一个leakyrelu激活层组成;
最后将大尺寸目标预测网络、中等尺寸目标预测网络和小尺寸目标预测网络的输出通过非极大值抑制层得到预测目标位置和类别;
3.3)设置损失函数
设置损失函数为中心坐标损失函数、宽高损失函数、置信度损失与类别损失函数的求和均值;
中心坐标损失函数公式如下:
lossxy=markobject×(2-w×h)×losslog(xytrue,xypredict)
其中,lossxy代表中心坐标损失,markobject代表锚点框否存在物体的标志位,w代表锚点框的宽,h代表锚点框的高,losslog代表二值交叉熵损失,xytrue代表真实中心坐标值,xypredict代表预测中心坐标值;
宽高损失函数公式如下:
losswh=0.5×markobject×(2-w×h)×(whtrue-whpredict)2
其中,losswh代表宽高损失,whtrue代表真实宽高值,whpredict代表预测宽高值;
置信度损失函数公式如下:
lossconfidence=markobject×losslog(markobject,cpredict)+(1-markobject)×losslog(markobject,cpredict)×markignore
其中,lossconfidence代表置信度损失,cpredict代表预测框的置信度值,markignore代表iou小于阈值的锚点框的标志位;
类别损失函数公式如下:
losscls=markobject×losslog(clstrue,clspredict)
其中,losscls代表类别损失,clstrue代表真实类别,clspredict代表预测类别;
总损失函数公式如下:
loss=(lossxy+losswh+lossconfidence+losscls)/numf
其中,loss代表总损失,numf代表输入总数的浮点数。
在步骤4)中,训练所设计的神经网络模型,采用数据增强,包括:
a、随机镜像翻转:对输入图像进行随机镜像翻转;
b、随机添加噪声:为输入图像添加连续单一噪声掩模;
c、随机调整对比度:修改色调和饱和度实现对比度转换。
在步骤5)中,将步骤4)的数据增强后的数据输入设计好的神经网络模型中,对设计的模型设定训练参数进行训练,并保存训练的神经网络模型参数,包括以下步骤:
5.1)设置训练参数
为了加快训练速度,一开始设置训练优化器为adam、学习率为0.0001,当迭代次数超过总迭代次数的80%时,设置训练优化器为sgd,学习率为0.00001,以更利于寻找最优点;
5.2)设置训练完成标志
训练完成标志为已达到设定的迭代次数或设置验证集实时检测模型训练情况,验证集准确率满足某个条件;
5.3)保存神经网络模型
训练完成后,将神经网络的结构和权重保存。
在步骤6)中,使用图像采集设备获取待进行行人检测的图像数据,然后将待检测图像数据输入到步骤5)训练好的神经网络模型中,提取出特征图,最后通过对特征图进行非极大值抑制,得到待行人检测的图像中行人的位置。
本发明与现有技术相比,具有如下优点与有益效果:
1、实时性:其中多个组合卷积模块采用了深度卷积层,与普通卷积不同,深度卷积先只考虑卷积的区域,然后再只考虑卷积的通道,实现了卷积通道和卷积区域的的分离,有效减少卷积过程要做的乘法次数,使得神经网络能够在更短时间内处理更多的图片数据,提高了行人检测的速度。
2、多尺度:为了解决神经网络对远近不同,大小各异的行人训练时难收敛,测试时效果不好的问题。本发明对特征提取网络的多个不同尺度的层进行导出,多个尺度共同计算损失函数。因此最后训练得到的模型具有鲁棒性,可以对图片中多种尺寸的行人进行准确的检测。
3、客观性:神经网络是根据已有的行人数据进行特征的自动学习,划分规则均来源于训练集图片,最后学习到的特征不会因主观因素造成干扰。
附图说明
图1为本发明方法的技术流程图。
图2为输出融合模块示意图。
图3a为组合卷积模块a示意图。
图3b为组合卷积模块b示意图。
图3c为组合卷积模块c示意图。
图3d为组合卷积模块d示意图。
图3e为组合卷积模块e示意图。
图3f为组合卷积模块f示意图。
图3g为组合卷积模块g示意图。
图3h为组合卷积模块h示意图。
图3i为组合卷积模块i示意图。
图3j为组合卷积模块j示意图。
图3k为组合卷积模块k示意图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
如图1所示,本实施例所提供的基于神经网络的行人实时检测方法,包括以下步骤:
1)收集待检测场景下拍摄到的含行人图像构建原始数据集。为了增加数据集中行人的多样性,将开源coco数据集中含有行人的图片也添加到原始数据集中。然后将其中存在极度模糊、行人在图片中的像素值不超过10像素的极小图片等影响神经网络训练及检测的干扰数据剔除。
2)使用开源标注工具labelimg对待检测场景下拍摄到的含行人图像的类别及位置进行标注,构建行人检测训练集,标注信息为(c,x,y,w,h)。
其中c为类别,同一标注为0,x为行人标注框的中心在图片中的相对横坐标,y为行人标注框的中心在图片中的相对纵坐标,w为行人标注框在图片中的相对宽度,h为行人标注框在图片中的相对高度。以上相对横坐标,相对纵坐标,相对宽度,相对高度均根据图片原始高度宽度,归一化到0~1。
3)以行人的实时准确检测为目的,根据训练数据集特点,构建合适的神经网络模型,包括以下步骤:
3.1)构建特征提取网络
特征提取网络如下:
输入图像为3×416×416。
第一层为组合卷积模块a,如图3a所示,模型首先通过卷积层,卷积核大小为(3,3)步长为2,卷积核数量为16,输出为16×208×208,然后通过批归一化层和relu激活层,最终输出为16×208×208。
第二层为组合卷积模块b,如图3b所示,模块首先输入组合卷积层,卷积核为(1,1),步长为1,卷积核数量为16,输出为16×208×208,然后通过批归一化层和relu激活层,大小为16×208×208。再经过深度卷积层、批归一化层、relu激活层,其中深度卷积层的卷积核大小为(3,3),步长为1,填充为1,卷积核数量为16,输出为16×208×208,然后通过卷积层、批归一化层,其中卷积层的卷积核大小为(1,1),步长为1,填充为0,卷积核数量为16,输出为16×208×208。然后与组合卷积模块b的输入进行残差连接,设i(x)代表组合卷积模块,ir(x)代表组合卷积残差模块,即为ir(x)=i(x)+x,作为组合卷积模块b的输出,输出为16×208×208。
第三层为组合卷积模块c,如图3c所示,模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为64,输出为64×208×208,然后通过批归一化层和relu激活层,大小为64×208×208。再经过深度卷积层、批归一化层、relu激活层,其中深度卷积层的卷积核大小为(3,3),步长为2,填充为1,卷积核数量为64,输出为16×104×104,然后通过卷积层、批归一化层,其中卷积层的卷积核大小为(1,1),步长为1,填充为0,卷积核数量为24,输出为24×104×104。
第四层为组合卷积模块b,如图3b所示,模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为72,输出为72×104×104,然后通过批归一化层和relu激活层,大小为72×104×104。再经过深度卷积层、批归一化层、relu激活层,其中深度卷积层的卷积核大小为(3,3),步长为1,填充为1,卷积核数量为24,输出为24×104×104,然后通过卷积层、批归一化层,其中卷积层的卷积核大小为(1,1),步长为1,填充为0,输出为24×104×104。然后与组合卷积模块b的输入进行残差连接,设i(x)代表组合卷积模块b的上述最终输出,即24×104×104维度的特征图,ir(x)代表组合卷积残差模块,即为ir(x)=i(x)+x,作为组合卷积模块b的输出,输出维度为24×104×104。
第五层为组合卷积模块d,如图3d所示,模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为72,输出维度为72×104×104,然后通过批归一化层和relu激活层,大小为72×104×104。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(5,5),步长为2,填充为2,卷积核数量为72,输出为72×52×52,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为18,输出为18×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为72,输出为72×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过relu激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为40,即为模块d输出。
第六层为组合卷积模块e,如图3e所示,模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为120,输出为120×52×52,然后通过批归一化层和relu激活层,大小为120×52×52。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(5,5),步长为1,填充为2,卷积核数量为120,输出为120×52×52,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为30,输出为30×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为120,输出为120×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过relu激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为40,输出维度为40×52×52,然后与组合卷积模块d的输入进行残差连接,设i(x)代表组合卷积模块e的上述最终输出,即40×52×52维度的特征图,ir(x)代表组合卷积残差模块,模块e输出即为ir(x)=i(x)+x。
第七层为组合卷积模块e,如图3e所示,模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为120,输出为120×52×52,然后通过批归一化层和relu激活层,大小为120×52×52。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(5,5),步长为1,填充为2,卷积核数量为120,输出为120×52×52,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为30,输出为30×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为120,输出为120×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过relu激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为40,输出维度为40×52×52,然后与组合卷积模块d的输入进行残差连接,设i(x)代表组合卷积模块e的上述最终输出,即40×52×52维度的特征图,ir(x)代表组合卷积残差模块,模块e输出即为ir(x)=i(x)+x。
第八层为组合卷积模块f,如图3f所示,模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为240,输出为240×52×52,然后通过批归一化层和h-swish激活层,大小为240×52×52。再经过深度卷积层、批归一化层、h-swish激活层,其中深度卷积层的卷积核大小为(3,3),步长为2,填充为1,卷积核数量为240,输出为240×26×26,然后通过卷积层、批归一化层,其中卷积层的卷积核大小为(1,1),步长为1,填充为0,卷积核数量为80,输出为80×26×26。
第九层为组合卷积模块g,如图3b所示,模块首先输入组合卷积层,卷积核为(1,1),步长为1,卷积核数量为200,输出为200×26×26,然后通过批归一化层和h-swish激活层,大小为200×26×26。再经过深度卷积层、批归一化层、h-swish激活层,其中深度卷积层的卷积核大小为(3,3),步长为1,填充为1,卷积核数量为200,输出为200×26×26,然后通过卷积层、批归一化层,其中卷积层的卷积核大小为(1,1),步长为1,填充为0,卷积核数量为80,输出为80×26×26。然后与组合卷积模块b的输入进行残差连接,设i(x)代表组合卷积模块,ir(x)代表组合卷积残差模块,即为ir(x)=i(x)+x,作为组合卷积模块b的输出,输出为80×26×26。
第十层为组合卷积模块g,如图3b所示,模块首先输入组合卷积层,卷积核为(1,1),步长为1,卷积核数量为184,输出为184×26×26,然后通过批归一化层和h-swish激活层,大小为184×26×26。再经过深度卷积层、批归一化层、h-swish激活层,其中深度卷积层的卷积核大小为(3,3),步长为1,填充为1,卷积核数量为184,输出为184×26×26,然后通过卷积层、批归一化层,其中卷积层的卷积核大小为(1,1),步长为1,填充为0,卷积核数量为80,输出为80×26×26。然后与组合卷积模块b的输入进行残差连接,设i(x)代表组合卷积模块,ir(x)代表组合卷积残差模块,即为ir(x)=i(x)+x,作为组合卷积模块b的输出,输出为80×26×26。
第十一层为组合卷积模块g,如图3b所示,模块首先输入组合卷积层,卷积核为(1,1),步长为1,卷积核数量为184,输出为184×26×26,然后通过批归一化层和h-swish激活层,大小为184×26×26。再经过深度卷积层、批归一化层、h-swish激活层,其中深度卷积层的卷积核大小为(3,3),步长为1,填充为1,卷积核数量为184,输出为184×26×26,然后通过卷积层、批归一化层,其中卷积层的卷积核大小为(1,1),步长为1,填充为0,卷积核数量为80,输出为80×26×26。然后与组合卷积模块b的输入进行残差连接,设i(x)代表组合卷积模块,ir(x)代表组合卷积残差模块,即为ir(x)=i(x)+x,作为组合卷积模块b的输出,输出为80×26×26。
第十二层为组合卷积模块h,如图3h所示。模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为480,输出为480×26×26,然后通过批归一化层和h-swish激活层,大小为480×26×26。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(3,3),步长为1,填充为1,卷积核数量为480,输出为480×26×26,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为120,输出为120×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为480,输出为480×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过h-swish激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为112,输出维度为112×26×26,然后与组合卷积模块d的输入进行残差连接,设i(×)代表组合卷积模块e的上述最终输出,即112×26×26维度的特征图,ir(x)代表组合卷积残差模块,模块e输出即为ir(x)=i(x)+x。
第十三层为组合卷积模块h,如图3h所示。模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为672,输出为672×26×26,然后通过批归一化层和h-swish激活层,大小为672×26×26。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(3,3),步长为1,填充为1,卷积核数量为672,输出为672×26×26,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为168,输出为168×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为672,输出为672×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过h-swish激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为112,输出维度为112×26×26,然后与组合卷积模块d的输入进行残差连接,设i(x)代表组合卷积模块e的上述最终输出,即112×26×26维度的特征图,ir(x)代表组合卷积残差模块,模块e输出即为ir(x)=i(x)+x。
第十四层为组合卷积模块h,如图3h所示。模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为672,输出为672×26×26,然后通过批归一化层和h-swish激活层,大小为672×26×26。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(5,5),步长为1,填充为1,卷积核数量为672,输出为672×26×26,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为168,输出为168×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为672,输出为672×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过h-swish激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为160,输出维度为160×26×26,然后与组合卷积模块d的输入进行残差连接,设i(x)代表组合卷积模块e的上述最终输出,即160×26×26维度的特征图,ir(x)代表组合卷积残差模块,模块e输出即为ir(x)=i(x)+x。
第十五层为组合卷积模块i,如图3i所示。模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为672,输出维度为672×26×26,然后通过批归一化层和h-swish激活层,大小为672×26×26。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(5,5),步长为2,填充为2,卷积核数量为672,输出为672×13×13,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为168,输出为168×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为672,输出为672×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过h-swish激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为160,即为模块d输出。
第十六层为组合卷积模块h,如图3h所示。模块首先输入组合卷积层,卷积核大小为(1,1),步长为1,卷积核数量为960,输出为960×13×13,然后通过批归一化层和h-swish激活层,大小为960×13×13。再经过深度卷积层、批归一化层,其中深度卷积层的卷积核大小为(5,5),步长为1,填充为1,卷积核数量为960,输出为960×13×13,记该输出为m,将输出m通过全局平均池化层,卷积层,批归一化层,relu函数激活层,其中卷积核大小为(1,1),步长为1,填充为0,通道数为320,输出为320×1×1,再经过卷积层,批归一化层,h-sigmoid激活函数层,其中卷积层大小为(1,1),步长为1,填充为0,通道数为960,输出为960×1×1,记作α。设按通道相乘为im(x,α)=αx,将im(m,α)依次通过h-swish激活层,卷积层、批归一化层,其中卷积层大小为(1,1)步长为1,填充为0,通道数为160,输出维度为160×13×13,然后与组合卷积模块d的输入进行残差连接,设i(x)代表组合卷积模块e的上述最终输出,即160×13×13维度的特征图,ir(x)代表组合卷积残差模块,模块e输出即为ir(x)=i(x)+x。
3.2)构建预测网络
根据特征提取网络不同层的输出构建输出预测不同尺寸目标的预测网络。
a、大尺寸目标预测网络
输入为特征提取网络第十六层输出,大尺寸目标预测网络主要由多种组合卷积模块和卷积层等神经网络模块组成。
输入图像为160×13×13。
大尺寸目标预测网络结构如下:
第一层为组合卷积模块j,如图3j所示。模块依次经过五个组合卷积模块a,如图3a所示。在第一个组合卷积模块b中,输入首先经过深度卷积、批归一化层和激活层,卷积核为(1,1),步长为1,使用填充使得输入输出大小一致,输出为112×13×13。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为224,使用填充使得输入输出大小一致,输出为224×13×13。在第二个组合卷积模块b中,输入首先经过深度卷积、批归一化层和激活层,卷积核为(3,3),步长为1,使用填充使得输入输出大小一致,输出为112×13×13。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为224,使用填充使得输入输出大小一致,输出为224×13×13。之后交替输入两种不同参数的组合卷积模块b后,输出为112×13×13,该输出作为大尺寸目标预测网络的第二层的输入以及中尺寸目标预测网络的输入。
第二层为组合卷积模块k,如图3k所示。模块首先经过卷积层、批归一化层和激活层,卷积核为(3,3),步长为1,使用填充使得输入输出大小一致,输出为224×13×13。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为255,使用填充使得输入输出大小一致,输出为255×13×13。
b、中尺寸目标预测网络
中尺寸目标预测网络结构如下:
第一层为组合卷积模块a,如图3a所示。模块通过依次卷积层,批归一化层,relu激活层。其中卷积核的大小为(1,1),步长为1,填充为0,卷积核数目为112,输出为112×13×13。
第二层为输出融合模块,如图2所示,它由一个组合卷积模块j、一个上采样层和一个张量拼接层组成。模块首先经过上采样层,采样因子为2,输出为112×26×26。最后该输出和特征提取网络第十三层输出112×26×26经过张量拼接层,输出为224×26×26。然后通过组合卷积模块j,如图3j所示。模块依次经过五个组合卷积模块a,如图3a所示。在第一个组合卷积模块b中,输入首先经过深度卷积、批归一化层和激活层,卷积核为(1,1),步长为1,使用填充使得输入输出大小一致,输出为40×26×26。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为224,使用填充使得输入输出大小一致,输出为80×26×26。在第二个组合卷积模块b中,输入首先经过深度卷积、批归一化层和激活层,卷积核为(3,3),步长为1,使用填充使得输入输出大小一致,输出为40×26×26。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为224,使用填充使得输入输出大小一致,输出为80×26×26。之后交替输入两种不同参数的组合卷积模块b后,输出为40×26×26,该输出作为中尺寸目标预测网络的第三层的输入以及小尺寸目标预测网络的输入。
第三层为组合卷积模块k,如图3k所示。模块首先经过卷积层、批归一化层和激活层,卷积核为(3,3),步长为1,使用填充使得输入输出大小一致,输出为80×26×26。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为255,使用填充使得输入输出大小一致,输出为255×26×26。
c、小尺寸目标预测网络
小尺寸目标预测网络结构如下:
第一层为组合卷积模块a,如图3a所示。模块通过依次卷积层,批归一化层,relu激活层。其中卷积核的大小为(1,1),步长为1,填充为0,卷积核数目为40,输出为40×26×26。
第二层为输出融合模块,如图2所示,它由一个组合卷积模块j、一个上采样层和一个张量拼接层组成。模块首先经过上采样层,采样因子为2,输出为40×52×52。最后该输出和特征提取网络第七层输出40×52×52经过张量拼接层,输出为80×52×52。然后通过组合卷积模块j,如图3j所示。模块依次经过五个组合卷积模块a,如图3a所示。在第一个组合卷积模块b中,输入首先经过深度卷积、批归一化层和激活层,卷积核为(1,1),步长为1,使用填充使得输入输出大小一致,输出为40×52×52。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为224,使用填充使得输入输出大小一致,输出为80×52×52。在第二个组合卷积模块b中,输入首先经过深度卷积、批归一化层和激活层,卷积核为(3,3),步长为1,使用填充使得输入输出大小一致,输出为40×52×52。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为224,使用填充使得输入输出大小一致,输出为80×52×52。之后交替输入两种不同参数的组合卷积模块b后,输出为40×52×52,该输出作为小尺寸目标预测网络的第三层的输入。
第三层为组合卷积模块k,如图3k所示。模块首先经过卷积层、批归一化层和激活层,卷积核为(3,3),步长为1,使用填充使得输入输出大小一致,输出为80×52×52。再经过卷积、批归一化层和激活层,卷积核为(1,1),步长为1,滤波器数量为255,使用填充使得输入输出大小一致,输出为255×52×52。
最后将大尺寸目标预测网络的输出255×13×13、中等尺寸目标预测网络的输出255×26×26和小尺寸目标预测网络的输出255×52×52通过非极大值抑制层得到预测目标位置和类别。
3.3)设置损失函数
设置损失函数为中心坐标损失函数、宽高损失函数、置信度损失与类别损失函数的求和均值。
中心坐标损失函数公式如下:
lossxy=markobject×(2-w×h)×losslog(xytrue,xypredict)
其中lossxy代表中心坐标损失,markobject代表锚点框否存在物体的标志位,w代表锚点框的宽,h代表锚点框的高,losslog代表二值交叉熵损失,xytrue代表真实中心坐标值,xypredict代表预测中心坐标值。
宽高损失函数公式如下:
losswh=0.5×markobject×(2-w×h)×(whtrue-whpredict)2
其中losswh代表宽高损失,whtrue代表真实宽高值,whpredict代表预测宽高值。
置信度损失函数公式如下:
lossconfidence=markobject×losslog(markobject,cpredict)+(1-markobject)×losslog(markobject,cpredict)×markignore
其中lossconfidence代表置信度损失,cpredict代表预测框的置信度值,markignore代表iou小于阈值的锚点框的标志位。
类别损失函数公式如下:
losscls=markobject×losslog(clstrue,clspredict)
其中losscls代表类别损失,clstrue代表真实类别,clspredict代表预测类别。
总损失函数公式如下:
loss=(lossxy+losswh+lossconfidence+losscls)/numf
其中loss代表总损失,numf代表输入总数的浮点数。
4)为增大网络训练数据量以及增强方法的适用性,需要使用数据增强方法对原始输入图像进行数据增强,包括:
a、随机镜像翻转
对输入图像进行随机镜像翻转。
b、随机添加噪声
为输入图像添加连续单一噪声掩模。
c、随机调整对比度
修改色调和饱和度实现对比度转换。
5)对设计的神经网络模型设定训练参数进行训练,并保存训练的神经网络模型参数;包括以下步骤:
5.1)设置训练参数
为了加快训练速度,一开始设置训练优化器为adam、学习率为0.0001,当迭代次数超过总迭代次数的80%时,设置训练优化器为sgd,学习率为0.00001,以更利于寻找最优点。迭代总次数为500、批次大小为10。对行人的标注矩形框的宽和高进行kmeans聚类,生成初始先验框的9组宽和高为(116,90)、(156,198)、(373,326)、(30,61)、(62,45)、(59,119)、(10,13)、(16,30)、(33,23)。
5.2)设置训练完成标志
训练完成标志为已达到设定的迭代次数或设置验证集实时检测模型训练情况,验证集准确率满足某个条件。
5.3)保存神经网络模型
训练完成后,将神经网络的结构和权重保存。
6)使用图像采集设备获取待进行行人检测的图像数据,然后将待检测图像数据输入到步骤5)训练好的神经网络中,提取出特征图,对特征图进行非极大值抑制,得到待行人检测的图像中行人的位置。其中非极大值抑制的置信度选为0.5,iou为0.7。
以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。