一种基于生成对抗网络的像素级人像抠图方法与流程

文档序号:14217321阅读:554来源:国知局

本发明涉及计算机视觉技术领域,尤其涉及像素级人像抠图方法,具体是一种基于生成对抗网络的像素级人像抠图方法,用于人像与背景分离。



背景技术:

人像抠图一直是计算机视觉领域的一个热点问题。像素级人像抠图要求精确地将一个对象的前景从背景中提取出来,属于更为精细的二分类语义分割问题。

随着电子商务的飞速发展,人像抠图有非常广阔的应用场景,比如越来越多的人选择在网络上购买服装,于是电商的以图搜物功能应运而生。准确的搜索到相似的服装是一件很困难的事情,所以有必要将图片中的人像分割出来。又如随着各种人像美化软件的兴起,其中的背景虚化功能也需要将人像与背景精准地区分。又比如在破案监控中,将监控得到的人像进行预处理,以便快速定位搜索目标。但是在大多数图像中,背景比较复杂,前景与背景精确区分技术还有待提高。

在深度学习时代之前,人们解决相关语义分割问题主要是使用基于像素的聚类方法和基于“图划分”(graphpartitioning)算法,传统基于图划分的语义分割方法都是将图像抽象为图(graph)的形式,然后借助图理论中的算法进行图像的语义分割,此方法的主要缺点是如果背景比较复杂或者背景和目标相似度很大,分割效果不好,且速度很慢。

随着人工智能2.0时代的到来,深度学习技术的发展,计算机能力的提升,以及大数据的产生,为语义分割技术的发展奠定了良好环境。目前已经有很多基于深度神经网络的模型用于语义分割,例如全卷积网络(fcn),通过使用上采样的反卷积层,得到端到端的密集预测。但因为其因网络结构简单,往往需要很多训练集图像来训练网络。除此之外,用于像素级人像抠图的数据集偏少,数据集的标定与制作成本巨大,一张训练标注图像样本需要半小时的人工标定,然而基于全卷积网络的分割模型需要数万张的训练集图像才能取得较好的结果,可见人工标注得到可用数据集耗时耗力。



技术实现要素:

本发明的目的是针对上述现有技术的不足,提出了一种运用较少训练集图像得到较好分割结果的基于生成对抗网络的像素级人像抠图的方法。

本发明是一种基于生成对抗网络的像素级人像抠图方法,针对含有人像的真实图像,通过人工标注的方式得到真实人像与背景分离的标注图像,其特征在于,包括有如下步骤:

(1)预设网络:预先设置生成网络以及判别网络,将两个网络设置为对抗学习模式,所述生成网络以及判别网络的类型均为深度神经网络,其中,生成网络为具有跳跃连接的深度神经网络,也简称为生成网络;

(2)生成分割图像:将含有人像的真实图像输入生成网络,输出人像与背景分离的分割图像,简称生成人景分割图像;

(3)计算损失函数值:将含有人像的真实图像和生成人景分割图像作为第一图像对,含有人像的真实图像与标注图像作为第二图像对,分别输入判别网络。通过判别网络计算出假判别概率和真判别概率,利用判别网络的损失函数公式和生成网络的损失函数公式,得到判别网络的损失函数值和生成网络的损失函数值;

(4)更新网络参数:分别最小化判别网络的损失函数值和生成网络的损失函数值,利用深度神经网络后向传播算法,迭代更新生成网络和判别网络各参数的取值,完成生成网络和判别网络的训练;

(5)生成测试集人景分割图像:当生成网络训练完成后,接收待分割的含有人像的真实图像,将其输入到已经训练完成的生成网络中,在该网络中通过迭代计算,生成网络输出测试集的生成人景分割图像;

(6)优化分割图像,完成人像抠图:将生成网络输出测试集的生成人景分割图像概率化,将测试集的人景概率矩阵作为条件随机场的输入,使用条件随机场对概率化后的人像分割图像进行进一步细化,完成基于生成对抗网络的人像抠图。

与现有技术技术相比,本发明的技术优势是:

