具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
随着互联网的普及,越来越多的娱乐应用进入到人们的视野中,随着人工智能技术的兴起,换脸技术逐渐出现在人们的视野中。换脸,通常是在静态或正脸的标准人脸图像中,通过图像处理技术的抠图和移动等,可以实现换脸。通过换脸技术以实现用户之间的人脸互换,从而达到娱乐的效果。
随着人工智能的发展,涌现出了许多依靠人工智能技术实现人脸互换功能,这种技术被广泛应用于娱乐中,由此出现了很多换脸的应用程序。用户在使用这些应用程序进行人脸互换时,通常需要提供至少两个人物的人脸图像,才能实现两个人物之间的人脸互换。
在相关的换脸技术中,在进行两个人物之间的人脸互换时,对任意两个人之间的互换都需要训练一个换脸模型。例如,将人物X的脸替换成人物Y的脸时,需要训练一个换脸模型;将人物Y的脸替换成人物X的脸时,需要训练一个换脸模型,则一共需要训练两个换脸模型才能实现人物X和人物Y之间的人脸互换。若此时加入人物Z,需要实现任意两者之间的人脸互换,需要训练的换脸模型则为3!个,从而,在人脸互换的实际应用场景中,对换脸模型训练需要耗费大量的资源和时间,难以满足大量的用户的换脸需求。
发明人在研究中发现,可以针对每个用户训练一个换脸模型,用户训练好的换脸模型后,输入任意一个人脸图像,可以得到具有用户自己的人脸特征以及输入的人脸图像的表情特征的图像,将输入的人脸图像替换为输出的图像,则可以实现对输入的人脸图像进行换脸。由此,在两个人物进行人脸互换时,分别训练自己的换脸模型,通过处理则可以实现人脸互换。从而可以降低在实际使用时,对换脸模型的训练个数,以降低模型训练耗费的资源和时间,从而满足大量的用户的换脸需求。
因此,发明人提出了本申请实施例中的换脸模型训练方法,从第一样本集中选取的图像作为替换图像,从第二样本集中选取的图像作为驱动图像,基于所述替换图像以及驱动图像对换脸模型中的编码器,第一解码器以及第二解码器进行训练,从而使所述换脸模型可以实现换脸的功能。在将所述换脸模型训练好之后,利用所述换脸模型实现人脸互换,以降低对换脸模型的训练所耗费的资源和时间,从而满足大量的用户的换脸需求。
请参阅图1,示出了本申请实施例提供的换脸模型训练方法以及人脸互换方法的应用环境10,该应用环境10包括:终端设备11,服务器12,以及网络13。其中,终端设备11可以是手机、平板电脑、笔记本电脑、智能电视等可以支持应用程序的设备。服务器12可以是本地服务器或云服务器。网络13可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输。
终端设备11和服务器12通过网络13连接可以实现对换脸模型的训练。在本申请实施例中,换脸模型的训练可以是在服务器12中进行,具体的,可以是终端设备11将获取到的用户录制的训练数据通过网络13发送给服务器12,服务器12对换脸模型进行训练,在训练好换脸模型后,服务器12可以接收终端设备11发送的驱动图像,在服务器12中生成换脸图像。
基于该应用环境,对换脸模型进行训练还存在一些其他的实现方式。
在一些实施方式中,换脸模型的训练可以是在终端设备11中进行,在训练好换脸模型后,接收用户输入的驱动图像,得到换脸图像。终端设备11也可以将训练好的换脸模型的参数通过网络13发送给服务器12进行备份。
在一些实施方式中,可以是在服务器12中训练换脸模型,将训练后好的换脸模型通过网络13发送至终端设备11。终端设备11可以运行与换脸相关的应用程序,终端设备11获取使用者也就是目标人物实时录制的训练数据,终端设备11将训练数据通过网络13发送给服务器12,服务器12基于接收到的训练数据以及公开的数据集,对换脸模型进行训练,训练好换脸模型后,将训练好的换脸模型的参数通过网络13发送至终端设备11,从而终端设备11可以得到换脸图像。
基于训练好的换脸模型,可以实现人脸的互换。例如若存在第一用户和第二用户之间的人脸互换,服务器12在训练好第一用户的换脸模型以及第二用户的换脸模型后,服务器12可以获取第一用户的人脸图像输入第二用户的换脸模型得到第一图像,以所述第一图像替换第一用户的人脸图像对第一用户进行换脸;服务器12可以获取第二用户的人脸图像输入第一用户的换脸模型得到第二图像,以所述第二图像替换第二用户的人脸图像对第二用户进行换脸,再将换脸结果发送给对应的终端设备11,从而实现第一用户和第二用户的人脸互换。例如,图1中,第一用户的人脸图像为14,第二用户的人脸图像为16,服务器12实现所述第一用户和第二用户之间的人脸互换,得到第一用户换脸后的图像15,以及第二用户换脸后的图像16,从而实现人脸互换。
在本申请实施例中,对换脸模型的训练以及实现人脸互换主要是在服务器中进行,通过服务器对换脸模型的训练,基于训练好的换脸模型则可以实现本申请实施例提供的人脸互换方法。
请参阅图2,本申请实施例提供了一种换脸模型训练方法,基于前述的应用环境对换脸模型进行训练。具体的该方法可以包括:
步骤S110,从第一样本集中选取图像作为替换图像,从第二样本集中选取图像作为驱动图像。
在进行换脸模型的训练时,可以先获取训练数据,其中,训练数据包括第一样本集和第二样本集,第一样本集包括目标人物的多个人脸图像,第二样本集包括多个不同人物的人脸图像。那么在第一样本集中为单一人物的人脸图像,第二样本集中为不同人物的人脸图像。
第一样本集可以是目标人物录入的,将使用换脸模型的用户定义为所述目标人物,目标人物在使用训练好的换脸模型中,可以将任意人物的表情展现在目标人物的脸上,在对换脸模型进行训练之前,可以获取目标人物录制的视频,在目标人物录制的视频中,需要包括上下左右等不同脸部朝向下的多种表情,表情可以是喜怒哀乐,说话,眨眼等常见的表情。例如,目标人物在录制视频时,需要正脸的情况的下做出喜怒哀乐,说话,眨眼等表情,在侧脸的情况下做出喜怒哀乐,说话,眨眼等表情,在低头的情况下做出喜怒哀乐,说话,眨眼等表情。从而第一样本集包括目标人物的多个人脸图像。
第二样本集为多个不同的人物的人脸图像,可以使用公开数据中的人脸图像,如公开的人脸识别图像数据集cacd2000,以及视频数据集Face Foresics等,以使所述第二样本集中的人脸图像的数量足够多,从而在第二样本集包括多个不同人物的人脸图像。
在获取到第一样本集和第二样本集中,可以对所述第一样本集和第二样本集中的图像进行预设处理,例如,模糊,裁剪,加噪声,形变等操作,并将第一样本集和第二样本集中的图像进行归一化处理,以便于输入换脸模型对换脸模型进行训练。定义从第一样本集中选取的图像为替换图像,从第二样本集中选取的图像为驱动图像,不断将所述替换图像以及驱动图像输入换脸模型,则可以对所述换脸模型进行训练。
可参阅图3,示出了换脸模型200的网络架构图,所述换脸模型由一个编码器210,两个解码器构成,解码器分别为第一解码器220和第二解码器230。其中,所述编码器210用于从输入的人脸图像中提取对应的特征,所述第一解码器220用于对输入为第一样本集中的图像被编码器210编码后,得到的特征进行解码,生成与输入的第一样本集中的图像相同的图像;所述第二解码器230用于对输入为第二样本集中的图像被编码器210编码后,得到的特征进行解码,生成与输入的第二样本集中的图像相同的图像。通过第一样本集和第二样本集对换脸模型进行训练,可以确定编码器,第一解码器,以及第二解码器的参数,以实现在输入任意一张人脸图像时,可以得到具有目标人物的脸型特征以及输入的人脸图像的表情特征的图像。具体的,对换脸模型进行训练时,主要包括三条训练路径,分别为第一重构路径,第二重构路径以及循环重构路径。
步骤S120,基于所述替换图像对编码器以及第一解码器进行训练,使所述第一解码器生成具有目标人物脸型特征的图像。
在获取到替换图像之后,将所述替换图像输入换脸模型中,通过编码器对所述替换图像进行特征提取得到替换特征,再将所述替换特征输入所述第一解码器,得到重构替换图像,即为第一重构路径。其中,第一重构路径中,在对编码器和第一解码器进行训练后,可以使所述替换图像与重构替换图像趋于一致,替换图像经过编码器得到替换特征,第一解码器可以基于所述替换特征重建替换图像得到重构替换图像。由于替换图像具有目标人物脸型特征以及表情特征,那么通过第一重构路径的训练,得到的重构替换图像与输入的替换图像趋于一致,那么重构替换图像也具有目标人物的脸型特征。
步骤S130,基于所述驱动图像对编码器以及第二解码器进行训练,使所述编码器提取的特征包括所述驱动图像中的表情特征。
在获取到驱动图像之后,将所述驱动图像输入换脸模型中,通过编码器对所述驱动图像进行特征提取得到驱动特征,再将所述驱动特征输入所述第二解码器,得到重构驱动图像,即为第二重构路径。其中,第二重构路径中,在对编码器和第二解码器进行训练后,可以使所述驱动图像与重构驱动图像趋于一致,驱动图像经过编码器得到驱动特征,第二解码器可以基于所述驱动特征重建驱动图像得到重构驱动图像。由于驱动图像为从第二样本集中选取,而第二样本集包括不同人物的人脸图像,从而,通过第二重构路径对编解码以及第二解码器的训练,向编码器输入不同人物的人脸图像,通过编码器后得到的驱动特征包括该输入图像的特征,即包括输入的人脸图像的表情特征以及脸型特征,那么第二解码器输出的重构驱动图像与输入的驱动图像趋于一致,那么重构驱动图像也具有输入驱动图像的表情特征和脸型特征。由于第二解码器基于编码器提取的特征重建驱动图像,得到重构驱动图像,在通过第二重构路径的训练后,编码器提取的特征则包括驱动图像中的表情特征。
步骤S140,基于所述替换图像对编码器,第一解码器以及第二解码器进行训练,使所述第一解码器生成具有目标人物脸型特征的图像。
在从第一样本集中选取替换图像之后,可以将所述替换图像输入换脸模型中个,通过编码器对所述替换图像进行特征提取得到替换特征,将所述替换特征输入第二解码器中得到中间图像,将所述中间图像再次输入所述编码器中,对所述中间图像进行特征提取得到中间特征,将所述中间特征输入第一解码器得到循环重构图像,即为循环重构路径。其中,循环重构路径中,在对编码器、第一解码器以及第二解码器进行训练后,可以使所述替换图像与循环重构图像趋于一致,替换图像经过编码器得到替换特征,经过第二解码器得到中间图像;将中间图像再次输入编码器进行特征提取得到中间特征,将中间特征输入第一解码器得到与所述替换图像趋于一致的循环重构图像。由于替换图像具有目标人物脸型特征以及表情特征,那么通过循环重构路径的训练,得到的循环重构图像与输入的替换图像趋于一致,那么循环重构图像也具有目标人物的脸型特征。
需要说明的是,在对所述换脸模型进行训练时,步骤S120,步骤S130以及步骤S140是同时进行的,并不断从第一样本集和第二样本集中选取图像,不断的执行步骤S120至步骤S140的步骤,以获得训练好的换脸模型。
本申请提出的换脸模型训练方法,从第一样本集中选取图像作为替换图像,从第二样本集中选取图像作为驱动图像;基于所述替换图像对编码器以及第一解码器进行训练,使所述第一解码器生成具有目标人物脸型特征的图像;基于所述驱动图像对编码器以及第二解码器进行训练,使所述编码器提取的特征包括所述驱动图像中的表情特征;基于所述替换图像对编码器,第一解码器以及第二解码器进行训练,使所述第一解码器生成具有目标人物脸型特征的图像。通过三条训练路径对换脸模型进行训练,从而使所述换脸模型可以实现换脸的功能。在将所述换脸模型训练好之后,利用所述换脸模型实现人脸互换,以降低对换脸模型的训练所耗费的资源和时间,从而满足大量的用户的换脸需求。
请参阅图4,本申请又一实施例提供了一种换脸方法,本实施例在前述实施例的基础上,重点描述了对换脸模型进行训练的过程。如图3所示,该方法可以包括:
步骤S310,从第一样本集中选取图像作为替换图像,从第二样本集中选取图像作为驱动图像。
步骤S310可参照前述实施例对应部分,在此不再赘述。
步骤S320,将所述替换图像输入所述编码器得到替换特征,将所述替换特征输入所述第一解码器得到重构替换图像;获取所述替换图像与所述重构替换图像之间的第一重构损失;根据所述第一重构损失对所述编码器以及第一解码器的参数进行优化。
从第一样本集中选取图像作为替换图像,将所述替换图像输入编码器得到替换特征,将所述替换特征输入第一解码器得到重构替换图像。在该条训练路径中,期望输入的替换图像与输出的重构替换图像趋于一致,则可以获取所述替换图像与所述重构替换图像之间的第一重构损失,根据所述第一重构损失对所述编码器以及第一解码器的参数进行优化,从而使所述替换图像输入编码器得到替换特征,将所述替换特征输入第一解码器得到的重构替换图像与输入的替换图像趋于一致。
其中,第一重构损失为输入的替换图像与输出的重构替换图像之间的结构相似性。若定义替换图像为A,重构替换图像则为A’,那么第一重构损失可以表示为Loss1=DSSIM(A,A’),从而可以通过第一重构损失对编码器以及第一解码器的参数进行优化,使所述替换图像与所述重构替换图像趋于一致。具体的,可参阅图5,示出了第一重构路径的输入输出的示意图。其中,替换图像A作为输入,经过编码器210以及第一解码器220得到重构替换图像A’趋于一致。
步骤S330,将所述驱动图像输入所述编码器得到驱动特征,将所述驱动特征输入所述第二解码器得到重构驱动图像;获取所述驱动图像与所述重构驱动图像之间的第二重构损失;根据所述第二重构损失对所述编码器以及第二解码器的参数进行优化。
从第二样本集中选取图像作为驱动图像,将所述驱动图像输入编码器得到驱动特征,将所述驱动特征输入第二解码器得到重构驱动图像。在该条训练路径中,期望输入的驱动图像与输出的重构驱动图像趋于一致,则可以获取所述驱动图像与所述重构驱动图像之间的第二重构损失,根据所述第二重构损失对所述编码器以及第二解码器的参数进行优化,从而使所述驱动图像输入编码器得到驱动特征,将所述驱动特征输入第二解码器得到的重构驱动图像与输入的驱动图像趋于一致。
其中,第二重构损失为输入的驱动图像与输出的重构驱动图像之间的结构相似性。若定义驱动图像为B,重构驱动图像则为B’,那么第二重构损失可以表示为Loss2=DSSIM(B,B’),从而可以通过第二重构损失对编码器以及第二解码器的参数进行优化,使所述驱动图像与所述重构驱动图像趋于一致。具体的,可参阅图6,示出了第二重构路径的输入输出的示意图。其中,替换图像B作为输入,与经过编码器210以及第二解码器230得到重构替换图像B’趋于一致。
步骤S340,将所述的替换图像输入所述编码器得到替换特征,将所述替换特征输入第二解码器得到中间图像,将所述中间图像再次输入所述编码器得到中间特征,将所述中间特征输入第一解码器得到循环重构图像;获取所述循环重构图像与所述替换图像之间的损失得到循环重构损失;基于所述循环重构损失对所述编码器,第一解码器以及第二解码器的参数进行优化。
从第一样本集中选取图像作为替换图像,将所述替换图像输入编码器得到替换特征,将所述替换特征输入第二解码器得到中间图像;将所述中间图像再次输入编码器得到中间特征,再将所述中间特征输入第一解码器得到循环重构图像。在该条训练路径中,期望输入的替换图像与输出的重构循环图像趋于一致,则可以获取所述替换图像与所述循环重构图像之间的循环重构损失,根据所述循环重构损失对所述编码器、第一解码器以及第二解码器的参数进行优化,从而使输入的替换图像经过编码器得到替换特征后,输入第二解码器得到中间图像,将所述中间图像输入编码器得到编码特征,将所述编码特征输入第一解码器得到的循环重构图像与输入的替换图像趋于一致。
其中,循环重构损失为输入的替换图像与输出的循环重构图像之间的结构相似性。若定义替换图像为A,循环重构图像则为Acyc’,那么循环重构损失可以表示为Loss3=DSSIM(A,Acyc’),从而可以通过循环重构损失对编码器、第一解码器以及第二解码器的参数进行优化,使所述替换图像与所述循环重构图像趋于一致。具体的,可参阅图7,示出了循环重构路径的输入输出的示意图。其中,替换图像A作为输入,与依次经过编码器,第二解码器,编码器,第一解码器得到的循环重构图像Acyc’趋于一致,其中,两次经过的编码器为同一个编码器。
在对这三条路径进行训练后,将驱动图像输入编码器得到驱动特征,再将所述驱动特征输入第一解码器,期望输出具有目标人物的脸型特征以及驱动图像的表情特征的图像。在训练时,第一重构路径为基于第一样本集中的替换图像进行训练,从而调整编码器和第一解码器的参数,第二重构路径为基于第二样本集中的驱动图像进行训练,从而调整编码器和第二解码器的参数。第一解码器的输入为编码器从替换图像中提取的替换特征,第二解码器的输入为编码器从驱动图像中提取的驱动特征,由于第一样本集中仅包括目标人物的多张图像,第二样本集中包括多个不同人物的人脸图像,那么编码器提取的替换特征和驱动特征的分布可能不同。第一解码器以替换特征作为输入,则只能对分布与所述替换特征一样的特征进行解码,若将分布与驱动特征一样的特征进行解码,将驱动图像输入编码器得到驱动特征,再将所述驱动特征输入第一解码器,得到图像会出现模糊,或是不像目标人物的情况,达不到期望的输出效果,因此,需要对编码器提取的替换特征以及驱动特征进行约束。
步骤S350,将所述替换图像输入编码器得到替换特征,将所述驱动图像输入编码器得到驱动特征;获取所述替换特征与所述驱动特征之间的分布距离,得到分布损失;根据所述分布损失对所述编码器的参数进行优化。
定义替换特征为从第一样本集中选取的替换图像经过编码器后得到的空间隐向量,定义驱动特征为从第二样本集中选取的驱动图像经过编码器后得到的空间隐向量。在进行三条路径的训练过程中,对所述替换特征以及驱动特征进行约束。具体的,为获取所述替换特征与所述驱动特征之间的分布距离,得到分布损失,根据所述分布损失对所述编码器的参数进行优化。
通过对替换特征以及驱动特征的分布进行约束,将所述替换特征以及驱动特征约束到同一分布下,在循环重构路径中时,将替换图像输入编码器得到替换特征,将替换特征输入第二解码器得到中间图像,由于第二解码器为多个不同人物的人脸图像训练得到的,那么中间图像与所述替换图像趋于一致。也就是说,第二解码器输出的中间图像的特征的分布是符合驱动特征的分布的,从而通过第二解码器得到的中间图像应该与输入的替换图像趋于一致。将所述中间图像输入编码器得到中间特征,将所述中间特征输入所述第一解码器中得到的与输入的替换图像趋于一致的循环重构图像,表明符合驱动特征的分布的特征也能在第一解码器输出较好的结果。
其中,分布损失为编码器提取的替换特征与所述驱动特征之间的最大平均差异,即根据所述替换特征和所述驱动特征求最大平均差异(maximum mean discrepancy,MMD)损失,对所述替换特征以及所述驱动特征进行约束得到同一分布。由于MMD对输入特征的维度较敏感,维度太大导致MMD的变化过小而丧失价值,维度过小又会特征有限导致生成的结果模糊。通过实验发现维度为256或512最好。特征差异过大会使得MMD的loss也很大,波动也大,因此会导致整个模型训练不收敛甚至训练失败。所以直接迁移MMD作为一项损失反而会破坏整个训练过程。因此需要对替换特征和驱动特征进行正则化约束,使其符合处于(0,1)的高斯先验分布区间而不是[-∞,+∞],并且,只有当加入该正则项损失时MMD才会有稳定的结果。
若定义从第一样本集中选取的替换图像经过编码器后得到的空间隐向量即替换特征为ZA,定义从第二样本集中选取的驱动图像经过编码器后得到的空间隐向量即驱动特征为ZB,那么所述分布损失可以由两部分组成,一部分为MMD约束,可以表示为MMD(ZA,ZB),另一部分为正则化约束,可以表示为∑(ZA2+ZB2)/N,其中N为图像经过编码器后得到的空间隐向量的长度。在基于第一样本集和第二样本集对换脸模型进行三条路径的训练时,可以得到整个训练过程的训练损失为Loss=Loss1+Loss2+α*Loss3+β*MMD(ZA,ZB)+γ*∑(ZA2+ZB2)/N,其中α为循环重构损失所对应的权重,β为MMD损失对应的权重,γ为正则化约束所对应的权重。在本申请实施例中,α的取值可以是0.5,β取值可以是0.001,γ的取值可以是1e-3,N的取值可以是512,其中,α,β,γ以及N的取值可以根据实际的选择进行设置,在此不做具体限定。由于第一样本集和第二样本集中包括多个图像,可以循环执行从所述第一样本集中选取图像作为替换图像,从第二样本集中选取图像作为驱动图像,通过上述的三条路径对换脸模型进行训练,在所述换脸模型的训练损失小于预设值时,结束对所述换脸模型的训练。
将任意一张图像作为驱动图像输入训练好的换脸模型中,通过编码器提取驱动特征,将驱动特征输入第一解码器得到换脸图像,其中,所述换脸图像包括目标人物的脸型特征以及驱动图像中的表情特征。需要的是,通过第一样本集和第二样本集对换脸模型的训练,第一解码器为针对单一人物的解码器,也就是目标人物的解码器,第二解码器是多个不同人物的解码器,可以理解为通用解码器。编码器提取输入的图像的通用特征,从而使得到的特征在第二解码器中可以恢复出输入的图像。由于第一解码器在训练过程中,只输入了包括目标人物的特征,也就只能恢复出目标人物,即可以恢复出具有目标人物的脸型特征的图像,因此,在任意输入一个图像,经过编码器提取特征后,将提取的特征输入第一解码器,则可以输出具有目标人物的脸型特征以及输入的图像的表情特征的换脸图像。
若定义训练所述换脸模型的第一样本集中替换图像为A,输入所述训练好的换脸模型的驱动图像为B,那么所述驱动图像B通过编码器210提取驱动特征,将提取的驱动特征输入第一解码器则可以得到换脸图像AB,即具有目标人物的脸型特征以及驱动图像的表情特征的图像。具体的,可参阅图8,示出了训练好的换脸模型的输入输出的示意图。其中,驱动图像B作为输入,经过编码器210以及第一解码器220得到换脸图像AB,换脸图像AB具有目标人物的脸型特征以及驱动图像B的表情特征。
本申请提出的换脸方法,从所述第一样本集中选取图像作为替换图像,从所述第二样本集中选取图像作为原始图像;通过第一重构路径、第二重构路径、循环重构路径对模型进行训练,在训练时,通过第一重构损失,第二重构损失,循环重构损失以及分布损失对整个训练过程的输入输出进行约束,使得编码器提取的特征为同一分布,加快了换脸模型训练的速度的同时也提升了通过训练好的换脸模型得到的换脸图像的效果。
请参阅图9,本申请另一实施例提供了一种人脸互换方法,在上一实施例的基础上重点描述了利用通过上述训练方法得到的换脸模型实现人脸互换的过程。其执行主体可以是服务器,具体的,该方法可以包括:
步骤S410,获取第一用户的人脸图像以及第二用户的人脸图像。
在人脸互换中,至少包括两个人物之间的人脸互换,定义进行人脸互换的两个人物分别为第一用户以及第二用户。在对第一用户和第二用户进行人脸互换时,需要获取到第一用户的人脸图像以及第二用户的人脸图像。其中,所述第一用户的人脸图像具有第一脸型特征和第一表情特征,第二用户的人脸图像具有第二脸型特征和第二表情特征。
步骤S420,将所述第一用户的人脸图像输入第二用户训练的换脸模型中得到第一图像,并将所述第二用户的人脸图像输入第一用户训练的换脸模型中得到第二图像。
在进行人脸互换之前,第一用户和第二用户需要分别训练换脸模型。第一用户训练的换脸模型为以第一用户为目标人物训练的换脸模型,第二用户训练的换脸模型为以第二用户为目标人物训练的换脸模型。其中,第一用户和第一二用户分别训练换脸模型时,采用前述实施例提供的换脸模型训练方法,训练的具体步骤可参照前述实施例的描述,在此不再赘述。
在第一用户训练的换脸模型中,任意选择一张人脸图像作为驱动图像输入所述第一用户训练的换脸模型中,即可以输出具有第一脸型特征以及输入的人脸图像的表情特征的图像,因此,可以将所述第二用户的人脸图像作为第一用户训练的换脸模型的输入,得到具有第一脸型特征以及第二表情特征的第二图像。
在第二用户训练的换脸模型中,任意选择一张人脸图像作为驱动图像输入所述第二用户训练的换脸模型中,即可以输出具有第二脸型特征以及输入的人脸图像的表情特征的图像,因此,可以将所述第一用户的人脸图像作为第二用户训练的换脸模型的输入,得到具有第二脸型特征以及第一表情特征的第一图像。
步骤S430,以所述第一图像替换所述第一用户的人脸图像,以所述第二图像替换所述第二用户的人脸图像。
第一图像为具有第二脸型特征以及第一表情特征的图像;第二图像为具有第一脸型特征以及第二表情特征的图像。将所述第一图像替换所述第一用户的人脸图像,则可以将所述第一用户的脸替换为所述第二用户的脸;将所述第二图像替换所述第二用户的人脸图像,则可以将所述第二用户的脸替换为所述第一用户的脸。该过程可参阅图10和图11,其中,图10示出了第一用户和第二用户人脸互换前的示意图;图10示出了第一用户和第二用户人脸互换后的示意图。在图10中,第一用户的人脸图像431,第二用户的人脸图像432在进行人脸互换后,得到图11的效果,其中,433为第一用户进行人脸互换后的人脸图像,434为第二用户进行人脸互换后的人脸图像在将所述第一图像替换第一用户的人脸图像。以所述第二图像替换所述第二用户的人脸图像之后,还可以对换脸后的图像进行图像处理,使换脸后的图像更加自然。
在进行人脸互换的场景可以直播场景,例如,两个主播在进行直播时,可以对正在直播的两个主播继续进行人脸互换,由于直播视频由连续帧的图像组成,由此需要实时获取每一个帧两个主播的图像,输入对方主播训练的换脸模型中,再将得到图像替换对应的主播的图像,实现实时的人脸互换。进行人脸互换的场景还可以是用户与视频或图像的指定人物之间的人脸互换。需要说明的是,该人脸互换方法可以实现任意两个人物之间的人脸互换,具体的人脸互换场景在此并不限定。
在人脸互换时,若第一用户想要与第二用户之间实现人脸互换,则需要第一用户作为目标人物训练一个换脸模型,第二用户训练作为目标人物训练一个换脸模型,即可以实现第一用户和第二用户之间的人脸互换。若第一用户还想要与第三用户进行人脸互换,则需要第三用户作为目标人物训练一个换脸模型,即可以实现第一用户和第三用户之间的人脸互换。从而可以实现每个用户仅需要作为目标人物进行一次换脸模型的训练,即可以实现与任意用户的人脸互换。从而可以降低换脸模型的训练次数,减小训练换脸模型所消耗的资源和时间,以满足大量用户的换脸需求。
本申请提出的人脸互换方法,获取第一用户的人脸图像以及第二用户的人脸图像;将所述第一用户的人脸图像输入第二用户训练的换脸模型中得到第一图像,并将所述第二用户的人脸图像输入第一用户训练的换脸模型中得到第二图像;以所述第一图像替换所述第一用户的人脸图像,以所述第二图像替换所述第二用户的人脸图像。从而实现两个人物之间的人脸互换。
请参阅图12,其示出了本申请实施例提供的一种换脸模型训练装置500,所述换脸模型训练装置500包括图像选取模块510、第一训练模块520、第二训练模块530以及第三训练模块540。
所述图像选取模块510用于从第一样本集中选取图像作为替换图像,从第二样本集中选取图像作为驱动图像,所述第一样本集包括目标人物的多个人脸图像,所述第二样本集包括多个不同人物的人脸图像;所述第一训练莫苦熬520用于基于所述替换图像对编码器以及第一解码器进行训练,使所述第一解码器生成具有目标人物脸型特征的图像;所述第二训练模块530用于基于所述驱动图像对编码器以及第二解码器进行训练,使所述编码器提取的特征包括所述驱动图像中的表情特征;所述第三训练模块540用于基于所述替换图像对编码器,第一解码器以及第二解码器进行训练,使所述第一解码器生成具有目标人物脸型特征的图像。
进一步的,所述第三训练模型540还用于将所述替换图像输入所述编码器得到替换特征,将所述替换特征输入第二解码器得到中间图像,将所述中间图像再次输入所述编码器得到中间特征,将所述中间特征输入第一解码器得到循环重构图像;获取所述循环重构图像与所述替换图像之间的损失得到循环重构损失;基于所述循环重构损失对所述编码器,第一解码器以及第二解码器的参数进行优化。
进一步的,所述第一训练模块520还用于将所述替换图像输入所述编码器得到替换特征,将所述替换特征输入所述第一解码器得到重构替换图像;获取所述替换图像与所述重构替换图像之间的第一重构损失;根据所述第一重构损失对所述编码器以及第一解码器的参数进行优化。
进一步的,所述第二训练模块530还用于将所述驱动图像输入所述编码器得到驱动特征,将所述驱动特征输入所述第二解码器得到重构驱动图像;获取所述驱动图像与所述重构驱动图像之间的第二重构损失;根据所述第二重构损失对所述编码器以及第二解码器的参数进行优化。
进一步的,所述换脸模型训练装置500还包括第四训练模块,用于将所述替换图像输入编码器得到替换特征,将所述驱动图像输入编码器得到驱动特征;获取所述替换特征与所述驱动特征之间的分布距离,得到分布损失;根据所述分布损失对所述编码器的参数进行优化。
进一步的,所述第四训练模块,还用于循环执行从第一样本集中选取图像作为替换图像,从第二样本集中选取图像作为驱动图像的步骤至基于所述替换图像对编码器,第一解码器以及第二解码器进行训练,使所述第一解码器生成具有目标人物脸型特征的图像的步骤,直到所述换脸模型的训练损失小于预设值,其中所述训练损失包括循环重构损失、第一重构损失、第二重构损失以及分布损失。
进一步的,在所述换脸模型的训练损失小于预设值时,输入任意一个驱动图像经过编码器得到驱动特征,将所述驱动特征输入第一解码器得到换脸图像,所述换脸图像具有目标人物脸型特征以及驱动图像中的表情特征。
请参阅图13,其示出了本申请实施例提供的一种人脸互换装置600,所述人脸互换装置600包括图像获取模块610、换脸模块620以及处理模块630。
所述图像获取模块610用于获取第一用户的人脸图像以及第二用户的人脸图像,所述第一用户的人脸图像具有第一脸型特征和第一表情特征,所述第二用户的人脸图像具有第二脸型特征和第二表情特征;所述换脸模块620,用于将所述第一用户的人脸图像输入第二用户的训练的换脸模型中得到第一图像,并将所述第二用户的人脸图像输入第一用户训练的换脸模型中得到第二图像,所述第一图像具有第二脸型特征和第一表情特征,所述第二图像具有第一脸型特征和第二表情特征;所述处理模块630,用于以所述第一图像替换所述第一用户的人脸图像,以所述第二图像替换所述第二用户的人脸图像。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
综上所述,本申请实施例提供的换脸模型训练方法、人脸互换方法、装置及电子设备,通过包括目标人物的多个人脸图像的第一样本集以及包括多个不同人物的人脸图像的第二样本集对换脸模型进行训练,得到训练后的换脸模型。在进行第一用户和第二用户的人脸互换时,用于将所述第一用户的人脸图像输入第二用户的训练的换脸模型中得到第一图像,并将所述第二用户的人脸图像输入第一用户训练的换脸模型中得到第二图像;以所述第一图像替换所述第一用户的人脸图像,以所述第二图像替换所述第二用户的人脸图像,以实现人脸互换。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图14,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备700可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备,还可以是服务器。本申请中的电子设备700可以包括一个或多个如下部件:处理器710、存储器720、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器720中并被配置为由一个或多个处理器710执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器710可以包括一个或者多个处理核。处理器710利用各种接口和线路连接整个电子设备700内的各个部分,通过运行或执行存储在存储器720内的指令、程序、代码集或指令集,以及调用存储在存储器720内的数据,执行电子设备700的各种功能和处理数据。可选地,处理器710可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器710可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器710中,单独通过一块通信芯片进行实现。
存储器720可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器720可用于存储指令、程序、代码、代码集或指令集。存储器720可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备700在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图15,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。