本发明属于计算机视觉技术领域,具体为一种基于深度学习的异常人群检测方法。
背景技术:
异常人群人脸检测方法主要包括人脸检测和目标跟踪两部分。人脸虽然是我们最熟悉的生理特征之一,但却有着相当复杂的细节变化,不同的人脸其外貌、肤色、表情等都不同,难以用统一的模型来加以描述。不仅如此,人所在的场景中往往背景较为复杂,人脸属于非刚体模式,且人脸运动的非线性等等都是人脸检测与跟踪要面临的巨大挑战。实际应用中,人脸检测与跟踪面临的挑战主要表现在人脸姿势不固定;外界复杂的环境的影响;检测与跟踪的实时性。
目前常规的人脸检测算法如基于模板的方法,该方法根据人脸面部特征,也就是各个器官的相对位置,定义一个标准的人脸模板,在检测人脸时,计算待检区域与人脸模板的相似度,判断其是否为人脸。这类方法实现简单,但鲁棒性不强,且准确率不高。目前常规的目标跟踪算法如基于运动信息的方法,该方法利用当前连续几帧之间的像素的差值来进行动态像素的判断,再结合运动像素的特征来检测人脸等运动目标。这类方法受背景的影响较大,容易受到外界光照和噪声的干扰。
技术实现要素:
本发明的目的在于提提出了一种基于深度学习的异常人群检测方法。
实现本发明目的的技术方案为:一种基于深度学习的异常人群检测方法,包括以下步骤:
s1:使用标准数据集离线训练多任务卷积神经网络得到人脸检测分类器;
s2:读取视频图像,采用人脸检测分类器检测视频帧中的人脸目标;
s3:利用kcf跟踪算法对检测出来的人脸目标进行跟踪;
s4:使用肤色校验,去除离开监控区域的跟踪目标,并添加新进入监控区域的跟踪目标,实时显示人脸目标的跟踪信息。
优选地,所述多任务卷积神经网络包括级联的pnet、rnet、onet,
所述pnet包括依次连接的第一卷积层、第一池化层、第二卷积层、第三卷积层以及分别与第三卷积层连接的3个不同的卷积核,其中,所述第一卷积层由10个3×3×3的卷积核组成,所述第二卷积层由16个3×3×10的卷积核组成,所述第三卷积层由32个3×3×16的卷积核组成,3个不同的卷积核的作用分别为:
使用2个1×1×32的卷积核进行卷积操作,生成表示人脸分类任务结果的1×1×2的特征图;
使用4个1×1×32的卷积核进行卷积操作,生成表示人脸边框回归任务结果的1×1×4的特征图;
使用10个1×1×32的卷积核进行卷积操作,生成表示人脸关键点标定任务结果的1×1×10的特征图;
所述rnet包括依次连接的第四卷积层、第二池化层、第五卷积层、第三池化层、第六卷积层、第一全连接层以及与第一全连接层连接的2个神经元输出,作为人脸分类任务结果,分别表示是人脸和不是人脸的概率,与第一全连接层连接的4个神经元输出,作为人脸边框回归任务结果,表示人脸边框坐标;与第一全连接层连接的10个神经元输出,作为关键点标定任务的结果,表示5个人脸关键点的坐标;其中,所述第四卷积层由28个3×3×3卷积核组成,所述第五卷积层由48个3×3×28卷积核组成,第六卷积层由64个2×2×28卷积核组成;
所述onet包括依次连接的第七卷积层、第四池化层、第八卷积层、第五池化层、第九卷积层、第十卷积层、第十一卷积层、第二全连接层以及与第二全连接层连接的2个神经元输出,作为人脸分类任务结果,分别表示是人脸和不是人脸的概率;与第二全连接层连接的4个神经元输出,作为人脸边框回归任务结果,表示人脸边框坐标;与第二全连接层连接的10个神经元输出,作为关键点标定任务的结果,表示5个人脸关键点的坐标。
优选地,训练多任务卷积神经网络得到人脸检测分类器的具体过程为:
采用以下方法分别训练pnet、rnet、onet:
设置学习率及训练样本批次大小,将训练样本输入到多任务卷积神经网络中,计算损失函数,使用梯度下降法更新网络参数,当训练样本的迭代次数超过设定值,训练完成。
优选地,所述损失函数为:
式中,n代表训练样本的个数;ldet表示人脸分类任务的损失函数,lbox表示人脸边框回归任务的损失函数,llandmark表示人脸关键点标定任务的损失函数,αj为lj系数,βij取值为0或1。
优选地,依次在widerface数据集中的每一张图片上,随机生成多个候选框,根据随机候选框与真实人脸框的交并比(iou),截取60张iou>0.65的图片作为pnet正样本,截取20张0.4<iou<0.65为的图片作为pnet中间样本,截取20张iou<0.3为的图片作为pnet负样本;在celeba数据集上,截取40张包含人脸标定点且iou>0.65的图片作为pnet特征点样本,将所有样本的大小调整到12×12作为pnet训练样本。
优选地,将widerface数据集中所有图片输入到训练好的pnet中,得到人脸候选框,截取并保存该候选框中的图片作为rnet的训练样本,根据候选框与真实人脸框的iou,将iou>0.65的图片作为正样本,将0.4<iou<0.65的图片作为中间样本,将iou<0.3的图片作为负样本,在celeba数据集上生成特征点样本。
优选地,将widerface数据集中所有图片输入到训练好的rnet中,得到人脸候选框,截取并保存该候选框中的图片作为onet的训练样本,根据候选框与真实人脸框的iou,采用和rnet训练样本同样的分类方式,得到正样本、负样本和中间样本,在celeba数据集上,生成特征点样本。
优选地,利用kcf跟踪算法对检测出来的人脸目标进行跟踪的具体步骤为:
若当前为第一帧图像,使用第一帧图像初始化kcf算法模型权重向量系数α,具体为:
将人脸目标框放大2.5倍,采用向量表示候选框内的图像为x=[x1,x2,...,xn-1,xn],将向量循环移位得到循环矩阵x,即:
将循环矩阵x作为总体样本输入到kcf模型中;
取x的第一行样本作为y;
计算参数α,具体公式为:
其中,kxx是使用上一帧样本x与自身的高斯核相关矩阵的第一行;y表示跟踪目标的向量表示;λ为正则化项;
若当前不是第一帧图像,进行人脸目标跟踪和模型参数更新,具体为:
将人脸目标框放大2.5倍,采用向量表示候选框内的图像,将向量循环移位得到循环矩阵z,即样本;
计算当前样本z与上一帧样本的高斯核相关矩阵kxz;
将样本z输入到kcf模型中,取最高的响应输出作为当前跟踪目标位置;
更新kcf模型参数,具体为:
将当前样本z作为训练样本,计算最新的参数α;
使用线性内插法更新α,即
式中,t是当前帧的序号,η是学习率。
优选地,所述kcf算法模型为:
式中,z表示当前帧样本,x表示上一帧样本;kxz表示当前帧样本z与上一帧样本x的高斯核相关矩阵的第一行;α为权重向量系数。
本发明与现有技术相比,其显著优点在于:(1)本发明使用基于深度学习的多任务级联卷积神经网络训练人脸检测分类器,提高了人脸检测的准确率;(2)本发明使用kcf算法对人脸目标进行多尺度跟踪,降低了跟踪目标丢失的概率。
附图说明
图1是pnet网络结构图。
图2是rnet网络结构图。
图3是onet网络结构图。
图4是本发明的流程图。
图5是实施例获得的效果图。
具体实施方式
一种基于深度学习的异常人群检测方法,包含以下步骤:
s1:使用标准数据集离线训练多任务卷积神经网络得到人脸检测分类器;其中,所述多任务卷积神经网络由pnet、rnet、onet三部分级联组成,分别具体为:
第一部分为pnet,输入为12×12×3(高为12像素,宽为12像素,通道数为3)的图片。如图1所示,pnet包括由10个3×3×3的卷积核组成的第一卷积层、2×2(高为2像素,宽为2像素)“最大池化”的池化层、由16个3×3×10的卷积核组成的第二卷积层、由32个3×3×16的卷积核组成的第三卷积层,输入图片经过上述结构,生成一个1×1×32的特征图。在该特征图上,使用2个1×1×32的卷积核进行卷积操作,生成表示人脸分类任务结果的1×1×2的特征图;使用4个1×1×32的卷积核进行卷积操作,生成表示人脸边框回归任务结果的1×1×4的特征图;使用10个1×1×32的卷积核进行卷积操作,生成表示人脸关键点标定任务结果的1×1×10的特征图。
第二部分为rnet,输入为pnet输出候选框内的图片,并调整大小为24×24。内部结构如图2所示,包括由28个3×3×3卷积核组成的第四卷积层、3×3“最大池化”的第二池化层、由48个3×3×28卷积核组成的第五卷积层、2×2“最大池化”的第三池化层、由64个2×2×28卷积核组成的第六卷积层、由128个神经元组成的第一全连接层。共享第一全连接层,连接2个神经元输出,作为人脸分类任务结果,分别表示是人脸和不是人脸的概率;连接4个神经元输出,作为人脸边框回归任务结果,表示人脸边框坐标;连接10个神经元输出,作为关键点标定任务的结果,表示5个人脸关键点的坐标。
第三部分为onet,输入为rnet输出候选框内的图片,并调整大小为48×48。内部结构如图3所示,由32个3×3×3卷积核组成的第七卷积层、3×3“最大池化”的第四池化层、由64个3×3×32卷积核组成的第八卷积层、3×3“最大池化”的第五池化层、由64个3×3×64卷积核组成的第九卷积层、2×2“最大池化”的第六池化层、由64个3×3×64卷积核组成的第十卷积层、由128个3×3×64卷积核组成的第十一卷积层、由256个神经元组成的第二全连接层。共享第二全连接层,连接2个神经元输出,作为人脸分类任务结果,分别表示是人脸和不是人脸的概率;连接4个神经元输出,作为人脸边框回归任务结果,表示人脸边框坐标;连接10个神经元输出,作为关键点标定任务的结果,表示5个人脸关键点的坐标。
对多任务卷积神经网络(mtcnn)进行训练得到人脸检测分类器的具体过程为:
分别训练pnet、rnet、onet:
s11:训练pnet:
s111:生成pnet训练样本。pnet训练样本来源于widerface数据集和celeba数据集。在widerface数据集中每一张图片上,依随机生成多个候选框,根据随机候选框与真实人脸框的交并比iou,截取60张iou>0.65的图片作为正样本,截取20张0.4<iou<0.65为的图片作为中间样本,截取20张iou<0.3为的图片作为负样本;在celeba数据集上,截取40张包含人脸标定点且iou>0.65的图片作为特征点样本。将所有样本的大小调整到12×12。
s112:pnet网络参数训练。pnet网络训练的损失函数为:
式中:n代表训练样本的个数;ldet表示人脸分类任务的损失函数,lbox表示人脸边框回归任务的损失函数,llandmark表示人脸关键点标定任务的损失函数,αj为lj系数,在pnet中αdet,αbox,αlandmark取值分别为1,0.5,0.5;βij取值为0或1,表示第i个样本是否参与任务j的训练,正样本只用于人脸分类和边界框回归任务,负样本只用于人脸分类任务,特征点样本只用于人脸关键点标记任务,其中,ldet、lbox、llandmark分别具体为:
设置学习率为0.001,训练样本批大小为384,将训练样本输入到pnet中,计算损失函数,使用梯度下降法更新pnet网络参数。当训练样本的迭代次数超过22次时,终止训练。
s12:训练rnet:
s121:生成rnet训练样本。将widerface数据集中所有图片输入到训练好的pnet中,得到人脸候选框,截取并保存该候选框中的图片作为本网络的训练样本。根据候选框与真实人脸框的iou,将iou>0.65的图片作为正样本,将0.4<iou<0.65的图片作为中间样本,将iou<0.3的图片作为负样本。在celeba数据集上,采用和pnet相同的操作,生成特征点样本。
s122:rnet网络参数训练。rnet使用和pnet网络相同的损失函数和训练方法,将s121中生成的训练样本输入rnet中,进行训练。
s13:训练onet。
s131:生成onet训练样本。将widerface数据集中所有图片输入到rnet中,得到人脸候选框,截取并保存该候选框中的图片作为本网络的训练样本。根据候选框与真实人脸框的iou,采用和rnet训练样本同样的分类方式,得到正样本、负样本和中间样本。在celeba数据集上,采用和pnet相同的操作,生成特征点样本。
s132:onet网络参数训练。修改pnet网络损失函数的参数αdet,αbox,αlandmark取值分别为1,1,0.5,使用和pnet一样的训练方法,将s131中生成的训练样本输入onet中,进行训练。
步骤s2:读取视频图像,采用人脸检测分类器检测视频图像中的人脸目标。具体如下:
s21:生成图像金字塔。从视频中读取一帧图像,设置缩放因子为0.707,最小尺寸大小为20×20像素,对图像进行缩放,生成图像金字塔。
s22:pnet检测。使用12×12大小的检测窗口,在图像金字塔中的每一张图片上滑动。将检测窗口中的图像信息输入到pnet中,若pnet判断检测窗口中图像为人脸,则将检测窗口映射到原图中形成候选人脸框。重复检测窗口滑动和pnet检测过程,直到图像金字塔中的所有图像信息均被输入到pnet中。最后,采用极大值抑制(nms)合并重叠的候选框。
s23:rnet检测。在原图上,截取所有候选框中的图像,逐个调整大小为24×24,输入到rnet中。若rnet判断该图像为人脸,则将该候选框作为新的候选框。最后,采用nms操作合并重叠的候选框。
s24:onet检测。在原图上,截取所有候选框中的图像,逐个调整大小为48×48,输入到onet中。若onet判断图像为人脸,则将该候选框作为新的候选框。采用极大值抑制(nms)合并重叠的候选框。最后,输出所有候选框作为人脸目标区域。
s3:使用kcf算法对人脸目标进行跟踪,具体如下:
所述kcf算法模型用如下公式表示:
式中:z表示当前帧样本,x表示上一帧样本;kxz表示当前帧样本z与上一帧样本x的高斯核相关矩阵的第一行;α为权重向量系数,可以由如下公式求解:
其中,kxx是使用上一帧样本x与自身的高斯核相关矩阵的第一行;y表示跟踪目标的向量表示;λ为正则化项,在本发明中,取值为λ=1e-4。
s31:若当前为第一帧图像,使用该图像初始化参数α。具体做法如下:
s311:生成样本。首先,将人脸目标框放大2.5倍,采用向量表示候选框内的图像为x=[x1,x2,...,xn-1,xn]。其次,将x循环移位可以得到循环矩阵x,即:
最后,将x作为总体样本输入到kcf模型中。
s312:计算参数α的初始值。首先,取x的第一行样本作为y;其次,计算x与自身的高斯核相关矩阵
s32:若当前不是第一帧图像,进行人脸目标跟踪和模型参数更新。具体做法如下:
s321:人脸目标跟踪。首先,使用s311相同的方法,生成样本z。其次,计算当前样本z与上一帧样本x的高斯核相关矩阵kxz。最后,样本z输入到kcf模型中,取最高的响应输出作为当前跟踪目标位置。
s322:更新kcf模型参数。将当前样本z作为训练样本,使用和s412相同的方法,计算最新的参数α。最后,使用线性内插法更新α,即
式中:t是当前帧的序号,η是学习率,本发明中取值为0.075。
s4:使用肤色校验,去除离开监控区域的跟踪目标。具体如下:
s41:把视频图像由rgb空间转换到ycrcb空间。
s42:对ycrcb空间的视频图像进行二值化。设定肤色区间为间cr≤175,100≤cb≤120,将肤色区间内的像素点灰度值设置为255,肤色区间以外的像素点灰度值设置为0。
s43:计算每一个跟踪目标区域内属于人脸的像素点占本区域总像素点的百分比,将百分比大于10%的目标区域作为人脸,否则就为目标已离开监控区域,停止该目标跟踪。
添加新进入监控区域的跟踪目标。将人脸目标与跟踪目标进行对比:若人脸目标与跟踪目标的覆盖率大于20%,则判定跟踪目标人脸目标重合,继续对这个人脸目标进行跟踪;若人脸目标和跟踪目标的覆盖率不大于20%,则判定该目标为一个新的目标,将其作为新的跟踪目标进行跟踪。
实时显示人脸目标的跟踪信息。
获取下一帧图像,跳转到s2继续执行。
如图5所示,本发明能够提高人脸检测和跟踪的精度,对于复杂场景下的异常人群人脸检测及跟踪有较好的实现效果。
1.一种基于深度学习的异常人群检测方法,其特征在于,包括以下步骤:
s1:使用标准数据集离线训练多任务卷积神经网络得到人脸检测分类器;
s2:读取视频图像,采用人脸检测分类器检测视频帧中的人脸目标;
s3:利用kcf跟踪算法对检测出来的人脸目标进行跟踪;
s4:使用肤色校验,去除离开监控区域的跟踪目标,并添加新进入监控区域的跟踪目标,实时显示人脸目标的跟踪信息。
2.根据权利要求1所述的基于深度学习的异常人群检测方法,其特征在于,所述多任务卷积神经网络包括级联的pnet、rnet、onet,
所述pnet包括依次连接的第一卷积层、第一池化层、第二卷积层、第三卷积层以及分别与第三卷积层连接的3个不同的卷积核,其中,所述第一卷积层由10个3×3×3的卷积核组成,所述第二卷积层由16个3×3×10的卷积核组成,所述第三卷积层由32个3×3×16的卷积核组成,3个不同的卷积核的作用分别为:
使用2个1×1×32的卷积核进行卷积操作,生成表示人脸分类任务结果的1×1×2的特征图;
使用4个1×1×32的卷积核进行卷积操作,生成表示人脸边框回归任务结果的1×1×4的特征图;
使用10个1×1×32的卷积核进行卷积操作,生成表示人脸关键点标定任务结果的1×1×10的特征图;
所述rnet包括依次连接的第四卷积层、第二池化层、第五卷积层、第三池化层、第六卷积层、第一全连接层以及与第一全连接层连接的2个神经元输出,作为人脸分类任务结果,分别表示是人脸和不是人脸的概率,与第一全连接层连接的4个神经元输出,作为人脸边框回归任务结果,表示人脸边框坐标;与第一全连接层连接的10个神经元输出,作为关键点标定任务的结果,表示5个人脸关键点的坐标;其中,所述第四卷积层由28个3×3×3卷积核组成,所述第五卷积层由48个3×3×28卷积核组成,第六卷积层由64个2×2×28卷积核组成;
所述onet包括依次连接的第七卷积层、第四池化层、第八卷积层、第五池化层、第九卷积层、第十卷积层、第十一卷积层、第二全连接层以及与第二全连接层连接的2个神经元输出,作为人脸分类任务结果,分别表示是人脸和不是人脸的概率;与第二全连接层连接的4个神经元输出,作为人脸边框回归任务结果,表示人脸边框坐标;与第二全连接层连接的10个神经元输出,作为关键点标定任务的结果,表示5个人脸关键点的坐标。
3.根据权利要求1所述的基于深度学习的异常人群检测方法,其特征在于,训练多任务卷积神经网络得到人脸检测分类器的具体过程为:
采用以下方法分别训练pnet、rnet、onet:
设置学习率及训练样本批次大小,将训练样本输入到多任务卷积神经网络中,计算损失函数,使用梯度下降法更新网络参数,当训练样本的迭代次数超过设定值,训练完成。
4.根据权利要求3所述的基于深度学习的异常人群检测方法,其特征在于,所述损失函数为:
式中,n代表训练样本的个数;ldet表示人脸分类任务的损失函数,lbox表示人脸边框回归任务的损失函数,llandmark表示人脸关键点标定任务的损失函数,αj为lj系数,
5.根据权利要求3所述的基于深度学习的异常人群检测方法,其特征在于,依次在widerface数据集中的每一张图片上,随机生成多个候选框,根据随机候选框与真实人脸框的交并比iou,截取60张iou>0.65的图片作为pnet正样本,截取20张0.4<iou<0.65为的图片作为pnet中间样本,截取20张iou<0.3为的图片作为pnet负样本;在celeba数据集上,截取40张包含人脸标定点且iou>0.65的图片作为pnet特征点样本,将所有样本的大小调整到12×12作为pnet训练样本。
6.根据权利要求3所述的基于深度学习的异常人群检测方法,其特征在于,将widerface数据集中所有图片输入到训练好的pnet中,得到人脸候选框,截取并保存该候选框中的图片作为rnet的训练样本,根据候选框与真实人脸框的iou,将iou>0.65的图片作为正样本,将0.4<iou<0.65的图片作为中间样本,将iou<0.3的图片作为负样本,在celeba数据集上生成特征点样本。
7.根据权利要求6所述的基于深度学习的异常人群检测方法,其特征在于,将widerface数据集中所有图片输入到训练好的rnet中,得到人脸候选框,截取并保存该候选框中的图片作为onet的训练样本,根据候选框与真实人脸框的iou,采用和rnet训练样本同样的分类方式,得到正样本、负样本和中间样本,在celeba数据集上,生成特征点样本。
8.根据权利要求1所述的基于深度学习的异常人群检测方法,其特征在于,利用kcf跟踪算法对检测出来的人脸目标进行跟踪的具体步骤为:
若当前为第一帧图像,使用第一帧图像初始化kcf算法模型权重向量系数α,具体为:
将人脸目标框放大2.5倍,采用向量表示候选框内的图像为x=[x1,x2,...,xn-1,xn],将向量循环移位得到循环矩阵x,即:
将循环矩阵x作为总体样本输入到kcf模型中;
取x的第一行样本作为y;
计算参数α,具体公式为:
其中,kxx是使用上一帧样本x与自身的高斯核相关矩阵的第一行;y表示跟踪目标的向量表示;λ为正则化项;
若当前不是第一帧图像,进行人脸目标跟踪和模型参数更新,具体为:
将人脸目标框放大2.5倍,采用向量表示候选框内的图像,将向量循环移位得到循环矩阵z,即样本;
计算当前样本z与上一帧样本的高斯核相关矩阵kxz;
将样本z输入到kcf模型中,取最高的响应输出作为当前跟踪目标位置;
更新kcf模型参数,具体为:
将当前样本z作为训练样本,计算最新的参数α;
使用线性内插法更新α,即
式中,t是当前帧的序号,η是学习率。
9.根据权利要求8所述的基于深度学习的异常人群检测方法,其特征在于,所述kcf算法模型为:
式中,z表示当前帧样本,x表示上一帧样本;kxz表示当前帧样本z与上一帧样本x的高斯核相关矩阵的第一行;α为权重向量系数。
技术总结