一、本发明基于生成对抗网络,相较于全卷积网络,生成对抗网络的结构较为复杂,参数较多,容易学到人像与背景图像更细节的特征,比如形状,颜色等,因而分割精度更高。fcn网络需要运用数万张训练集图像训练网络,才能得到较好的人像与背景分离的分割效果。而本发明使用的训练集图像数量少于fcn网络训练集图像量达2个数量级,提高了训练速度。本发明为人像与背景分割提供了一种新方法。

二、除此之外,本发明运用具有跳跃连接的深度神经网络,在训练生成网络时,有助于使网络快速收敛,在比较短的时间内,得到较好的分割效果。在生成网络的解码器层加入了随机失活机制,防止因为网络参数过多、网络结构复杂,导致的过拟合。以上两种机制增强了生成对抗网络的健硕性,提升了网络训练的速度。

三、通过应用本发明的技术方案,在预先设置生成网络以及判别网络后,生成网络与判别网络相互对抗学习,并对生成图像送入条件随机场进行进一步优化,提升了人像边缘的分割平滑度。

附图说明

图1为本发明的一种生成网络的结构示意图;

图2为本发明的一种编码器结构示意图;

图3为本发明的一种解码器结构示意图;

图4为本发明的一种判别网络的结构示意图;

图5为本发明的基于条件随机场对测试生成人景分割图像的优化流程图;

图6为本发明的像素级人像抠图分割流程示意图;

图7为本发明具体实施例所公开的人像与背景分离的分割效果图。

具体实施方式

以下结合附图,对本发明作详细说明。

实施例1

本发明针对现有的人像抠图方法中需要海量训练集图像导致效率低下的问题,展开了研究与创新,提出了一种基于生成对抗网络的像素级人像抠图方法。针对含有人像的真实图像,和全卷积网络训练模型一样,本发明也需要通过人工标注的方式得到真实人像与背景分离的标注图像,但训练集图像的数量却少了很多。参见图7b,这是通过人工标注的人像与背景分离图像。参见图6,本发明的人像抠图方法包括有如下步骤:

(1)预设网络:预先设置生成网络以及判别网络,将两个网络设置为对抗学习模式,也即生成网络的损失函数通过判别网络的损失函数得到。所述生成网络以及所述判别网络的类型均为深度神经网络,其中,生成网络为具有跳跃连接的深度神经网络,也简称为生成网络。生成网络主要以卷积层、编码器层组、解码器层组、反卷积层组成,参见图1。以信息处理流向依次连接有人像图像输入层、卷积层、编码器层组、解码器层组、反卷积层、分割图像输出层。编码器层组和解码器层组的数量一一对应,每一个编码器层与对应的解码器层都有跳跃连接。对抗网络由5个卷积层与激活函数组成,参见图4。

(2)生成分割图像:在含有人像的真实图像输入生成网络之前,需要对输入图像进行预处理,比如图像分辨率修改,图片裁剪归一化,图像翻转等,通过生成网络计算,进而输出人像与背景分离的分割图像,简称生成人景分割图像。

(3)计算损失函数值:将含有人像的真实图像和生成网络输出的生成人景分割图像作为第一图像对,含有人像的真实图像与标注图像作为第二图像对,分别输入判别网络。通过判别网络权重计算出假判别概率和真判别概率,利用判别网络的损失函数公式和生成网络的损失函数公式,得到判别网络的损失函数值和生成网络的损失函数值。

(4)更新网络参数:分别最小化判别网络的损失函数值和生成网络的损失函数值,利用深度神经网络后向传播算法,迭代更新生成网络和判别网络各参数的取值,完成生成网络和判别网络的训练。将完成训练的生成网络用于生成测试人景分割图像,而判别网络在测试时不再使用。

(5)生成测试集人景分割图像:当生成网络训练完成后,生成网络接收待分割的含有人像的真实图像,即测试图像。在该网络中通过迭代计算,训练完成的生成网络会将测试图像人景分割。生成网络输出测试集的生成人景分割图像。

