一种基于前景分割图的人群密度估计方法与流程

文档序号:18756056发布日期:2019-09-24 22:24阅读:351来源:国知局
一种基于前景分割图的人群密度估计方法与流程

本发明属于计算机视觉、图像处理领域,尤其涉及一种基于前景分割图的人群密度估计方法。



背景技术:

给定一张图片利用计算机视觉技术检测出图像中的人群总数和人群空间分布,这就是人群密度估计任务。现有的人群密度的估计方法主要有基于目标检测的行人检测,头肩检测方法和基于密度图回归两种方式。基于目标检测的方法将人群密度估计转换为行人检测问题,最后对检测到的目标进行统计得到最终的人数。这类方法对于稀疏人群的检测效果较好,对于高密度区域,由于遮挡,尺度等因素,检测准确率会急剧下降。基于密度图回归的方法将图像区块看成整体直接通过局部图像特征回归出该区域的人数,这类方法可以有效的解决目标遮挡、尺度过小等问题,对于高密度人群图像的回归精度较高,存在问题是对于稀疏人群效果较差,容易造成背景误检,无法获得具体目标的位置。

基于单张图的密度图回归方法是目前采用比较多的算法,然而却存在较多的复杂背景误检问题,这在实际应用场景中是必须要避免的,本发明提出一种新的基于前景分割图的人群密度估计方法,可以有效的抑制背景误检问题,不仅可以提高算法的稳定性,还可以提升算法精度。



技术实现要素:

发明目的:针对以上问题,本发明提出一种基于前景分割图的人群密度估计方法,该方法可以同时预测前景分割图和人群密度图,最后将两者融合可以有效的去除背景的误检。

技术方案:为实现本发明的目的,本发明提出一种基于前景分割图的人群密度估计方法,该方法包括以下步骤:

步骤1:标注每张包含人群的图像中的人头获得点标记图;

步骤2:基于点标记图利用高斯平滑方法得到人群密度图;

步骤3:基于人群密度图利用阈值分割的方法获得人群前景分割图;

步骤4:分别设计用于图像特征提取的神经网络(骨干网络),用于人群密度回归的神经网络分支(回归网络分支),和用于人群前景分割的神经网络分支(前景分割网络分支),图像先输入到骨干网络得到图像特征;然后,图像特征同时输入到回归网络和前景分割网络分支分别得到人群密度图和人群前景分割图,最后将两个网络分支的输出融合得到最终输出;

步骤5:利用步骤1-3的方法制作数据集,训练网络模型;

步骤6:利用训练好的模型测试输入图像得到人群密度估计结果。

进一步,所述步骤1中包含如下内容:

对训练集每张人群图片进行标记,标记为点标记,即在每个人头上标记一个点,表示一个人。获得点标记图,点标记图为一个通道数为1的灰度图,其大小与人群图片大小一致,在有人头的位置数值为1,其他为0。

进一步,所述步骤2中包含如下内容:

确定高斯核大小:观察数据集的人头大小分布情况,确定高斯滤波核的大小,高斯核的最佳大小与人头大小一致。

进行高斯核卷积:对步骤1得到的点标记图进行卷积操作,得到人群密度图,网络训练时,作为整个网络最终输出的学习目标。参考图2所示人群密度越高的地方颜色越亮,这里人群密度图的灰度值代表了人群密度。

进一步,所述步骤3中包含如下内容:

确定密度图分割阈值:根据人群密度图的分布情况确定分割阈值;通过分析步骤2中得到的人群密度图可以明显看出人群区域大致位于人群密度图中像素值高于一定阈值的区域,因此可以选取一个阈值对人群密度图进行阈值分割,得到人群前景分割图。

获得人群前景分割图:利用选取的阈值对步骤2中得到的人群密度图进行阈值分割,人群密度图中像素值大于该阈值的位置属于前景区域,将前景分割图中相应位置的值设置为1,小于该阈值的位置属于背景区域,将前景分割图中相应位置的值设置为0,得到人群的前景分割图,网络训练时,作为前景分割网络分支的学习目标。

进一步,所述步骤4中包含如下内容:

骨干网络:采用vgg16网络前10层,包含3层最大池化层和7层卷积层,每层卷积核大小均为3。骨干网络的参数用θbkd来表示。

回归网络分支:采用堆叠的空洞卷积层设计,堆叠层数为6,空洞卷积层膨胀率均为2,卷积核大小为3。回归网络分支的参数用θreg来表示。

前景分割网络分支:采用堆叠的空洞卷积设计,堆叠层数为3,空洞卷积层的膨胀率为2,卷积核大小为3。分割网络分支参数用θseg来表示。

