一种基于生成式对抗网络的行人检测数据扩充方法与流程

文档序号:22967454发布日期:2020-11-19 21:41阅读:185来源:国知局
一种基于生成式对抗网络的行人检测数据扩充方法与流程

本发明涉及图像处理领域,特别涉及一种基于生成式对抗网络的行人检测数据扩充方法。



背景技术:

本发明涉及行人检测是视频处理中的一项基本任务,广泛应用于智能视频监控、自动驾驶、机器人自动化等场景中,训练高精度的行人检测模型需要大规模、高质量的行人图片数据集。目前,行人检测相关研究主要是使用已有的公开数据集,这些数据集大多来自巨头互联网公司,他们投入了大量的人工标注和矫正成本来保证数据集的可靠性。在这些公开数据集上训练模型时,研究者们常使用传统数据扩充方法,例如图片翻转、随机剪裁、调整颜色等对训练集图片进行扩充。然而,这些方法本质上并没能丰富数据集的内容,数据扩充的效果有限。面对这个问题,我们提出了一种级联结构的生成式对抗神经网络,它能够自动生成多尺寸、高质量、服饰各异的行人,从而达到自动化地大规模扩充行人检测数据集的目的。

生成式对抗神经网络(generativeadversarialnetwork,gan)是一种深度学习网络结构,它包含两个基本部分:生成器和判别器。在利用gan进行图片生成的过程中,生成器的目标是生成尽可能真实的图片,判别器的目标是判断出哪些数据是真实的,哪些数据是生成的。通过训练网络,生成器和判别器不断地对抗,最终使网络学会生成与真实图片足够相近的图片。

近年来,基于gan网络进行数据扩充成为了一个研究热点,已有的研究有生成植物图片用于植物识别的、生成医学ct图片用于辅助智能诊断的等等,但行人图片生成的研究还比较少,生成的行人图片质量也有待提高。前人工作基于gan网络的行人生成方法主要思路是:给出一幅背景图(如街道图片),在背景图片中希望生成行人的位置上添加一个行人框,将框内的背景图替换成噪声(如高斯噪声),将其作为gan网络的输入,基于u-net网络结构构建生成器,使用一个局部判别器来判断生成的行人是否真实,使用一个全局判别器来判断整幅行人图片是否真实,使用空间金字塔池化技术(spatialpyramidpooling)来处理大小各异的多分辨率行人。这种方法存在几点问题:第一,添加的方框和背景的交界处有明显的边缘痕迹,生成的图片看起来像是在背景上贴了一个方形贴纸,不真实。第二,模型生成的行人细节粗糙,质量不高,这在大尺寸的高分辨率行人上尤其严重。第三,该方法训练的模型缺乏多样性,生成的行人衣着、颜色相似,这对数据扩充来说不够好。



技术实现要素:

本发明所要解决的技术问题是:1.解决生成的行人图片中行人框与背景融合时边缘痕迹明显的问题;2.解决生成的行人细节粗糙的问题;3.解决大尺寸的高分辨率行人质量低的问题;4.解决生成的行人图片缺乏多样性的问题。针对上述存在的问题,提供了一种基于生成式对抗网络的行人检测数据扩充方法。

本发明采用的技术方案如下:一种基于生成式对抗网络的行人检测数据扩充方法,包括:

s1、搭建三层级联生成式对抗神经网络模型,并设定模型训练的目标函数;每层生成式对抗神经网络均采用bicyclegan的结构,生成器采用残差u-net结构,后一层的网络的输入为行人实例掩码图片和前一层网络的输出;

s2、训练数据预处理;

s3、采用预处理后的数据训练三层级联生成式对抗神经网络模型;

s4、通过三层级联生成式对抗神经网络模型完成行人检测数据的扩充。

进一步的,所述s1中,搭建三层级联生成式对抗神经网络模型具体过程包括:

s11、构建残差u-net结构的生成器,生成器的编码器部分加入多尺度残差块,生成器的解码器部分加入通道注意力残差块;具体的,所述残差u-net结构的生成器在u-net的基础上进行改进,在编码器部分,将u-net的每个基本块中第二个3×3卷积替换为一个多尺度残差块作为新的基本块;在解码器部分,将u-net的每个基本块中第一个3×3卷积替换为一个通道注意力残差块作为新的基本块;向编码器的每个中间层注入一个经掩码遮掩的16维隐层向量。