(6)优化分割图像,完成人像抠图:将生成网络输出测试集的生成人景分割图像概率化,将测试集的人景概率矩阵作为条件随机场的输入,使用条件随机场对概率化后的人像分割图像进行进一步细化,使得运用更小的数据集,得到更加精确的人像与背景分割图像,完成基于生成对抗网络的人像抠图。

本发明运用更小的训练集图像训练生成对抗网络(generativeadversarialnetwork,gan)网络,得到更好的结果。该方法预先设置生成网络以及判别网络,所述生成网络以及判别网络的类型均为深度神经网络。除此之外,本发明在测试分割图像输出时加入了条件随机场优化,使分割结果更为精细。

实施例2

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1,步骤1中所述的生成网络为具有跳跃连接的深度神经网络,具有跳跃连接的深度神经网络是用于构成生成网络的n个串接的编码器层与n个串接的解码器层之间的跳跃连接(skipconnection)的梯度传递通路,这同时是一种恒等映射,参见图1,具体是将3-8层编码器层连接至11-16层解码器层,比如第3层编码器层的输出是同时输入给第4层编码器层和第16层解码器层,其中,第3层编码器层输出到第4层编码器层是基本输出,第3层编码器层输出到第16层解码器层是跳跃连接的结果,以此类推,形成本发明的跳跃连接的神经网络结构,其效果是为了防止生成网络层数增加而导致的梯度弥散与退化问题。

实施例3

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1-2,本发明中生成网络的解码器层中引入了随机失活机制(dropout),具体是在生成网络的解码器层最终输出之前随机抛掉失活参数,即生成网络的每一个解码器层在最终输出之前都随机将各自的失活参数抛掉,具体是随机将各自失活部分参数输出的值设置为0,简化了许多不必要的计算,保证了网络结构的健硕性。

实施例4

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1-3,在步骤(3)和步骤(4)中提及的损失函数,其中生成网络的损失函数越小,生成网络所输出的人像与背景分离的分割图像真实度越高,生成网络损失函数公式由两个损失通过两个系数进行加权得到,具体生成网络损失函数公式为:

gen_loss=gan_weight×gan_loss+l1_weight×l1_loss

其中,gan_weight表示的是对抗损失函数gan_loss的权重,取值为0—50;本例中取值为10。l1_weight表示为生成网络输出的生成人景分割图像与标注图像的l1范数损失函数的权重,取值为0—100,本例中取值为90。gan_loss为对抗损失函数,计算公式如下:

式中pfake是含有人像的真实图像与生成网络输出的生成人景分割图像产生的概率矩阵,判别网络认为生成网络输出图像为真的概率,即通过判别网络权重计算出的假判别概率;为了避免log函数的真数等于0,导致错误,式中加入一个非常小的数,即eps,作为简单修正,eps的取值范围为10-13—10-11,本例中取值为10-13

l1范数损失l1_loss,也称为像素级的正则化损失函数,描述了生成网络输出的生成人景分割图像与标注图像之间的差异程度,即像素级的正则化损失函数根据所述生成网络生成的人景分割图像以及标注图像的差异确定。

l1范数损失l1_loss计算公式如下:

式中targetsij表示的是标注图像,outputij表示的是生成网络输出的生成人景分割图像,n为含有人像的真实图像的边长像素数,取值范围为256-1024,本例中取值为256。

实施例5

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1-4,在步骤(3)和步骤(4)中提及的损失函数,其中,判别网络的损失函数越小,所述判别网络输出的判别概率的准确度越高,其中判别网络损失计算公式为:

其中,eps同实施例4中一样,也表示一个非常小的常数,范围为10-13—10-11;preal是判别网络认为标注图像为真的概率,具体是含有人像的真实图像与标注图像作为第二图像对产生的概率矩为真的概率,也就是通过判别网络权重计算出的真判别概率。

本发明让生成网络与判别网络相互对抗学习,即利用深度神经网络后向传播算法,在传播过程中,迭代更新生成网络和判别网络各参数的取值,最小化判别网络的损失函数和生成网络的损失函数,达到网络快速收敛的目的,进而增强了生成网络的生成能力。