整体结构:将一张包含人群的原始图像先输入到骨干网络得到图像特征,然后,图像特征同时输入到回归网络和前景分割网络分支分别得到人群密度图和人群前景分割图,最后将两个网络分支的结果进行融合得到最终的模型输出结果,即人群密度估计结果。融合为掩膜操作,如下式所示:

dfinal(x)=dmask(x,θseg,θbkd)*dreg(x,θreg,θbkd)

其中,x表示输入图像数据,dmask(x,θseg,θbkd)表示人群前景分割网络分支输出结果,dreg(x,θreg,θbkd)表示回归网络分支输出结果,dfinal(x)表示模型最终输出结果。

进一步,所述步骤5中包含如下内容:

利用步骤1-3中的方法获得数据集,利用数据集训练步骤4中设计的神经网络模型,训练方法采用sgd算法。

参考图2,数据集的制作过程可以描述为如下过程:

首先,人群图像集中的所有图片按步骤1获得其对应的点标记图。然后,对其中的每一张包含人群的图像xi以及其对应点标记图进行如下的过程:

(1)根据数据集人头的整体大小分布确定高斯核的大小σ;

(2)根据σ计算归一化高斯核;

(3)利用高斯核对点标记图进行卷积,得到人群密度图dgt(xi);

(4)对过程(3)得到的人群密度分布图进行阈值处理可以得到人群前景分割图sgt(xi)。

模型训练过程如下:

损失函数设计。损失函数包含两部分:最终的模型输出结果与由点标记图生成的人群密度图之间的最小均方误差损失(mse,meansquareerror)如式(1)所示;前景分割网络的输出结果与由点标记图生成的人群前景分割图之间的二分类交叉熵损失(bce,binarycrossentropy),如下式所示。

其中,lreg和lseg分别表示整个网络的回归损失和前景分割网络分支的分割损失,n为训练数据批大小,xi表示输入图像数据,dfinal(xi)表示模型最终输出,dmask(xi,θseg,θbkd)表示前景分割网络分支输出的前景分割图,sgt(xi)和dgt(xi)分别表示图像xi对应的点标记图生成的前景分割图和人群密度图,bce函数表示如式3所示:

其中,为模型估计输出,yi为目标。

利用sgd算法训练模型。采用标准的sgd优化算法对整个网络模型进行端到端的训练,同时优化整体网络的人群密度回归损失,如式(1),和前景分割网络分支的前景分割损失,如式(2)。训练数据的批大小设置为1,学习率为固定的1e-7,动量参数(momentum)设置为0.005,当两个损失都收敛时,停止训练。收敛的标准是当损失函数小于某个值的时候,即可认为是收敛。训练过程中,训练每进行一个epoch(训练集中的全部样本训练一次)就在验证集上进行验证,保存验证集上准确度最高的模型作为最终模型。

进一步,所述步骤6中包含如下内容:

利用步骤5中训练好的模型测试输入图像得到人群密度估计结果。

有益效果:与现有技术相比,本发明的技术方案具有以下有益效果:

本发明提出基于人群前景分割图的密度估计方法,模型同时预测出前景分割图和人群密度回归图,同时结合了分割学习和密度回归两者的优势在不损失精度的前提下可以有效的抑制基于密度图回归方法的背景误检问题。

此外,本发明中使用的前景分割标记不需要额为的标注,可以直接从人群密度分布图中得出,简单高效。而且。本框架中新增的前景分割网络分支与回归网络分支共享骨干网络的特征提取过程,减少了计算量。训练和预测的时间相较于原始的单独回归框架增加很少。

附图说明

图1是本发明方法的具体流程图;

图2是基于前景分割的人群密度估计框架示意图;

图3由点标记图生成人群密度图和人群前景分割图的生成过程示意图;

图4是本算法与单独回归网络结果的对比结果示意图。

具体实施方式

下面结合示例对本发明中的细节进行进一步的说明。

本发明提出一种基于前景分割图的人群密度估计方法,该方法包括以下步骤:

步骤1:标注每张包含人群的图像中的人头获得点标记图;

步骤2:基于点标记图利用高斯平滑方法得到人群密度图;

步骤3:基于人群密度图利用阈值分割的方法获得人群前景分割图;

步骤4:分别设计用于图像特征提取的神经网络(骨干网络),用于人群密度回归的神经网络分支(回归网络分支),和用于人群前景分割的神经网络分支(前景分割网络分支),图像先输入到骨干网络得到图像特征;然后,图像特征同时输入到回归网络和前景分割网络分支分别得到人群密度图和人群前景分割图,最后将两个网络分支的输出融合得到最终输出;

步骤5:利用步骤1-3的方法制作数据集,训练网络模型;

步骤6:利用训练好的模型测试输入图像得到人群密度估计结果。

进一步,所述步骤1中包含如下内容:

对训练集每张人群图片进行标记,标记为点标记,即在每个人头上标记一个点,表示一个人。获得点标记图,点标记图为一个通道数为1的灰度图,其大小与人群图片大小一致,在有人头的位置数值为1,其他为0。