s12、基于patchgan的判别器进行构建判别器;

s13、基于残差网络构建编码器;

s14、级联网络每一层采用s11、s12、s13构建的生成器、判别器和编码器,第一层输入的图片分辨率为64*64,第二层为128*128,第三层为256*256;两层生成式对抗网络之间通过一个卷积层相连,形成三层级联生成式对抗神经网络;

s15、基于bicyclegan的目标函数加入基于vgg-19的感知损失作为三层级联生成式对抗神经网络模型的目标函数。

进一步的,所述步骤11中,生成器的编码器部分的每个中间层注入一个16维的隐层向量z,所述隐层向量z经过行人实例掩码遮掩。

进一步的,所述步骤15中三层级联生成式对抗神经网络模型的目标函数具体为:

其中,g*,e*分别代表生成器和编码器,dwhole是全局判别器,dlocal是局部判别器,和lgan(·)分别代表bicyclegan网络结构中的cvae-gan和clr-gan的对抗损失目标函数;是l1损失,它使生成器的输入尽可能与行人样本图片相似;也是l1损失,它使编码器的输出尽可能贴近高斯分布;lkl是clr-gan中的kl距离,lvgg是感知损失;λ、λkl、λlatent、λvgg是超参数,控制对应项的权重。

进一步的,所述s2的具体包括:

s21、从cityscapes数据集从取出每层生成对抗网络所需像素大小的行人样本图,得到行人样本图集合;

s22、根据cityscapes的实例标签图集合和步骤s1得到的行人样本图集合,获取每张行人样本图对应的实例标签图,将每个标签图与对应样本图对齐并剪裁,重复该过程,得到行人样本图集合对应的实例标签图集合l;

s23、将每张实例标签图中最中间的行人的像素点值置为1,其他像素点值置为0,得到每张样本图的行人实例掩码m;

s24、利用得到的行人实例掩码对对应行人样本图进行处理,得到经行人实例掩码后的图像bm;

s25、将cityscapes数据集的实例标签图与步骤s1获得的行人样本图集合对齐,将实例标签图中实例与实例的交界处像素值置为1,实例内的像素值置为0,则得到对应的实例边缘图e;

s26、将步骤s22、s23、s24、s25得到的集合中每张图片所对应的bm,m,l,e依次拼接,获得三层级联生成式对抗神经网络模型输入集合a,a={bm,m,l,e}。

进一步的,所述步骤21中,针对每层生成对抗式神经网格提取不同的行人样本图,

对于第一层网络,取出数据集中高度在[64,256]像素的行人样本,每一个行人样本是一张正方形图片,边长与行人等高,图片的中心为行人的中心,调整取出图片的大小(resize)为64*64像素;

对于第二层网络,取出高度在[100,1024]像素的行人样本,调整图片大小到128*128像素;

对于第三层网络,取出高度在[150,1024]像素的行人样本,调整图片大小到256*256*像素。

进一步的,所述s3的具体包括:在训练级联网络时,训练n轮,

第一层网络的目标是学习生成器g1和编码器e1的权重,训练第一层时,目标函数不使用感知损失;

训练第二层时,前n/2轮固定生成器g1和编码器e1的权重,只更新生成器g2和编码器e2的权重,后n/2轮同时更新生成器g1、g2和编码器e1、e2的权重。

训练第三层时,前n/2轮固定生成器g1、g2和编码器e1、e2的权重,只更新生成器g3和编码器e3的权重,后n/2轮同时更新生成器g1、g2、g3和编码器e1、e2、e3的权重。

其中,g1、g2、g3分别指第一层、第二层、第三层生成式对抗神经网络的生成器;e1、e2、e3分别指第一层、第二层、第三层生成式对抗神经网络的编码器。

进一步的,s3中,采用adam优化方法更新权重,其学习率为wh-i*lr,其中lr是基础学习率,h是级联的总层数,i是当前所训练层的序数,w是权重参数。

进一步的,所述s4的具体包括:

s41、建立图片中行人高度ph与行人位置ppos的线性关系;

s42、根据数据集提供的实例标签标注,得到路面位置坐标集合;