实施例6

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1-5,在步骤(6)中使用条件随机场对概率化后的生成人景分割图像,进行进一步细化,即将含有人像的真实图像输入生成网络以输出二分类语义分割处理后的人景分割图像之后,将生成的人景分割图像概率化,即对整个人景分割图像除以255,转换为0-1之间的值,作为人像部分的概率矩阵;用1减去人像部分的概率矩阵得到背景部分的概率矩阵,为条件随机场提供用于计算势函数的概率矩阵。

实施例7

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1-6,本发明中涉及到的条件随机场进行优化时,可以调用专用数据库,如基于python的densecrf库。参见图5,具体的优化过程可以表述为:

(1)将生成网络输出测试集的生成人景分割图像概率化,得到概率矩阵。

(2)根据条件随机场的算法得到图像中人像与背景的位置相关特征,由此可以让人像与背景的分割效果更平滑。

(3)根据条件随机场的算法得到图像中人像与背景的颜色相关特征,最终输出优化后的人像分割图像,完成基于生成对抗网络的像素级人像抠图。

本发明基于生成对抗网络的像素级人像抠图方法,解决了机器抠图领域需要海量制作成本巨大的数据集训练优化网络的问题。实现包括:预设对抗学习模式的生成网络和判别网络,生成网络为具有跳跃连接的深度神经网络;在生成网络中训练以输出人景分割图像;计算损失函数值;更新网络参数;生成测试集人景分割图像;优化分割图像,完成人像抠图。本发明根据最小化生成网络损失函数值以及判别网络损失函数值对生成网络以及判别网络的配置参数进行调整。并将概率化后的生成人景分割图像输入条件随机场,进一步优化分割结果。本发明的训练过程批量性地减少了训练集用图数量,提高了效率和分割精度。用于人像与背景分离。

下面给出一个更详尽的例子,结合附图和人像抠图过程,对本发明进一步说明:

实施例8

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1-7,本发明提出的一种基于生成对抗网络的像素级人像抠图方法,该方法针对单幅含有人像的真实图像提出一种对抗网络框架,其中包括两个深度神经网络,一个是生成网络,另一个是判别网络,两个网络同时训练相互学习,对抗竞争。生成网络的目的是从含有人像的真实图像生成人景分割图像;判别网络的目的是区分标注图像和生成网络所生成的人景分割图像。通过对抗训练,使生成网络生成尽可能接近真实分割结果的标注图像。除此之外,本发明在测试生成人景分割图像输出时加入了条件随机场优化,使分割结果更为精细。以下是本发明的一个更完整具体的实施例:

首先,介绍本发明的网络结构:

如图1所示,图1为本申请具体实施例中生成网络的结构示意图,在本例中本发明使用了基于u-net的架构,该生成网络结构每层具体含义如下:

第1层为人像图像输入层,包含的操作主要有人像图片分辨率修改,以及图片裁剪归一化等;

第2层为一个卷积层,卷积操作的步长为2,卷积核大小为4*4,卷积核数量为64;

第3-9层为编码器层,如图2所示,每个编码器层包含三个子层,即卷积层,relu(rectifiedlinearunit)层和批量规范化(batchnormalization)层;其中每个卷积层的步长均为2,卷积核数量为其上一层卷积核数量的2倍;relu层用来实现非线性变换;批量规范化层用来对本层输出(即下一层的输入)进行归一化处理;

第10-16层为解码器层,如图3所示,每个解码器层包含三个子层,即反卷积层,relu层和批量规范化层。其中每个反卷积层的高度和宽度的步长均为2,即输出在高度和宽度方向上均为原来的2倍。relu层和批量规范化层和上述作用一致。此外,在解码器层中引入了随机失活机制(dropout),在训练过程中,失活比例为0.5;

第17层为反卷积层,输出大小为256*256*1;

第18层为分割图像输出层,包含的主要操作为图片裁剪,最终输出生成人景分割图像;

需要注意的是,以上描述中编码器层与解码器层之间均有跳跃连接(skipconnection)作为梯度传递通路。

以上描述了本发明中生成网络的具体实现,需要说明的是,在基于生成对抗网络进行人像分割领域,并且在输入图像为含有人像的真实图像情况下,本领域其他专业人员对本申请做出的其他修改,例如参数调整等均属于本申请的保护范围。