进一步,所述步骤2中包含如下内容:

确定高斯核大小:观察数据集的人头大小分布情况,确定高斯滤波核的大小,高斯核的最佳大小与人头大小一致。

进行高斯核卷积:对步骤1得到的点标记图进行卷积操作,得到人群密度图,网络训练时,作为整个网络最终输出的学习目标。参考图2所示人群密度越高的地方颜色越亮,这里人群密度图的灰度值代表了人群密度。

进一步,所述步骤3中包含如下内容:

确定密度图分割阈值:根据人群密度图的分布情况确定分割阈值;通过分析步骤2中得到的人群密度图可以明显看出人群区域大致位于人群密度图中像素值高于一定阈值的区域,因此可以选取一个阈值对人群密度图进行阈值分割,得到人群前景分割图。

获得人群前景分割图:利用选取的阈值对步骤2中得到的人群密度图进行阈值分割,人群密度图中像素值大于该阈值的位置属于前景区域,将前景分割图中相应位置的值设置为1,小于该阈值的位置属于背景区域,将前景分割图中相应位置的值设置为0,得到人群的前景分割图,网络训练时,作为前景分割网络分支的学习目标。

进一步,所述步骤4中包含如下内容:

骨干网络:采用vgg16网络前10层,包含3层最大池化层和7层卷积层,每层卷积核大小均为3。骨干网络的参数用θbkd来表示。

回归网络分支:采用堆叠的空洞卷积层设计,堆叠层数为6,空洞卷积层膨胀率均为2,卷积核大小为3。回归网络分支的参数用θreg来表示。

前景分割网络分支:采用堆叠的空洞卷积设计,堆叠层数为3,空洞卷积层的膨胀率为2,卷积核大小为3。分割网络分支参数用θseg来表示。

整体结构:将一张包含人群的原始图像先输入到骨干网络得到图像特征,然后,图像特征同时输入到回归网络和前景分割网络分支分别得到人群密度图和人群前景分割图,最后将两个网络分支的结果进行融合得到最终的模型输出结果,即人群密度估计结果。融合为掩膜操作,如下式所示:

dfinal(x)=dmask(x,θseg,θbkd)*dreg(x,θreg,θbkd)

其中,x表示输入图像数据,dmask(x,θseg,θbkd)表示人群前景分割网络分支输出结果,dreg(x,θreg,θbkd)表示回归网络分支输出结果,dfinal(x)表示模型最终输出结果。

进一步,所述步骤5中包含如下内容:

利用步骤1-3中的方法获得数据集,利用数据集训练步骤4中设计的神经网络模型,训练方法采用sgd算法。

参考图2,数据集的制作过程可以描述为如下过程:

首先,人群图像集中的所有图片按步骤1获得其对应的点标记图。然后,对其中的每一张包含人群的图像xi以及其对应点标记图进行如下的过程:

(1)根据数据集人头的整体大小分布确定高斯核的大小σ;

(2)根据σ计算归一化高斯核;

(3)利用高斯核对点标记图进行卷积,得到人群密度图dgt(xi);

(4)对过程(3)得到的人群密度分布图进行阈值处理可以得到人群前景分割图sgt(xi)。

模型训练过程如下:

损失函数设计。损失函数包含两部分:最终的模型输出结果与由点标记图生成的人群密度图之间的最小均方误差损失(mse,meansquareerror)如式(1)所示;前景分割网络的输出结果与由点标记图生成的人群前景分割图之间的二分类交叉熵损失(bce,binarycrossentropy),如下式所示。

其中,lreg和lseg分别表示整个网络的回归损失和前景分割网络分支的分割损失,n为训练数据批大小,xi表示输入图像数据,dfinal(xi)表示模型最终输出,dmask(xi,θseg,θbkd)表示前景分割网络分支输出的前景分割图,sgt(xi)和dgt(xi)分别表示图像xi对应的点标记图生成的前景分割图和人群密度图,bce函数表示如式3所示:

其中,为模型估计输出,yi为目标。

利用sgd算法训练模型。采用标准的sgd优化算法对整个网络模型进行端到端的训练,同时优化整体网络的人群密度回归损失,如式(1),和前景分割网络分支的前景分割损失,如式(2)。训练数据的批大小设置为1,学习率为固定的1e-7,动量参数(momentum)设置为0.005,当两个损失都收敛时,停止训练。收敛的标准是当损失函数小于某个值的时候,即可认为是收敛。训练过程中,训练每进行一个epoch就在验证集上进行验证,保存验证集上准确度最高的模型作为最终模型。

进一步,所述步骤6中包含如下内容:

利用步骤5中训练好的模型测试输入图像得到人群密度估计结果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1