s43、统计数据集提供的实例标签中已有行人的行人框底边10*10像素内的位置坐标,得到行人位置坐标集合;

s44、对于一张给定的需要生成行人的图片i,随机从路面位置坐标集合和行人位置坐标集合中选择一个数据集,再随机从这两个数据集中选一个位置,作为生成行人的位置ppos,根据步骤s41的线性关系,计算出新生成行人的高度ph;

从图片i中剪裁出一个ph*ph大小的背景图片ibg,其中心与生成的新的行人的中心一致;从行人实例掩码数据集中随机选择一个掩码m,以及它对应的实例掩码l和边缘图片e,根据ibg和掩码m计算得到经掩码后的图片bm,将掩码m、实例掩码l、边缘图片e以及经掩码后的图片bm一起输入训练好的三层级联生成式对抗神经网络模型,得到生成图片iped,在图片i中将背景图片ibh逐像素替换为生成图片iped,完成一次数据扩充;

s45、重复步骤41,得到大量扩充数据。

进一步的,所述s1中,行人高度ph与行人位置ppos的线性关系的具体为:

phglobal=aglobal*pposglobal+bglobal

其中,phglobal为整个数据集中行人高度ph的统计值,pposglobal为整个数据集中行人位置ppos的统计值。

与现有技术相比,采用上述技术方案的有益效果为:

1.使用行人实例掩码解决了行人框掩码在背景图中边缘明显的问题;行人实例掩码能够提供行人的形状,生成的行人身体边缘更加清晰,姿态更加真实;

2.引入多尺度残差块、通道注意力残差块,对生成器的u-net结构进行改进,使生成的行人细节更加精细;

3.基于级联结构生成多尺度的行人图片,提高了大尺寸、高分辨率行人图片的质量;

4.能够生成多样化的行人,提高了数据扩充的效率。

附图说明

图1为本发明中的基于gan网络的行人检测数据扩充方法过程示意图。

图2为本发明中的三层级联生成式对抗神经网络整体结构示意图。

图3为本发明中的生成器残差u-net网络结构示意图。

图4为本发明中的生成器中多尺度残差块结构示意图。

图5为本发明中的生成器中通道注意力残差块结构示意图。

图6为本发明中的判别器结构示意图。

图7为本发明中的编码器结构示意图。

图8为本发明中的级联层与层之间连接结构示意图。

具体实施方式

下面结合附图对本发明做进一步描述。

本发明要解决的技术问题:

1.解决生成的行人图片中行人框与背景融合时边缘痕迹明显的问题;

2.解决生成的行人细节粗糙的问题;

3.解决大尺寸的高分辨率行人质量低的问题;

4.解决生成的行人图片缺乏多样性的问题。

基于此,本发明提供了一种基于生成式对抗网络的行人检测数据扩充方法,具体方案如下:

步骤1:搭建级联生成式对抗神经网络。本方案提出一个三层级联生成式对抗神经网络(如图2),每一层生成式对抗神经网络都使用bicyclegan的结构,但将其中生成器的网络结构改进为残差u-net网络,本实施例提出的神经网络是为学习从bm到b的映射,其中,bm是输入域集合,它的每个元素是一张被行人实例掩码遮掩的背景图片;b是输出域集合,它的每一个元素是一张包含背景的行人图片。为了给网络提供更多的信息,在训练网络时我们不仅输入bm,还输入它对应的行人实例掩码集合m、计算m所用的实例标签图集合l,以及通过l得到的实例边缘图集合e。所以,网络的输入为a={bm,m,l,e},输出为b。需注意的是,本实施例的网络学习“1对多”的映射,对于一个输入,有多个可能的输出,但在训练时我们只输入“1对1”的映射,在测试时可以获得多个输出。具体如下:

步骤11、构建残差u-net结构的生成器。残差u-net生成器在u-net的基础上进行改进:在编码器部分,将u-net的每个基本块中第二个3×3卷积替换为一个多尺度残差块作为新的基本块;在解码器部分,将u-net的每个基本块中第一个3×3卷积替换为一个通道注意力残差块作为新的基本块;向编码器的每个中间层注入一个经掩码遮掩的16维隐层向量。对于本发明的三层级联生成式对抗神经网络,每个层级上,生成器编码器和解码器部分的基本块个数相等,其基本块总数分别为n1=12,n2=14,n3=16,第j个和第n-j个基本块之间跳连,跳连的连接方式与原始的u-net一致。

