一种适用于鱼眼相机俯视拍摄的行人身高估计方法
技术领域
本发明主要涉及视频图像中的行人身高估计领域,具体而言,是一种适用于鱼眼相机俯视拍摄的行人身高估计方法。
背景技术
近年来,随着信息产业的飞速发展和计算机性能的不断提高,利用计算机来检测视频图像中的行人信息已经是智能视频监控系统发展的主要任务。行人身高信息是监控系统需要获取的重要信息之一。目前虽然有一些针对普通相机的行人身高估计方法。然而,随着监控范围的不断扩大,普通摄像机已经不能满足使用需求,由于鱼眼相机的视角范围比较大,可以达到180°甚至超过180°,其监控范围远大于普通相机,使用鱼眼相机进行对象检测可以减少相机的数目,节约监控成本,因此在安防监控领域鱼眼相机的使用越来越广泛。
但是,鱼眼相机所拍摄图片存在较大的畸变,使得行人身高估计变得比较困难;另外为了实现大范围的监控我们将鱼眼相机安装在监控区域顶部的中心位置,俯视拍摄也极大增加了行人身高估计的难度。因此,鱼眼相机俯视拍摄场景下的行人身高估计是一项极具挑战性的任务,目前还没有方法能实现鱼眼相机俯视场景下,同时对多个行人进行身高估计。
发明内容
为了解决以上技术问题,本发明提出了一种适用于鱼眼相机俯视拍摄场景的行人身高估计方法。该方法将语义分割神经网络和鱼眼相机数学模型相结合,实现了鱼眼相机俯视拍摄场景下,同时对多个行人进行身高估计。
本发明的目的至少通过如下技术方案之一实现。
一种适用于鱼眼相机俯视拍摄的行人身高估计方法,包括以下步骤:
S1、制作基于鱼眼相机俯视拍摄的行人头部检测数据集,并用该数据集训练用于行人头部检测的深度卷积神经网络,获得训练好的行人头部检测神经网络;
S2、用训练好的行人头部检测神经网络进行行人头部检测,根据目标行人头部位置对图像进行旋转,将图像中的目标行人旋转至直立状态,然后将目标行人从图像中截取出来;
S3、对截取后的图像进行填补并对填补之后的图像中的行人进行语义分割,从而得到行人在图像中的准确边框,并根据准确边框计算行人的图上身高;
S4、根据鱼眼相机的数学模型和目标行人的图上身高,对该目标行人进行身高估计;
S5、选择不同的目标行人,重复S2至S4,依次对图像中的行人进行身高估计,从而实现对多个行人进行身高估计。
进一步地,步骤S1具体包括以下步骤:
S1.1、首先采集不同场景下的鱼眼相机俯视拍摄的视频,然后从视频中截取样本图像,并用方框手动标注出每张图像中出现的行人的头部,同时将标注框的左上角和右下角坐标写入到标注文件中,完成数据集的制作,此处标注框的左上角和右下角坐标用于S1.3的神经网络微调训练过程中计算损失,从而根据损失值优化网络参数,实现对行人头部边框的回归;
S1.2、基于单次检测器(Single Shot Detector,SSD)构建一个用于行人头部检测的深度神经网络即检测器,其特征提取部分使用VGG-16,然后使用Pascal VOC数据集,采用批量梯度下降的方式对检测器进行预训练,该行人头部检测神经网络的基本结构和损失函数与SSD框架相同;
S1.3、使用S1.1中制作的鱼眼相机俯视场景下行人头部检测数据集来对预训练后的检测器进行微调训练。在微调训练过程中,行人头部检测神经网络的结构和损失函数与预训练过程相同,首先加载预训练得到的网络参数,然后采用批量梯度下降的方式进行训练,获得训练好的行人头部检测神经网络。
进一步地,步骤S2具体包括以下步骤:
S2.1、从S1中鱼眼相机俯视拍摄的视频中一帧一帧地读取图像,然后用训练好的行人头部检测神经网络对图像进行行人头部检测,从而得到图像中各个行人的头部位置;
S2.2、从图像中选择一个目标行人O
i,i为图像中行人的序号,i=1,2,3...,根据其头部边框计算其头部中心点H
i,然后计算图像中心点C
0和头部中心点H
i的连线
与竖直向上方向的夹角θ,并根据θ对图像进行旋转,将行人旋转至直立状态;
S2.3、假设行人的图上身高为H0,行人在图像中的宽度为W0;根据H0和W0得到目标行人的粗略边框,并根据该粗略边框将行人从图像中截取出来。
进一步地,步骤S3具体包括以下步骤:
S3.1、基于掩模区域卷积网络(Mask R-CNN)预先构建一个用于语义分割神经网络,该神经网络的卷积部分使用ResNet-50,然后使用MSCOCO数据集,采用批量梯度下降的方式对该神经网络进行训练,得到训练好的语义分割神经网络的网络参数,该语义分割神经网络的损失函数和基本结构与MaskR-CNN相同;
S3.2、训练完成之后,加载训练好的网络参数,并将语义分割神经网络中的类别列表改为只包含人,从而实现仅对人体进行语义分割;
S3.3、根据语义分割神经网络输入图像的长宽比,用黑色对S2.3中截取出来的图像进行填补,并将填补之后的图像的尺寸调整为与语义分割网络的输入要求一致;
S3.4、用预先构建并训练调整好的语义分割神经网络对调整尺寸之后的图像进行语义分割,从而得到该行人在图像中的准确边框,将该准确边框上边的中点a和下边中点b分别作为行人在图像中的头顶点和脚底中心点,a的像素坐标为(u1,v1),b的像素坐标为(u2,v2)。
进一步地,步骤S4具体包括以下步骤:
S4.1、根据鱼眼相机的数学模型r=f·g(θ)和行人在鱼眼相机俯视拍摄场景下的成像几何关系可得:
ra=f·g(α); (1)
rb=f·g(β); (2)
tan(α)=D/(H-h); (3)
tan(β)=D/H; (4)
其中,f是相机的焦距,g(θ)=2f·sin(θ/2),H为相机的安装高度,h为行人的实际高度即所求的行人身高的估计值,r为像点到图像中心的像素距离,ra为a点到图像中心的像素距离,rb为b点到图像中心的像素距离,D为行人与相机安装位置在水平面上的实际距离,α为a点与相机中心点连线与竖直向下方向的夹角,β为b点与相机中心点连线与竖直向下方向的夹角。
联立(1)、(2)、(3)和(4)可得:
h=H{1-tan[g-1(ra/f)]/tan[g-1(rb/f)]}; (5)
S4.2、根据图像中心点C0(cx,cy)以及a、b两点的坐标可得:
将ra和rb的值代入到(5)中,得到行人身高的估计值h。
与现有技术相比,本发明的优点和效果在于:
本发明使用深度神经网络进行行人头部检测从而得到图像中行人的大致位置,然后根据行人的位置将行人从图像中单独截取出来,从而对图像中的多个行人单独进行考虑,避免行人之间的相互干扰,以便实现同时对多个行人进行身高估计。本发明通过使用深度神经网络对图像中的行人进行语义分割来得到行人在图像中的身高,从而根据图上身高估计出行人的实际身高。
附图说明
图1为一种适用于鱼眼相机俯视拍摄的行人身高估计方法的步骤流程图。
图2为鱼眼相机俯视拍摄场景下行人头部检测结果图。
图3为根据行人头部位置对图像进行旋转的结果图。
图4为将行人从图像中截取出来的并进行填补的结果图。
图5为对图像中的行人进行语义分割的结果图。
图6为行人在鱼眼相机俯视拍摄场景下的成像示意图。
具体实施方式
下面将结合附图和实例对本发明的具体实施作进一步说明,但本发明的实施和保护不限于此。
如图1所示,一种适用于鱼眼相机俯视拍摄的行人身高估计方法,包括以下的步骤:
S1、制作基于鱼眼相机俯视拍摄的行人头部检测数据集,并用该数据集训练用于行人头部检测的深度卷积神经网络,获得训练好的行人头部检测神经网络,具体包括以下步骤:
S1.1、首先采集不同场景下的鱼眼相机俯视拍摄的视频,然后从视频中截取样本图像,并用方框手动标注出每张图像中出现的行人的头部,如图2所示,同时将标注框的左上角和右下角坐标写入到标注文件中,完成数据集的制作。此处标注框的左上角和右下角坐标用于S1.3的神经网络微调训练过程中计算损失,从而根据损失值优化网络参数,实现对行人头部边框的回归;
S1.2、从第三方库GluonCV的Model Zoo中加载基于VGG-16的SSD模型ssd_512_vgg16_atrous_voc作为检测器,并加载在PascalVOC数据集上训练好的网络参数作为预训练参数;
S1.3、使用S1.1中制作的基于鱼眼相机俯视拍摄的行人头部检测数据集来对加载了预训练参数的检测器进行微调训练,获得训练好的行人头部检测神经网络。此处微调训练采用批量梯度下降的方式训练检测器,批量大小为16,学习率为0.0005,训练次数为500epochs;
S2、用训练好的行人头部检测神经网络进行行人头部检测,根据目标行人头部位置对图像进行旋转,将图像中的目标行人旋转至直立状态,然后将目标行人从图像中截取出来,具体包括以下步骤:
S2.1、从S1中鱼眼相机俯视拍摄的视频中一帧一帧地读取图像,然后用训练好的行人头部检测神经网络对图像进行行人头部检测,从而得到图像中各个行人的头部位置;
S2.2、如图3a所示,从图像中选择一个目标行人O
i,i为图像中行人的序号,i=1,2,3...,根据其头部边框计算其头部中心点H
i,然后计算图像中心点C
0和头部中心点H
i的连线
与竖直向上方向的夹角θ,并根据θ对图像进行旋转,如图3b所示,将行人旋转至直立状态;
S2.3、假设行人的图上身高为H0,行人在图像中的宽度为W0,其中H0=2.5m,W0为检测到的该行人头部边框的宽度的4倍;如图4a所示,根据H0和W0得到目标行人的粗略边框,并根据该粗略边框将行人从图像中截取出来;
S3、对截取后的图像进行填补并对填补之后的图像中的行人进行语义分割,从而得到行人在图像中的准确边框,并根据准确边框计算行人的图上身高,具体包括以下步骤:
S3.1、预先从第三方库GluonCV的ModelZoo中加载基于ResNet-50的Mask R-CNN的网络模型mask_rcnn_resnet50_v1b_coco用于对图像进行语义分割,并加载在MSCOCO数据集上训练好的网络参数;
S3.2、训练完成之后,加载训练好的网络参数,并将语义分割神经网络中的类别列表改为只包含人,从而实现仅对人体进行语义分割;
S3.3、根据语义分割神经网络输入图像的长宽比,用黑色对S2.3中截取出来的图像进行填补,并将填补之后的图像的尺寸调整为与语义分割网络的输入要求一致;
S3.4、用预先构建并训练调整好的语义分割神经网络对填补之后的图像进行语义分割,如图5a所示,得到该行人在图像中的准确边框,如图5b所示,将该准确边框上边的中点a和下边中点b分别作为行人在图像中的头顶点和脚底中心点,a的像素坐标为(u1,v1),b的像素坐标为(u2,v2)。
S4、根据鱼眼相机的数学模型和目标行人的图上身高,对该目标行人进行身高估计,具体包括以下步骤:
S4.1、图6为鱼眼相机成像过程的示意图,图中半圆弧
表示鱼眼相机的半球形的镜头,O点为镜头的焦点,EI为鱼眼相机的成像平面,根据鱼眼相机的数学模型r=f·g(θ)和行人在鱼眼相机俯视拍摄场景下的成像几何关系可得:
ra=f·g(α); (1)
rb=f·g(β); (2)
tan(α)=D/(H-h); (3)
tan(β)=D/H; (4)
其中,f是相机的焦距,g(θ)=2f·sin(θ/2),A为实际行人的头部,B为实际行人脚底中心点,H为相机的安装高度,h为行人的实际高度即所求的行人身高的估计值,r为像点到图像中心的像素距离,ra为a点到图像中心的像素距离,rb为b点到图像中心的像素距离,D为行人与相机安装位置在水平面上的实际距离,α为a点与相机中心点连线与竖直向下方向的夹角,β为b点与相机中心点连线与竖直向下方向的夹角;
联立(1)、(2)、(3)和(4)可得:
h=H{1-tan[g-1(ra/f)]/tan[g-1(rb/f)]}; (5)
S4.2、根据图像中心点C0(cx,cy)以及a、b两点的坐标可得:
将ra和rb的值代入到(5)中,得到行人身高的估计值h。
S5、选择不同的目标行人,重复S2至S4,依次对图像中的行人进行身高估计,从而实现对多个行人进行身高估计。