一种图像换脸的方法、装置、***、设备和存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种图像换脸的方法、装置、***、设备和存储介质。
背景技术
随着网络技术的飞速发展,网络视频得到了广泛的推广和使用,视频可以是直播视频或录播视频。在录制视频的过程中,很多主播开始尝试一些新的互动方式,例如对视频进行换脸,也即,将视频中自己的面部图像换成其他人的面部图像,然后上传服务器进行播放。
相关技术中的换脸方案是,利用图像识别技术在视频图像中识别面部图像,然后使用目标人物的面部图像,替换视频图像中的面部图像,然后将换脸的视频图像上传服务器。
在实现本申请的过程中,发明人发现现有技术至少存在以下问题:
上述相关技术中对视频图像进行换脸处理的过程中,在视频图像中进行局部图像替换,很可能出现目标人物的面部图像与原人物的面部图像形状不匹配的情况,需要对目标人物的面部图像进行变形处理,这样会导致换脸后的图像存在失真。
发明内容
本申请实施例提供了一种图像换脸的方法、装置、***、设备和存储介质,能够使图像经换脸处理后得出的图像更加逼真。所述技术方案如下:
一方面,提供了一种图像换脸的方法,所述方法用于服务器,所述方法包括:
接收第一账户登录的第一终端发送的对应第二账户的第一换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合;
接收第二账户登录的第二终端发送的对应第一账户的第二换脸请求,其中,所述换脸请求中携带有第二人物的面部图像集合;
基于所述第一人物的面部图像集合和所述第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像,所述训练后的第二换脸模型用于将所述第二人物的面部图像换脸为所述第一人物的面部图像;
向所述第一终端发送所述训练后的第一换脸模型,向所述第二终端发送所述训练后的第二换脸模型。
可选的,基于所述第一人物的面部图像集合和所述第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,包括:
交替获取所述第一人物的面部图像集合和所述第二人物的面部图像集合中的面部图像;
每获取一个第一人物的面部图像,对所述第一人物的面部图像进行扭曲,得到扭曲后的第一人物的面部图像,将扭曲后的第一人物的面部图像输入特征提取模型,得到第一特征图像,将所述第一特征图像输入第二还原模型,得到第一输出图像,基于当前获取的第一人物的面部图像和所述第一输出图像,对所述特征提取模型和所述第二还原模型,进行参数更新;
每获取一个第二人物的面部图像,对所述第二人物的面部图像进行扭曲,得到扭曲后的第二人物的面部图像,将扭曲后的第二人物的面部图像输入特征提取模型,得到第二特征图像,将所述第二特征图像输入第一还原模型,得到第二输出图像,基于当前获取的第二人物的面部图像和所述第二输出图像,对所述特征提取模型和所述第一还原模型,进行参数更新;
在基于所有第一人物的面部图像和所有第二人物的面部图像对所述特征提取模型、所述第一还原模型和所述第二还原模型进行参数更新后,基于参数更新后的特征提取模型和参数更新后的第一还原模型,确定训练后的第一换脸模型,基于参数更新后的特征提取模型和参数更新后的第二还原模型,确定训练后的第二换脸模型。
可选的,所述向所述第一终端发送所述训练后的第一换脸模型,包括:
如果所述第一账户当前处于在线状态,则向所述第一终端发送所述训练后的第一换脸模型;
如果所述第一账户当前处于离线状态,则存储所述训练后的换脸模型,当检测到所述第一账户切换到在线状态时,向所述第一终端发送所述训练后的第一换脸模型;
所述向所述第二终端发送所述训练后的第二换脸模型,包括:
如果所述第二账户当前处于在线状态,则向所述第二终端发送所述训练后的第二换脸模型;
如果所述第二账户当前处于离线状态,则存储所述训练后的换脸模型,当检测到所述第二账户切换到在线状态时,向所述第二终端发送所述训练后的第二换脸模型。
可选的,所述向所述第一终端发送所述训练后的第一换脸模型之后,所述方法还包括:
当接收到所述第二终端发送的对应所述第一账户的换脸终止请求时,向所述第一终端发送对应所述训练后的第一换脸模型的删除通知。
另一方面,提供了一种图像换脸方法,所述方法用于终端,所述方法包括:
向服务器发送对应第二账户的换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合;
接收所述服务器发送的训练后的第一换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像;
当接收到对应所述第二账户的换脸指令时,将待换脸的第一图像输入所述训练后的第一换脸模型,得到换脸后的第二图像。
可选的,所述向所述服务器发送对应第二账户的换脸请求之前,所送方法还包括:
播放指导信息和/或显示指导信息,其中,所述指导信息用于指示所述第一人物做出不同的动作;
在播放指导信息和/或显示指导信息的过程中,拍摄所述第一人物的面部图像集合。
可选的,所述拍摄所述第一人物的面部图像集合,包括:
在关闭图像调整功能的状态下,拍摄所述第一人物的面部图像集合。
另一方面,提供了一种图像换脸的装置,所述装置应用于服务器,所述装置包括:
接收模块,接收第一账户登录的第一终端发送的对应第二账户的第一换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合;接收第二账户登录的第二终端发送的对应第一账户的第二换脸请求,其中,所述换脸请求中携带有第二人物的面部图像集合;
训练模块,基于所述第一人物的面部图像集合和所述第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像,所述训练后的第二换脸模型用于将所述第二人物的面部图像换脸为所述第一人物的面部图像;
发送模块,向所述第一终端发送所述训练后的第一换脸模型,向所述第二终端发送所述训练后的第二换脸模型。
可选的,所述训练模块,被用于:
交替获取所述第一人物的面部图像集合和所述第二人物的面部图像集合中的面部图像;
每获取一个第一人物的面部图像,对所述第一人物的面部图像进行扭曲,得到扭曲后的第一人物的面部图像,将扭曲后的第一人物的面部图像输入特征提取模型,得到第一特征图像,将所述第一特征图像输入第二还原模型,得到第一输出图像,基于当前获取的第一人物的面部图像和所述第一输出图像,对所述特征提取模型和所述第二还原模型,进行参数更新;
每获取一个第二人物的面部图像,对所述第二人物的面部图像进行扭曲,得到扭曲后的第二人物的面部图像,将扭曲后的第二人物的面部图像输入特征提取模型,得到第二特征图像,将所述第二特征图像输入第一还原模型,得到第二输出图像,基于当前获取的第二人物的面部图像和所述第二输出图像,对所述特征提取模型和所述第一还原模型,进行参数更新;
在基于所有第一人物的面部图像和所有第二人物的面部图像对所述特征提取模型、所述第一还原模型和所述第二还原模型进行参数更新后,基于参数更新后的特征提取模型和参数更新后的第一还原模型,确定训练后的第一换脸模型,基于参数更新后的特征提取模型和参数更新后的第二还原模型,确定训练后的第二换脸模型。
可选的,所述发送模块,被用于:
如果所述第一账户当前处于在线状态,则向所述第一终端发送所述训练后的第一换脸模型;
如果所述第一账户当前处于离线状态,则存储所述训练后的换脸模型,当检测到所述第一账户切换到在线状态时,向所述第一终端发送所述训练后的第一换脸模型;
如果所述第二账户当前处于在线状态,则向所述第二终端发送所述训练后的第二换脸模型;
如果所述第二账户当前处于离线状态,则存储所述训练后的换脸模型,当检测到所述第二账户切换到在线状态时,向所述第二终端发送所述训练后的第二换脸模型。
可选的,所述装置还包括:
删除模块,当接收到所述第二终端发送的对应所述第一账户的换脸终止请求时,向所述第一终端发送对应所述训练后的第一换脸模型的删除通知。
再一方面,提供了一种图像换脸的装置,所述装置应用于终端,所述装置包括:
发送模块,向服务器发送对应第二账户的换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合;
接收模块,接收所述服务器发送的训练后的第一换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像;
换脸模块,当接收到对应所述第二账户的换脸指令时,将待换脸的第一图像输入所述训练后的第一换脸模型,得到换脸后的第二图像。
可选的,所述装置还包括:
指导模块,播放指导信息和/或显示指导信息,其中,所述指导信息用于指示所述第一人物做出不同的动作;
拍摄模块,在播放指导信息和/或显示指导信息的过程中,拍摄所述第一人物的面部图像集合。
可选的,所述拍摄模块,被用于:
在关闭图像调整功能的状态下,拍摄所述第一人物的面部图像集合。
再一方面,提供了一种图像换脸的***,所述***包括第一终端、第二终端和服务器,其中:
所述服务器,接收第一账户登录的所述第一终端发送的对应第二账户的第一换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合;接收第二账户登录的所述第二终端发送的对应第一账户的第二换脸请求,其中,所述换脸请求中携带有第二人物的面部图像集合;基于所述第一人物的面部图像集合和所述第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像,所述训练后的第二换脸模型用于将所述第二人物的面部图像换脸为所述第一人物的面部图像;向所述第一终端发送所述训练后的第一换脸模型,向所述第二终端发送所述训练后的第二换脸模型。
所述第一终端,向所述服务器发送对应第二账户的换脸请求;接收所述服务器发送的训练后的第一换脸模型;当接收到对应所述第二账户的换脸指令时,将待换脸的第一图像输入所述训练后的第一换脸模型,得到换脸后的第二图像。
所述第二终端,向所述服务器发送对应第一账户的换脸请求;接收所述服务器发送的训练后的第二换脸模型;当接收到对应所述第一账户的换脸指令时,将待换脸的第二图像输入所述训练后的第二换脸模型,得到换脸后的第一图像。
再一方面,提供了一种计算机设备,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条指令,所述指令由所述一个或多个处理器加载并执行以实现所述图像换脸方法所执行的操作。
再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现所述图像换脸方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例生成换脸模型用于换脸处理,将第一图像输入换脸模型后即可得到换脸后的第二图像,无需使用预存的原人物的面部图像对目标人物的面部图像,进行局部图像替换,所以也不涉及对面部图像进行变形处理,从而,可以减小图像失真。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种实施环境的示意图;
图3是本申请实施例提供的一种实施环境的示意图;
图4是本申请实施例提供的一种实施环境的示意图;
图5是本申请实施例提供的一种图像换脸方法流程图;
图6是本申请实施例提供的一种图像换脸方法流程图;
图7是本申请实施例提供的一种图像换脸方法流程图;
图8是本申请实施例提供的一种具体实施的示意图;
图9是本申请实施例提供的一种图像换脸装置结构示意图;
图10是本申请实施例提供的一种图像换脸装置结构示意图;
图11是本申请实施例提供的终端结构示意图;
图12是本申请实施例提供的服务器结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1、图2、图3、图4是本发明实施例提供的一种图像换脸方法的实施环境,本申请提供图像换脸的方法可以由终端和服务器共同实现。终端可以运行有具有图像录制功能的应用程序,如直播应用程序、短视频应用程序等,终端可以具备麦克风、摄像头、扬声器等部件,终端具有通信功能,可以接入互联网,终端可以是手机、平板电脑、智能穿戴设备、台式计算机、笔记本电脑等。服务器可以是上述应用程序的后台服务器,服务器可以与终端建立通信。该服务器可以是一个单独的服务器也可以是一个服务器组,如果是单独的服务器,该服务器可以负责下述方案中的所有需要由服务器进行的处理,如果是服务器组,服务器组中的不同服务器分别可以负责下述方案中的不同处理,具体的处理分配情况可以由技术人员根据实际需求任意设置,此处不再赘述。
本申请实施例中提供的图像换脸的方法,可以将视频图像中的面部图像替换为其他人物的面部图像,该功能可以称为换脸功能。本申请实施例中以直播应用程序为例进行方案的详细说明,其它情况与之类似,不再赘述。终端上安装有直播应用程序。直播应用程序可以录制视频并将是视频上传至网络,在录制的过程中,还可以在视频中添加各种各样的特效,或者进行一些滤镜处理。
主播使用直播应用程序时,可以在直播应用程序中注册一个账户,所创建的账户可以关注其他账户,也可以被其他账户所关注,直播应用程序具有多个页面,如直播页面、直播列表页面等,主播自己的人物页面如图1所示,在人物页面有自己的账户昵称等个人信息,同时还包含一个换脸申请页面的跳转控件以及一个终止换脸申请页面的跳转控件。在换脸申请页面中,如图2所示,用户可以输入想要换脸的目标账户,用户可以手动填写目标账户也可以在关注账户列表或好友账户列表中选择目标账户。填写或者选择换脸申请的对象后,进入面部图像拍摄页面,如图3所示,主播可根据直播应用程序中的提示进行面部图像拍摄。在进行换脸直播之前,两个想换脸的主播之间进行沟通,双方都同意换脸后,两个主播可以将各自拍摄的面部图像集合发送至服务器,服务器可以基于两个主播上传的面部图像集合训练换脸模型,然后分别发送给主播,后续主播便可以开启换脸直播。
在主播想要进行换脸直播时,主播可以点击开启直播控件,如图4所示,在直播页面中点击换脸控件以触发换脸直播。直播间中的各观众就可以看到该主播换脸后的直播视频。
图5是本申请实施例提供的一种图像换脸的方法中服务器侧的流程图。参见图2,该流程包括:
步骤501,接收第一账户登录的第一终端发送的对应第二账户的第一换脸请求,其中,换脸请求中携带有第一人物的面部图像集合。
步骤502,接收第二账户登录的第二终端发送的对应第一账户的第二换脸请求,其中,换脸请求中携带有第二人物的面部图像集合。
步骤503,基于第一人物的面部图像集合和第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,其中,训练后的第一换脸模型用于将第一人物的面部图像换脸为第二人物的面部图像,训练后的第二换脸模型用于将第二人物的面部图像换脸为第一人物的面部图像。
步骤504,向第一终端发送训练后的第一换脸模型,向第二终端发送训练后的第二换脸模型。
图6是本申请实施例提供的一种图像换脸的方法中终端侧的流程图。参见图3,该流程包括:
步骤601,向服务器发送对应第二账户的换脸请求,其中,换脸请求中携带有第一人物的面部图像集合。
步骤602,接收服务器发送的训练后的第一换脸模型,其中,训练后的第一换脸模型用于将第一人物的面部图像换脸为第二人物的面部图像。
步骤603,当接收到对应第二账户的换脸指令时,将待换脸的第一图像输入训练后的第一换脸模型,得到换脸后的第二图像。
图7是本申请实施例提供的一种图像换脸的方法中服务器与终端之间交互的流程图。参见图7,该实施例包括:
步骤701,第一终端向服务器发送对应第二账户的第一换脸请求。
其中,换脸请求中携带有第一人物的面部图像集合,面部图像集合可以包括第一人物的多个面部图片,这些面部图片可以是通过拍照得到的,也可以是从视频中提取的多个视频帧。
在实施中,第一主播(即上述第一人物)想要进行换脸直播时,可以在终端运行直播应用程序,在直播应用程序中登陆第一账户,然后在直播应用程序中操作进入人物页面,点击换脸申请页面的跳转控件,跳转至换脸申请页面,在换脸申请页面进行换脸申请。首先第一主播可以在换脸申请页面中输入想要换脸的一个或多个账户(即第二账户)的账户标识,可以手动填写,也可以在关注账户列表或好友账户列表中选择,在执行完上述操作后点击确认控件,跳转至面部图像拍摄页面进行面部图像拍摄。在面部图像拍摄页面中,第一主播可以通过终端拍摄照片,也可以通过终端拍摄视频,将照片或视频中的视频帧组成面部图像集合。在面部图像拍摄完成后,终端可以生成第一换脸请求,在第一换脸请求中添加拍摄的面部图像集合和第二账户的账户标识,然后将第一换脸请求发送给服务器。在上述第一终端上进行的面部图像集合的拍摄中,关闭图像调整功能,如关闭美白、磨皮、滤镜等功能。
服务器在接收到来自第一终端的第一换脸请求后,可以有多种处理方式。
一种可能的处理方式,服务器可以根据第一换脸请求中的携带的第二账户的账户标识向第二账户所登录的第二终端发送通知,该通知中携带有第一账户的账户标识,用于告知第二账户当前有第一账户正请求与其进行换脸直播。第二终端接收到通知后可以在直播应用程序中向用户显示提示信息,以提示用户有其他用户请求换脸直播,该用户点击确认后,第二终端可以向服务器发送的对应第一账户的第二换脸请求,第二换脸请求携带第二人物的面部图像集合,可以作为对上述通知的确认消息。然后服务器再进行后续处理。
另一种可能的处理方式,服务器不向第二终端发送任何通知,只是等待第二终端向服务器发送的对应第一账户的第二换脸请求,当接收到第二换脸请求时,再进行后续处理。这种方式下,用户之间可以私下沟通好,然后分别发送请求,以实现换脸直播,或者,用户之间也可以不进行沟通,就是分别针对自己想换脸的用户发送换脸请求,如果刚巧有两个用户分别发送了与对方换脸的换脸请求,则可以实现换脸直播。
可选的,向服务器发送对应第二账户的换脸请求之前,终端可以播放指导信息和/或显示指导信息,在播放指导信息和/或显示指导信息的过程中,拍摄第一人物的面部图像集合。
其中,指导信息用于指示第一人物做出不同的动作。
在实施中,进行面部图像集合的拍摄时,直播应用程序会对图像拍摄进行指示。例如,在屏幕上方显示一段文字指示第一人物做出不同的动作,如点头、摇头、张嘴、闭嘴、微笑等,终端还可以通过播报语音的方式进行上述指示。
步骤702,第二终端向服务器发送的对应第一账户的第二换脸请求。
其中,换脸请求中携带有第二人物的面部图像集合。
在实施中,在第二终端向服务器发送对应第一账户的换脸请求之前,如果两换脸主播经协商同意换脸,第二终端的主播打开直播应用程序,首先登陆第二账户,进入到应用程序,然后进入人物页面,点击换脸申请页面跳转链接,跳转至换脸申请页面,在换脸申请页面进行换脸申请,首先第一主播可以在换脸申请页面中输入想要换脸的一个或多个账户(即第二账户)的账户标识,可以手动填写,也可以在关注账户列表或好友账户列表中选择,在执行完上述操作后点击确认控件,跳转至面部图像拍摄页面进行面部图像拍摄,在面部图像拍摄完成后,将第二终端的主播输入/选择的第一账户的账户标识与第二终端的主播拍摄的第二人物的面部图像集合一并发送到服务器。在上述第二终端上进行的面部图像集合的拍摄中,关闭图像调整功能,如关闭美白、磨皮、滤镜等功能。
可选的,向服务器发送对应第一账户的换脸请求之前,终端可以播放指导信息和/或显示指导信息,在播放指导信息和/或显示指导信息的过程中,拍摄第二人物的面部图像集合。
其中,指导信息用于指示第二人物做出不同的动作。
在实施中,进行面部图像集合的拍摄时,直播应用程序会对图像拍摄进行指示。例如,在屏幕上方显示一段文字指示第一人物做出不同的动作,如点头、摇头、张嘴、闭嘴、微笑等,终端还可以通过播报语音的方式进行上述指示。
步骤703,服务器基于第一人物的面部图像集合和第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型。
其中,训练后的第一换脸模型用于将第一人物的面部图像换脸为第二人物的面部图像,训练后的第二换脸模型用于将第二人物的面部图像换脸为第一人物的面部图像。
在实施中,服务器将接收到的第一账户换脸请求和第二账户换脸请求存储,并根据第一账户换脸请求内包含的账户标识寻找对应的第二账户,检测该第二账户换脸请求,如果该第二账户换脸请求中包含第一账户的账户标识,则判定第一账户和第二账户配对成功,将这两个账户的面部图像集合输入换脸模型。
可选的,基于第一人物的面部图像集合和第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,包括:
步骤一,交替获取第一人物的面部图像集合和第二人物的面部图像集合中的面部图像。
步骤二,每获取一个第一人物的面部图像,对第一人物的面部图像进行扭曲,得到扭曲后的第一人物的面部图像,将扭曲后的第一人物的面部图像输入特征提取模型,得到第一特征图像,将第一特征图像输入第二还原模型,得到第一输出图像,基于当前获取的第一人物的面部图像和第一输出图像,对特征提取模型和第二还原模型,进行参数更新。
步骤三,每获取一个第二人物的面部图像,对第二人物的面部图像进行扭曲,得到扭曲后的第二人物的面部图像,将扭曲后的第二人物的面部图像输入特征提取模型,得到第二特征图像,将第二特征图像输入第一还原模型,得到第二输出图像,基于当前获取的第二人物的面部图像和第二输出图像,对特征提取模型和第一还原模型,进行参数更新。
步骤四,在基于所有第一人物的面部图像和所有第二人物的面部图像对特征提取模型、第一还原模型和第二还原模型进行参数更新后,基于参数更新后的特征提取模型和参数更新后的第一还原模型,确定训练后的第一换脸模型,基于参数更新后的特征提取模型和参数更新后的第二还原模型,确定训练后的第二换脸模型。
其中,将第一人物的面部图像和第二人物的面部图像进行扭曲处理,是为了对第二还原模型和第一还原模型进行训练,通过输入扭曲的面部图像输出还原后的面部图像,再以原面部图像为基准训练还原模型,同时训练特征提取模型的特征提取能力。
在实施中,首先将相同角度、相同表情的第一人物的面部图像和第二人物的面部图像进行配对,然后将配对后的第一人物的面部图像进行扭曲处理,得到扭曲后的第一人物的面部图像,将扭曲后的第一人物的面部图像输入特征提取模型,特征提取模型对该扭曲的第一人物的面部图像进行特征提取,得到第一特征图像,将第一特征图像输入第二还原模型,第二还原模型对第一特征图像进行还原,得到第一输出图像,基于当前获取的第一人物的面部图像和第一输出图像,对特征提取模型和第二还原模型,进行参数更新。
在完成一次特征提取模型和第二还原模型训练后,将配对后的第二人物的面部图像进行扭曲处理,得到扭曲后的第二人物的面部图像,将扭曲后的第二人物的面部图像输入特征提取模型,特征提取模型对该扭曲的第二人物的面部图像进行特征提取,得到第二特征图像,将第二特征图像输入第一还原模型,第一还原模型对第二特征图像进行还原,得到第二输出图像,基于当前获取的第二人物的面部图像和第二输出图像,对特征提取模型和第一还原模型,进行参数更新。
将上述训练循环进行,直到将所有面部图像集合都输入到换脸模型中,停止该循环,训练后的特征提取模型和第一还原模型是第一换脸模型,训练后的特征提取模型和第二还原模型是第二换脸模型。
步骤704,服务器向第一终端发送训练后的第一换脸模型,向第二终端发送训练后的第二换脸模型。
在实施中,当换脸模型训练完成时,将换脸模型存储,生成存储地址,服务器根据第一终端和第二终端发送的换脸请求中携带的账户标识,将该换脸模型的存储地址和训练完成的消息发送至第二终端。向第一终端发送训练后的第一换脸模型的过程与之类似就不再一一赘述。
可选的,向第一终端发送训练后的换脸模型时,如果第一账户当前处于在线状态,则向第一终端发送训练后的第一换脸模型;如果第一账户当前处于离线状态,则存储训练后的换脸模型,当检测到第一账户切换到在线状态时,向第一终端发送训练后的第一换脸模型。
在实施中,当第一账户当前处于在线状态时,服务器将换脸请求通过的消息及换脸模型的存储地址发送至第一帐户专属的网络存储空间,第一终端按照一定的周期对第一帐户专属的网络存储空间进行检测,当检测到该换脸请求通过的消息时,第一终端自动根据换脸模型的存储地址进行下载。
当第一账户当前处于离线状态时,服务器将脸请求通过的消息发送至第一帐户专属的网络存储空间,将脸请求通过的消息及换脸模型的存储地址存储在第一帐户专属的网络存储空间。当第一账户切换到在线状态时,第一终端按照一定的周期性对第一帐户专属的网络存储空间进行检测,当检测到该换脸消息时,第一终端自动根据换脸模型的存储地址进行下载。
可选的,向第一终端发送训练后的第一换脸模型之后,当接收到第二终端发送的对应第一账户的换脸终止请求时,向第一终端发送对应训练后的第一换脸模型的删除通知。
在实施中,换脸模型下载到第一终端后,第二终端的主播进入终止换脸申请页面填写或者选择在关注列表中的主播作为换脸终止请求的对象,点击确定后,第二终端向服务器发送换脸终止请求。服务器在接收到第二终端的换脸终止请求时,根据服务器内存储的第一账户的账户标识将该换脸模型的删除通知发送至第一帐户专属的网络存储空间。第一终端按照一定的周期对第一帐户专属的网络存储空间进行检测,当检测到有换脸模型的删除通知,直接删除存储在第一终端中的第一换脸模型。
步骤705,当接收到对应第二账户的换脸指令时,将待换脸的第一图像输入训练后的第一换脸模型,得到换脸后的第二图像。
在实施中,第一终端接收到发送的换脸模型后,第一终端的人物在进行直播时,点击换脸效果,出现换脸模型的选择页面,选择对应第二账户换脸模型的换脸按钮。摄像头不断获取第一人物的第一图像,在获取时为了提高换脸处理的准确性,可以关闭图像调整功能,将第一图像输入训练后的换脸模型,首先将第一图像输入特征提取模型,将第一图像中的第一人物的面部图像信息替换成第二人物的面部图像信息,然后将该面部图像信息输入第二还原模型进行还原,得到第二图像,换脸模型持续输出换脸后的第二图像,再对第二图像添加图像调整功能对呈现出的任务形象进行美化。观看直播的观众在观看第一人物的直播时,看到的是第二人物的脸。
步骤706,当接收到对应第一账户的换脸指令时,将待换脸的第二图像输入训练后的第二换脸模型,得到换脸后的第一图像。
在实施中,第二终端接收到发送的换脸模型后,第二终端的人物在进行直播时,点击换脸效果,出现换脸模型的选择页面,选择对应第一账户换脸模型的换脸按钮。摄像头不断获取第二人物的第二图像,在获取时为了提高换脸处理的准确性,可以关闭图像调整功能,将第二图像输入训练后的换脸模型,换脸模型通过将第二人物的面部图像经编码器识别将第二人物的面部图像信息替换成第一人物面部图像信息,将改面部图像信息输入解码器进行还原得到第一图像,换脸模型持续输出换脸后的第二图像,再对第一图像添加图像调整功能对呈现出的任务形象进行美化。观看直播的观众在观看第二人物的直播时,看到的是第一人物的脸。
图8是本申请实施例提供的一种具体实施示意图,两个终端的用户录制素材,向服务器发送申请,服务器接收到申请后对申请进行撮合配对,并将该换脸任务加入任务队列,然后进行模型训练,两个终端在用户服务器进行上述操作时需要等待几天的时间,在训练模型训练完成后,向两个中断源下发模型训练完成的通知,两个终端在接收到通知后下载该训练模型,在下载完成后用户的直播界面中出现该换脸控件,即换脸功能入口。
本申请实施例生成换脸模型用于换脸处理,将第一图像输入换脸模型后即可得到换脸后的第二图像,无需使用预存的原人物的面部图像对目标人物的面部图像,进行局部图像替换,所以也不涉及对面部图像进行变形处理,从而,可以减小图像失真。
本申请实施例提供一种图像换脸的装置,该装置可以是上述实施例中的服务器,如图9所示,所述装置包括:
接收模块910,接收第一账户登录的第一终端发送的对应第二账户的第一换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合;接收第二账户登录的第二终端发送的对应第一账户的第二换脸请求,其中,所述换脸请求中携带有第二人物的面部图像集合。
训练模块920,基于所述第一人物的面部图像集合和所述第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像,所述训练后的第二换脸模型用于将所述第二人物的面部图像换脸为所述第一人物的面部图像。
发送模块930,向所述第一终端发送所述训练后的第一换脸模型,向所述第二终端发送所述训练后的第二换脸模型。
可选的,基于所述第一人物的面部图像集合和所述第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,所述训练模块920,被用于:
交替获取所述第一人物的面部图像集合和所述第二人物的面部图像集合中的面部图像。
每获取一个第一人物的面部图像,对所述第一人物的面部图像进行扭曲,得到扭曲后的第一人物的面部图像,将扭曲后的第一人物的面部图像输入特征提取模型,得到第一特征图像,将所述第一特征图像输入第二还原模型,得到第一输出图像,基于当前获取的第一人物的面部图像和所述第一输出图像,对所述特征提取模型和所述第二还原模型,进行参数更新。
每获取一个第二人物的面部图像,对所述第二人物的面部图像进行扭曲,得到扭曲后的第二人物的面部图像,将扭曲后的第二人物的面部图像输入特征提取模型,得到第二特征图像,将所述第二特征图像输入第一还原模型,得到第二输出图像,基于当前获取的第二人物的面部图像和所述第二输出图像,对所述特征提取模型和所述第一还原模型,进行参数更新。
在基于所有第一人物的面部图像和所有第二人物的面部图像对所述特征提取模型、所述第一还原模型和所述第二还原模型进行参数更新后,基于参数更新后的特征提取模型和参数更新后的第一还原模型,确定训练后的第一换脸模型,基于参数更新后的特征提取模型和参数更新后的第二还原模型,确定训练后的第二换脸模型。
可选的,所述向所述第一终端发送所述训练后的第一换脸模型,所述发送模块930,被用于:
如果所述第一账户当前处于在线状态,则向所述第一终端发送所述训练后的第一换脸模型。
如果所述第一账户当前处于离线状态,则存储所述训练后的换脸模型,当检测到所述第一账户切换到在线状态时,向所述第一终端发送所述训练后的第一换脸模型。
如果所述第二账户当前处于在线状态,则向所述第二终端发送所述训练后的第二换脸模型。
如果所述第二账户当前处于离线状态,则存储所述训练后的换脸模型,当检测到所述第二账户切换到在线状态时,向所述第二终端发送所述训练后的第二换脸模型。
可选的,所述向所述第一终端发送所述训练后的第一换脸模型之后,所述装置还包括:
删除模块,当接收到所述第二终端发送的对应所述第一账户的换脸终止请求时,向所述第一终端发送对应所述训练后的第一换脸模型的删除通知。
本申请实施例提供一种图像换脸的装置,该装置可以是上述实施例中的终端,如图10所示,所述装置包括:
发送模块1010,向服务器发送对应第二账户的换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合。
接收模块1020,接收所述服务器发送的训练后的第一换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像。
换脸模块1030,当接收到对应所述第二账户的换脸指令时,将待换脸的第一图像输入所述训练后的第一换脸模型,得到换脸后的第二图像。
可选的,所述向服务器发送对应第二账户的换脸请求之前,所述装置还包括:
指导模块,播放指导信息和/或显示指导信息,其中,所述指导信息用于指示所述第一人物做出不同的动作。
拍摄模块,在播放指导信息和/或显示指导信息的过程中,拍摄所述第一人物的面部图像集合。
可选的,所述拍摄所述第一人物的面部图像集合,所述拍摄模块,被用于:
在关闭图像调整功能的状态下,拍摄所述第一人物的面部图像集合。
本申请实施例生成换脸模型用于换脸处理,将第一图像输入换脸模型后即可得到换脸后的第二图像,无需使用预存的原人物的面部图像对目标人物的面部图像,进行局部图像替换,所以也不涉及对面部图像进行变形处理,从而,可以减小图像失真。
需要说明的是:上述实施例提供的图像换脸的装置在进行图像换脸时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图像换脸的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供一种图像换脸的***,所述***包括第一终端、第二终端和服务器,其中:
所述服务器,接收第一账户登录的第一终端发送的对应第二账户的第一换脸请求,其中,所述换脸请求中携带有第一人物的面部图像集合;接收第二账户登录的第二终端发送的对应第一账户的第二换脸请求,其中,所述换脸请求中携带有第二人物的面部图像集合;基于所述第一人物的面部图像集合和所述第二人物的面部图像集合,进行模型训练,得到训练后的第一换脸模型和训练后的第二换脸模型,其中,所述训练后的第一换脸模型用于将所述第一人物的面部图像换脸为所述第二人物的面部图像,所述训练后的第二换脸模型用于将所述第二人物的面部图像换脸为所述第一人物的面部图像;向所述第一终端发送所述训练后的第一换脸模型,向所述第二终端发送所述训练后的第二换脸模型。
所述第一终端,向所述服务器发送对应第二账户的换脸请求;接收所述服务器发送的训练后的第一换脸模型;当接收到对应所述第二账户的换脸指令时,将待换脸的第一图像输入所述训练后的第一换脸模型,得到换脸后的第二图像。
所述第二终端,向所述服务器发送对应第一账户的换脸请求;接收所述服务器发送的训练后的第二换脸模型;当接收到对应所述第一账户的换脸指令时,将待换脸的第二图像输入所述训练后的第二换脸模型,得到换脸后的第一图像。
本申请实施例生成换脸模型用于换脸处理,将第一图像输入换脸模型后即可得到换脸后的第二图像,无需使用预存的原人物的面部图像对目标人物的面部图像,进行局部图像替换,所以也不涉及对面部图像进行变形处理,从而,可以减小图像失真。
图11是本申请实施例提供的一种终端的结构示意图。该终端可以是上述实施例中的第一终端或第二终端。该终端1100可以是:智能手机、平板电脑、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1100包括有:一个或多个处理器1101和一个或多个存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的图像换脸方法。
在一些实施例中,终端1100还可选包括有:***设备接口1103和至少一个***设备。处理器1101、存储器1102和***设备接口1103之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1103相连。具体地,***设备包括:射频电路1104、显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
***设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和***设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和***设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位终端1100的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1108可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
加速度传感器1111可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1112可以检测终端1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对终端1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1113可以设置在终端1100的侧边框和/或显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在显示屏1105的下层时,由处理器1101根据用户对显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置终端1100的正面、背面或侧面。当终端1100上设置有物理按键或厂商Logo时,指纹传感器1114可以与物理按键或厂商Logo集成在一起。
光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制显示屏1105的显示亮度。具体地,当环境光强度较高时,调高显示屏1105的显示亮度;当环境光强度较低时,调低显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1116,也称距离传感器,通常设置在终端1100的前面板。接近传感器1116用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图12是本申请实施例提供的一种服务器的结构示意图,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(central processing units,CPU)1201和一个或多个的存储器1202,其中,所述一个或多个存储器1202中存储有至少一条指令,所述至少一条指令由所述一个或多个处理器1201加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器1200还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1200还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述实施例中的图像换脸方法。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。