如图4所示,图4为本发明的判别网络结构示意图,该判别网络各层具体含义如下:

第1层为判别图像输入层,主要操作是将生成网络输出的生成人景分割图像与标注图像进行叠加;

第2层为卷积层,其中卷积层步长为2,卷积核大小为4*4,卷积核数量为64;

第3层为卷积层,其中卷积层步长为2,卷积核大小为4*4,卷积核数量为128;

第4层为卷积层,其中卷积层步长为2,卷积核大小为4*4,卷积核数量为256;

第5层为卷积层,其中卷积层步长为1,卷积核大小为4*4,卷积核数量为512;

第6层为卷积层,其中卷积层步长为1,卷积核大小为4*4,卷积核数量为1;

第7层为判别网络输出层,其基本操作是通过sigmoid函数(sigmoid函数为一种深度学习激活函数)激活,用来输出30*30大小的概率值。

以上描述了本实施例中的判别网络的实现,需要说明的是,在基于生成对抗网络进行人像分割领域,并且在输入图形为含有人像的真实图像的情况下,本领域其他专业人员对本申请做出的其他修改,例如参数调整等均属于本申请的保护范围。

再介绍本发明利用条件随机场进行分割图像优化的过程:

如图5所示,图5是基于条件随机场对测试生成人景分割图像的优化流程图,基于条件随机场的输出优化过程,主要包含以下几个步骤:

第1步,将生成网络输出结果概率化,从而为条件随机场提供用于计算势函数的概率矩阵。

第2步,添加图片位置相关特征,根据条件随机场的算法得到图像中人像与背景的位置相关特征,由此可以让人像与背景的分割效果更平滑。

第3步,添加图片颜色相关特征,根据条件随机场的算法得到图像中人像与背景的颜色相关特征。

第4步,迭代求解。

第5步,输出优化后的人景分割图像。

如基于上述生成网络,判别网络以及条件随机场,本发明所提出的像素级人像抠图分割流程如图6所示,包括以下步骤:

s301,将含有人像的真实图像输入所述生成网络用以输出人像与背景分离的分割图像。依照惯例需要对含有人像的真实图像输入网络之前做一些预处理工作,例如缩放处理,归一化处理等。

s302,将含有人像的真实图像和生成网络输出的生成人景分割图像作为第一图像对,含有人像的真实图像与标注图像作为第二图像对,分别输入判别网络。通过判别网络计算出真判别概率preal和假判别概率pfake,进而得到判别网络损失disscrim_loss和生成网络损失gen_loss。

在本实施例中,训练集图像标签由人工标注,人像部分像素值为255,背景部分像素值为0,在本申请中称为标注图像。其中判别网络损失函数discsrim_los计s算公式为:

其中,eps表示一个非常小的常数,范围为10-13—10-11,本例中取值为10-12

由于在本实施例中,将含有人像的真实图像与生成网络输出的人像与背景分离的分割图像作为第一图像对,含有人像的真实图像与标注图像作为第二图像对,分别输入判别网络。每次判别网络均会输出一个概率矩阵,代表输入的两幅图像不同部分之间的相似程度。因此,含有人像的真实图像与生成网络输出的生成人景分割图像产生的概率矩阵,判别网络认为生成网络输出图像为真的概率,本申请称为pfake;同样的,含有人像的真实图像与标注图像作为第二图像对产生的概率矩阵为判别网络认为标注图像为真的概率,本申请称为preal。通过最小化判别网络损失函数值,可以使判别网络提升鉴别生成网络输出图像和标注图像的能力。

本实施例中,生成网络损失包含两个部分,其一是对抗损失函数gan_loss,计算公式如下:

另一个是l1范数损失,描述了生成网络输出的生成人景分割图像与标注图像之间的差异程度,计算公式如下:

其中,targetsij表示的是标注图像,outputij表示的是生成网络输出的人像与背景分离的分割图像。

其上的两个损失通过两个系数进行加权,得到最后的生成网络损失函数公式为:

gen_loss=gan_weight×gan_loss+l1_weight×l1_loss

其中,gan_weight表示的是对抗损失函数的权重,本例中取值为1;l1_loss表示为生成网络输出图像与标注图像的l1范数损失函数,本例中取值为100;

通过最小化生成网络损失,可以提升生成网络生成正确人像与背景分割图像的能力。

s303通过分别最小化判别网络损失函数值和生成网络损失函数值,利用神经网络后向传播算法,迭代更新所述生成网络和判别网络的各参数取值。

需要注意的是,本申请所述参数调整是基于神经网络的后向传播算法,其调整过程以及调整策略均属于本申请保护范畴。

s304当完成参数调整后,接受待分割含有人像的真实图像,将其作为生成网络输入,并获取生成网络的输出。

在本实施例中,当生成网络和判别网络参数经过s301-s303步调整完毕后,即可将待分割的含有人像的真实图像经过预处理后,作为生成网络输入并经由生成网络输出分割图像,生成的人景分割图像中像素值连续分布,越接近255则网络认为该像素属于人像部分的概率越大。

s305将生成网络输出概率化作为输入,使用条件随机场对输出结果进行进一步细化。

在本实施例中,为了进一步细化分割结果,使人景分割图像的人像边缘更加平滑,将生成网络的输出导入条件随机场。由于条件随机场算法需要接收概率矩阵作为输入,而生成网络的输出为像素值,首先将输出图像概率化,对整个图像除以255,转换为0-1之间的值,作为人像部分的概率矩阵。背景部分概率矩阵用1减去人像部分概率矩阵即可。运用python的densecrf库,本发明可以方便地提取图像的位置特征和颜色特征,并且迭代求解,得到更为精细的分割图像。

下面通过仿真及其结果,对本发明的技术效果再作说明:

实施例9

基于生成对抗网络的像素级人像抠图方法的总体技术方案同实施例1-8,本实施例中运用acc指标来度量生成对抗网络的实际生成效果,具体的人像与背景分离的分割效果图,参见图7。

其中,图7为测试集中含有人像的真实图像;图7b为与之对应的标注图像;图7c为通过生成对抗网络训练后并优化的人像与背景的分割图像。由人眼观察,生成对抗网络生成了人像的躯干轮廓,取得了很好的分割效果。再根据acc计算规则,生成结果越准确其对应的acc数值越小。通过acc的公式计算得到,图7的acc值为0.0138,本例中测试了500例,图像的acc值都在10-2量级上,且处于该量级的较低水平,这也表明了本发明网络的生成结果具有较高的精度。

现今为信息时代,图像信息在总信息中占很大的比重,人们获取图像信息,处理图像信息,利用图像信息已经成为大趋势。虽然本发明的生成人景分割图像和标注图像仍有一些差距,但人工标注耗时耗力,不是长远之计,机器标注是未来的发展方向。现有技术中,采用基于全卷积网络分割图像,需要10万的训练图像才能得到较好的分割结果。本发明仅需要1000训练图像训练网络便能得到较好的人景分割图像,相较于fcn,已经提高了2个数量级,大大提升了图像分割的速度和分割精度,有利于人像分割技术在工程化应用的推广。

简而言之,本发明公开的一种基于生成对抗网络的像素级人像抠图方法,解决了机器抠图领域需要海量制作成本巨大的数据集训练优化网络的问题。本发明预先设置对抗学习模式的生成网络和判别网络,生成网络为具有跳跃连接的深度神经网络;将含有人像的真实图像输入到生成网络中输出人景分割图像;将第一图像对和第二图像对分别输入到判别网络以输出判别概率,用真假判别概率确定生成网络和判别网络的损失函数;根据最小化生成网络和判别网络这两个网络损失函数值对两个网络的配置参数进行调整,完成生成网络的训练;测试图像输入到训练完成后的生成网络中以生成人景分割图像;将生成人景分割图像概率化,概率矩阵送入条件随机场进一步优化。本发明批量性地减少了网络训练用图数量,提高了效率和分割精度,为像素级人像抠图提供了一种有效的新途径。

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