具体的,编码器部分的每个多尺度残差块定义为:

mn=s'+mn-1

其中,w和b是权重和偏置,上角标代表该网络层的位置,下角标代表代表卷积网络中的卷积核大小,与已有工作的多尺度残差块的不同在于,本发明的激活函数δ(·)不使用relu,而是使用leakyrelu,方括号[]代表连接操作,mn和mn-1分别代表多尺度残差块的输出和输入。

在解码器的通道注意力残差块中,通道注意力ca(x)由以下三步定义:

s=f(wuδ(wdy)),

其中,输入数据为x=[x1,x2,...,xc],c是一个大小为h×w大小的特征图,y是对每个通道的统计信息,xc(i,j)是在位置(i,j)上的值,aa(·)是averagepooling,f(·)是sigmoid,δ(·)是leakyrelu,w是权重。基于ca(x),通道注意力残差块a(x)表示为:

an=ca(x)·x+an-1

x=w2δ(w1an-1)

其中,w1和w2是两个卷积层的权重。

如图3所示为第一层对抗式神经网络中的生成器结构示意图,其中c(in,out,k,s)代表一个卷积层,它的输入通道数为in,输出通道数为out,卷积核的大小是k*k,步长是s;ct(in,out,k,s)代表一个转置卷积层;cat是拼接操作;ds(t)是下采样操作,其系数为t;m(in,out)是一个多尺度特征残差块,a(in,inter)是一个通道注意力残差块。图4为多尺度特征残差块的结构示意图,图5为通道注意力残差块的结构示意图,其中inter是该残差块里中间卷积层的通道数,通过输入通道数in和衰减率r计算得到,本实施例取r=16。

步骤12、构建判别器。所有判别器均使用patchgan提出的判别器结构,其结构示意如图6。其中,c(in,out,k,s)代表一个卷积层,avgpool(k,s)代表一个平均池化层。

网络使用leakyrelu为激活函数,参数为0.2,instancenormalization是实例正则化。

步骤13、构建bicyclegan网络的编码器。编码器基于残差网络,结构示意如图7。r(in,out,k,s)代表一个标准的残差块,linear(in,out)代表一个线性层,代表逐元素相加操作,网络使用leakyrelu为激活函数,参数为0.2,instancenormalization是实例正则化。

步骤14、搭建三层级联生成式对抗神经网络。

级联网络的每一层使用步骤11、12、13构建的生成器、判别器和编码器,第一层输入的图片分辨率为64*64,第二层为128*128,第三层为256*256。两层gan网络之间靠一个卷积层相连,其示意图见图8。

步骤15、设定模型训练的目标函数。因为级联的每一层都是一个bicyclegan结构的网络,所以本实施例采用了bicyclegan提出的目标函数。另外,为了促使生成的行人更像人,文本还加入了基于vgg-19的感知损失为目标函数。最终的目标函数为:

其中,g*,e*分别代表生成器和编码器,dwhole是全局判别器,dlocal是局部判别器,和lgan(·)分别代表bicyclegan中的cvae-gan和clr-gan的对抗损失目标函数。是l1损失,它使生成器的输入尽可能与行人样本图片相似;也是l1损失,它使编码器的输出尽可能贴近高斯分布。lkl是clr-gan中的kl距离,lvgg是感知损失。λ、λkl、λlatent、λvgg是超参数,控制对应项的权重。

步骤2:数据预处理。本方案在公开数据集cityscapes提供的训练集上进行模型训练,在它的验证集上进行测试。该数据集中的每张街景图片的分辨率都是1920*1080,训练本发明的模型只关注图片中有行人的部分。具体如下:

步骤21、从数据集中取出行人样本。为训练第一层gan网络,我们取出数据集中高度在[64,256]像素的行人样本,每一个行人样本是一张正方形图片,边长与行人等高,图片的中心为行人的中心。调整取出图片的大小(resize)为64*64像素;为训练第二层gan网络,取出高度在[100,1024]像素的行人样本,调整图片大小到128*128像素;为训练第三层gan网络,取出高度在[150,1024]像素的行人样本,调整图片大小到256*256*像素。

步骤22、获得行人样本对应的实例标签图集合l。通过cityscapes提供的实例标签图集合和步骤21得到的行人样本图集合,获取每张行人样本图对应的实例标签图,将标签图与每个样本图对齐并剪裁,得到实例标签图集合。

步骤23、获得行人样本对应的行人实例掩码m。对于每张标签图,将属于它中最中间的行人的像素点值置为1,其他像素点值置为0,则得到了每张样本图的行人实例掩码。

步骤24、获得经行人实例掩码后的图像bm。通过步骤21获得的样本和步骤22获得的行人实例掩码得到经行人实例掩码后的图像,图像中最中间的行人被掩码为白色,图片的其他部分仍保留。

步骤25、获得行人样本对应的实例边缘图集合e。将cityscapes提供的实例标签图与步骤21获得的样本图集合对其,将实例标签图中实例与实例的交界处像素值置为1,实例内的像素值置为0,则得到对应的实例边缘图。

步骤26、得到模型的输入集合a,a={bm,m,l,e}。将步骤22、23、24、25得到的集合中每张图片所对应的bm,m,l,e依次拼接,获得输入集合。

步骤3:训练三层级联生成式对抗神经网络模型。超参数λ、λkl、λlatent、λvgg分别设置为10,0.01,0.5和1,设置批度为1,训练轮数为200。

在训练第一层gan网络时不使用感知损失,因为我们发现该损失在这种分辨率下会导致训练不稳定。

在训练级联网络时,第一层网络的目标是学习生成器g1和编码器e1的权重,训练200轮;训练第二层时,前100轮固定g1和e1的权重,只更新g2和e2,后100轮同时更新g1、e1、g2和e2;第三层与第二层采用相同的策略。

使用adam优化方法更新权重,其学习率为wh-i*lr,其中lr是基础学习率,h是级联的总层数,i是当前所训练层的序数,w是权重参数,本实施例取lr=0.0002,h=3,i={1,2,3},w=0.01。

步骤4:使用步骤3训练的模型扩充citypersons数据集行人检测数据。citypersons是从cityscapes数据集中延伸出来的一个公开数据集,也提供了城市街景图片、实例标签标注等数据。

数据扩充具体步骤如下:

步骤41、确定数据集中行人高度与位置间的关系。行人的高度用ph表示,行人的位置用ppos表示,二者之间存在关联:行人所处的位置离拍摄图片的相机位置越近则其高度越大。ph和ppos可根据数据集提供的行人框标签获得,ph取值为行人框的高度,ppos取值为行人框底边在纵轴上的坐标。这里,取图片的左上角为原点,图片上边缘所在的直线为横轴,向右为正方向,图片左边缘所在的直线为纵轴,向下为正方向。根据整个数据集上ph的统计值phglobal和ppos的统计pposglobal,可以拟合一个全局的线性关系:

phglobal=aglobal*pposglobal+bglobal

步骤42、取适合生成行人的位置。根据现实世界的认知,行人出现的位置必须在人行道或者马路上(统称路面),天空或者树上等位置是不合适的。那么,根据数据集提供的实例标签标注,可以得到路面位置坐标集合{ground}。在此基础上,我们假设一个新生成的行人可以出现在已有的行人的旁边,或者在路面的任意位置。根据数据集提供的实例标签,统计已有行人的行人框底边10*10像素内的位置坐标为行人位置坐标{person}。

步骤43、扩充行人数据。对于一张给定的需要生成行人的图片i,随机从{ground}和{person}中选择一个数据集,再随机从这两个数据集中选一个位置,作为生成行人的位置ppos。根据步骤41的线性关系,计算出新生成行人的高度ph。从图片i中剪裁出一个ph*ph大小的背景图片ibg,其中心与生成的新的行人的中心一致。接着,从行人实例掩码数据集中随机选择一个掩码m,以及它对应的实例掩码l和边缘图片e,根据ibg和掩码m计算得到经掩码后的图片bm,将掩码m、实例掩码l、边缘图片e以及经掩码后的图片bm一起输入步骤3训练好的级联gan网络模型,得到一张生成图片iped,在图片i中将背景图片ibg逐像素替换为生成图片iped,完成一次数据扩充。根据实际需求,可自动地选择i、ppos和m,反复进行步骤43,得到大量的扩充数据。

本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。

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