一种表情迁移并动画化的方法及***
技术领域
本发明涉及表情迁移和表情捕捉技术领域,具体涉及一种表情迁移并动画化的方法及***。
背景技术
早期的换脸软件通过即时抓取摄像头视频中的人脸关键点,将表情、头部姿态等信息转化到三维虚拟化角色身上,比如一只猫、一个虚拟卡通人物上,然后在使用即时视频通讯软件时,其他人看到的就是拥有使用者当前表情的虚拟形象了。
随着换脸、表情迁移的科技浪潮汹涌而至,人们不再满足于使用卡通形象、动漫人物来充当自己的化身,而是希望使用真人的形象。但是将源脸替换到目标脸上,需要使用大量的双方人脸图像的数据进行事先的表情迁移训练,但是在即时的视频通讯应用场景中,根本无法获取双方大量的人脸图像数据集,也就无法对表情的真人迁移进行事先的模型训练。而且模型训练需要足够的训练时间,在即时的视频通讯应用场景中,也不具备模型训练该有的时间条件,所以现有技术中的表情迁移方法无法实现实时的表情迁移,无法满足人们希望以“真人”作为替身进行即时的角色变换的需求。
发明内容
本发明的目的在于提供一种表情迁移并动画化的方法及***,以解决上述技术问题。
为达此目的,本发明采用以下技术方案:
提供一种表情迁移并动画化的方法,包括:
给定一源图像和—驱动视频;
通过—预先训练的表情迁移并动画化模型预测所述源图像中的第一人脸关键点;
通过所述表情迁移并动画化模型预测所述驱动视频中的第二人脸关键点,并预测得到关联各所述第二人脸关键点的人脸运动姿态;
根据所述第二人脸关键点和所述第一人脸关键点的映射关系,将关联所述第二人脸关键点的所述人脸运动姿态迁移到具有映射关系的所述第一人脸关键点上,以实现静态的所述源图像上的物体跟随所述驱动视频中的人脸运动姿态作同步运动。
作为本发明的一种优选方案,预测关联各所述第二人脸关键点的所述人脸运动姿态的方法为:
对所述驱动视频中的驱动图像上相邻的所述第二人脸关键点进行局部仿射变换,以模拟出所述驱动图像上的人脸运动姿态;
按时间轴提取模拟出的所述人脸运动姿态对应的人脸运动姿态特征,得到关联所述第二人脸关键点的多张人脸运动姿态特征图;
将关联同一个所述第二人脸关键点的各所述人脸运动姿态特征图按时间轴进行视频合成,得到关联所述第二人脸关键点的所述人脸运动姿态。
作为本发明的一种优选方案,将所述人脸运动姿态从所述驱动视频上迁移到所述源图像上的方法为:
步骤A1,判断所述第一人脸关键点和所述第二人脸关键点之间是否存在映射关系,
若是,则进入步骤A2;
若否,则不执行人脸运动姿态迁移;
步骤A2,将关联所述第二人脸关键点的所述人脸运动姿态迁移到与所述第二人脸关键点具有映射关系的所述第一人脸关键点上;
步骤A3,按照时间帧顺序将迁移的所述人脸运动姿态合成为人脸运动视频,以实现静态的所述源图像跟随所述驱动视频中的所述人脸运动姿态同步运动的动画化。
作为本发明的一种优选方案,所述表情迁移并动画化模型预测所述驱动视频中的所述第二人脸关键点的同时还对所述驱动视频中的驱动图像上是否存在人脸遮挡区域进行检测,当检测到所述驱动图像上存在遮挡人脸的区域时,所述表情迁移并动画化模型将对遮挡人脸的区域进行图像修复,修复人脸遮挡区域的具体方法包括如下步骤:
步骤B1,在检测到当前帧图像存在遮挡人脸的区域时截取当前帧图像并存储;
步骤B2,提取所述当前帧图像上遮挡住人脸的区域图像,并对所述区域图像在所述当前帧图像上的所处位置进行标注;
步骤B3,截取所述当前帧图像的前后帧图像并存储;
步骤B4,将所述当前帧图像与当前帧的前一帧图像或后一帧图像进行图像比对,以判断所述前一帧图像或所述后一帧图像上是否存在人脸遮挡区域,
若是,则以所述前一帧图像或所述后一帧图像为当前帧图像并返回所述步骤B1;
若否,则进入步骤B5;
步骤B5,在所述前一帧图像或所述后一帧图像上匹配出与所述当前帧图像中遮挡住人脸的所述区域图像相同位置处的匹配图像;
步骤B6,从所述前一帧图像或所述后一帧图像上提取出所述匹配图像并存储;
步骤B7,将所述匹配图像填充到所述步骤B2中标注的所述当前帧图像遮挡住人脸的所述区域图像的位置处,以实现对所述当前帧图像的修复。
作为本发明的一种优选方案,训练所述表情迁移并动画化模型的样本数据集为VoxCeleb数据集或UvA-Nemo数据集。
本发明还提供了一种表情迁移并动画化的***,可实现上述方法,该***包括:
源图像输入模块,用于提供给用户输入希望动画化的所述源图像;
驱动视频输入模块,用于提供给所述用户输入所述驱动视频;
第一人脸关键点检测模块,连接所述源图像输入模块,用于自动检测所述源图像上的所述第一人脸关键点;
第二人脸关键点检测模块,连接所述驱动视频输入模块,用于检测所述驱动视频中的所述第二人脸关键点;
相邻关键点局部仿射变换模块,连接所述第二人脸关键点检测模块,用于对相邻的所述第二人脸关键点进行局部仿射变换,以模拟出所述驱动视频中的人脸运动姿态;
人脸运动姿态特征提取模块,连接所述相邻关键点局部仿射变换模块,用于提取模拟出的所述人脸运动姿态对应的人脸运动姿态特征,得到关联所述第二人脸关键点的多张人脸运动姿态特征图;
人脸运动姿态合成模块,连接所述人脸运动姿态特征提取模块,用于将关联所述第二人脸关键点的多张所述人脸运动姿态特征图按时间轴进行视频合成,得到关联所述第二人脸关键点的所述人脸运动姿态;
人脸关键点映射关系确定模块,分别连接所述第一人脸关键点检测模块和所述第二人脸关键点检测模块,用于确定所述第一人脸关键点和所述第二人脸关键点之间的映射关系;
人脸运动姿态迁移模块,分别连接所述人脸运动姿态合成模块和所述人脸关键点映射关系确定模块,用于将所述人脸运动姿态从所述第二人脸关键点上迁移到与所述第二人脸关键点具有映射关系的所述第一人脸关键点上。
作为本发明的一种优选方案,所述***还包括:
遮挡区域检测模块,连接所述驱动视频输入模块,用于检测所述驱动视频中的驱动图像上是否存在遮挡住人脸的区域;
图像修复模块,连接所述遮挡区域检测模块,用于根据当前帧的前后帧图像信息,对当前帧图像中遮挡住人脸的区域进行图像修复。
作为本发明的一种优选方案,所述图像修复模块中具体包括:
当前帧图像截取单元,用于在检测到当前帧图像存在遮挡人脸的区域时截取当前帧图像并存储;
人脸遮挡区域提取单元,连接所述当前帧图像截取单元,用于提取所述当前帧图像中的遮挡住人脸的区域图像;
人脸遮挡区域位置标注单元,连接所述人脸遮挡区域提取单元,用于对提取的所述区域图像在所述当前帧图像上的所处位置进行标注;
前后帧图像截取单元,用于截取所述当前帧图像的前后帧图像并存储;
人脸遮挡区域比对单元,分别连接所述人脸遮挡区域提取单元和所述前后帧图像截取单元,用于将遮挡人脸的所述区域图像与当前帧的前一帧图像或后一帧图像进行图像比对,以确定所述前一帧图像或所述后一帧图像中是否同样存在遮挡人脸的区域;
人脸遮挡区域匹配单元,分别连接所述人脸遮挡区域比对单元、所述当前帧图像截取单元和所述前后帧图像截取单元,用于在所述前一帧图像或所述后一帧图像中不存在人脸遮挡区域时,在所述前一帧图像或所述后一帧图像上匹配出与所述当前帧图像中遮挡住人脸的所述区域图像相同位置处的匹配图像;
匹配图像提取单元,连接所述人脸遮挡区域匹配单元,用于从所述前一帧图像或所述后一帧图像上提取出所述匹配图像并存储;
图像填充单元,连接所述匹配图像提取单元,用于将所述匹配图像填充到所述当前帧图像中的遮挡住人脸的所述区域图像的所处位置处,以实现对所述当前帧图像的修复。
本发明实现了对表情的实时迁移并动画化,可以满足人们即时“变脸”的需求,本发明通过一预先训练的表情迁移并动画化模型完成了对表情实时迁移的全过程,整个表情迁移并动画化过程避免了传统的表情迁移方法需要事先进行模型训练,以及由于需要大量的训练数据以及较长地训练时间而无法实现表情实时迁移的技术问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例所述的表情迁移并动画化的方法步骤图;
图2是预测所述第二人脸关键点对应的所述人脸运动姿态的方法步骤图;
图3是将所述人脸运动姿态从所述驱动图像上迁移到所述源图像上的方法步骤图;
图4是修复所述驱动图像上的人脸遮挡区域的方法步骤图;
图5是本发明—实施例所述的表情迁移并动画化的***结构示意图;
图6是所述***中的所述图像修复模块的内部结构示意图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本专利的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若出现术语“上”、“下”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
在本发明的描述中,除非另有明确的规定和限定,若出现术语“连接”等指示部件之间的连接关系,该术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个部件内部的连通或两个部件的相互作用关系。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本发明实施例提供的表情迁移并动画化的方法,请参照图1,包括如下步骤:
步骤S1,给定一源图像和一驱动视频;
步骤S2,通过一预先训练的表情迁移并动画化模型预测源图像中的第一人脸关键点;
步骤S3,通过表情迁移并动画化模型预测驱动视频中的第二人脸关键点,并预测得到关联各第二人脸关键点的人脸运动姿态;
步骤S4,根据第二人脸关键点和第一人脸关键点的映射关系,将关联第二人脸关键点的人脸运动姿态迁移到具有映射关系的第一人脸关键点上,第一人脸关键点按时间帧同步于对应的第二人脸关键点作人脸运动,以实现静态的源图像上的物体(人脸)跟随驱动视频中的人脸运动姿态作同步运动。作为一种优选方案,第一人脸关键点和第二人脸关键点的映射关系可以通过人脸关键点的类型确定,比如第二人脸关键点为嘴巴,那么与该第二人脸关键点具有映射关系的第一人脸关键点同样为嘴巴。
请参照图2,预测关联各第二人脸关键点的人脸运动姿态的方法包括:
步骤L1,对驱动视频中的驱动图像上相邻的第二人脸关键点进行具体仿射变换,以模拟出驱动图像上的人脸运动姿态;对相邻关键点进行仿射变换的方法为现有方法,所以具体的仿射变换过程在此不做阐述;
步骤L2,按时间轴提取模拟出的人脸运动姿态对应的人脸运动姿态特征,得到关联第二人脸关键点的多张人脸运动姿态特征图;本实施例中,可以通过现有的特征提取器提取人脸运动姿态对应的人脸运动姿态特征图,所以关于人脸运动姿态特征的具体提取过程在此不做阐述;
步骤L3,将关联同一个第二人脸关键点的各人脸运动姿态特征图按时间轴进行视频合成,得到关联第二人脸关键点的人脸运动姿态。
请参照图3,将人脸运动姿态从驱动视频中迁移到源图像上的方法包括:
步骤A1,确定第一人脸关键点和第二人脸关键点之间是否存在映射关系,
若是,则进入步骤A2;
若否,则不执行人脸运动姿态迁移;
步骤A2,将关联第二人脸关键点的人脸运动姿态迁移到与第二人脸关键点具有映射关系的第一人脸关键点上,以实现静态的源图像上的物体跟随驱动视频中的人脸运动姿态作同步运动。
上述技术方案中,优选地,迁移人脸运动姿态可通过表情迁移并动画化模型实现。优选地,表情迁移并动画化模型为一阶动画模型,一阶动画模型为现有的可实现表情迁移的模型,所以关于一阶动画模型迁移表情的具体过程在此不作阐述。
由于驱动视频的帧图像中可能存在部分人脸关键点被遮挡的情况,遮挡区域影响对人脸关键点的检测,进而影响对人脸运动姿态的迁移,所以为了解决这个问题,本实施例中提供的表情迁移并动画化模型在预测驱动视频中的第二人脸关键点的同时还对驱动视频中的驱动图像上是否存在人脸遮挡区域进行检查,当检测到驱动图像上存在遮挡人脸的区域时,表情迁移并动画化模型将对遮挡人脸的区域进行图像修复。请参照图4,修复人脸遮挡区域的具体方法包括如下步骤:
步骤B1,在检测到当前帧图像存在遮挡人脸的区域时截取当前帧图像并存储;
步骤B2,提取当前帧图像上遮挡住人脸的区域图像,并对该区域图像在当前帧图像上的所处位置进行标注;
步骤B3,截取当前帧图像的前后帧图像并存储;
步骤B4,将当前帧图像与当前帧图像的前一帧图像或后一帧图像进行图像比对,以判断前一帧图像或后一帧图像上是否存在人脸遮挡区域,
若是,则以前一帧图像或后一帧图像为当前帧图像并返回步骤B1;
若否,则进入步骤B5;
步骤B5,在前一帧图像或后一帧图像上匹配出与当前帧图像中遮挡住人脸的区域图像相同位置处的匹配图像;匹配图像中保留了第二人脸关键点;
步骤B6,从前一帧图像或后一帧图像上提取出匹配图像并存储;
步骤B7,将匹配图像填充到步骤B2中标注的当前帧图像遮挡住人脸的区域图像的所处位置处,以实现对当前帧图像的修复。图像修复后便可将第二人脸关键点上的人脸运动姿态迁移到具有映射关系的第一人脸关键点上,解决了第二人脸关键点上人脸运动姿态缺失而无法进行正常的表情迁移的技术问题。
由于训练表情迁移并动画化模型需要大量的训练数据,但是在一些对“变脸”实时性要求较高地应用场景中,比如即时视频通讯中,很难获取到大量的训练数据,为了解决这个问题,本发明以现有的VoxCeleb数据集或UvA-Nemo数据集作为表情迁移并动画化模型的训练样本。VoxCeleb和UvA-Nemo数据集为目前使用较广的人脸图像数据集,关于VoxCeleb和UvA-Nemo数据集的具体介绍在此不作阐述。本发明以现有的人脸图像数据集为训练样本,预先训练好表情迁移并动画化模型,解决了“变脸”实时性的问题。由于对表情迁移并动画化模型的训练过程并非本发明要求权利保护的范围,所以关于表情迁移并动画化的具体训练过程在此不做阐述。
请参照图5,本发明还提供了一种表情迁移并动画化的***,可实现上述的方法,该***包括:
源图像输入模块1,用于提供给用户输入希望动画化的源图像;
驱动视频输入模块2,用于提供给用户输入驱动视频;
第一人脸关键点检测模块3,连接源图像输入模块1,用于检测源图像上的第一人脸关键点;
第二人脸关键点检测模块4,连接驱动视频输入模块2,用于检测驱动视频中的第二人脸关键点;
相邻关键点局部仿射变换模块5,连接第二人脸关键点检测模块4,用于对相邻的第二人脸关键点进行局部仿射变换,以模拟出驱动视频中的人脸运动姿态;
人脸运动姿态特征提取模块6,连接相邻关键点局部仿射变换模块5,用于提取模拟出的人脸运动姿态对应的人脸运动姿态特征,得到关联第二人脸关键点的多张人脸运动姿态特征图;
人脸运动姿态合成模块7,连接人脸运动姿态特征提取模块6,用于将关联第二人脸关键点的多张人脸运动姿态特征图按时间轴进行视频合成,得到关联第二人脸关键点的人脸运动姿态;
人脸关键点映射关系确定模块8,分别连接第一人脸关键点检测模块3和第二人脸关键点检测模块4,用于确定第一人脸关键点和第二人脸关键点之间的映射关系;
人脸运动姿态迁移模块9,分别连接人脸运动姿态合成模块7和人脸关键点映射关系确定模块8,用于将人脸运动姿态从第二人脸关键点上迁移到与第二人脸关键点具有映射关系的第一人脸关键点上;
由于驱动视频的帧图像中可能存在部分人脸关键点被遮挡的情况,遮挡区域影响对人脸关键点的检测,进而影响对人脸运动姿态的迁移,所以为了解决这个问题,本实施例提供的***还包括:
遮挡区域检测模块10,连接驱动视频输入模块2,用于检测驱动视频中的驱动图像上是否存在遮挡住人脸(包括部分遮挡)的区域;
图像修复模块11,连接遮挡区域检测模块10,用于根据当前帧的前后帧图像信息,对当前帧图像中遮挡住人脸的区域进行修复。具体地,请参照图6,图像修复模块11中具体包括:
当前帧图像截取单元111,用于在检测到当前帧图像存在遮挡人脸的区域时截取当前帧图像并存储;
人脸遮挡区域提取单元112,连接当前帧图像截取单元111,用于提取当前帧图像中的遮挡住人脸的区域图像;
人脸遮挡区域位置标注单元113,连接人脸遮挡区域提取单元112,用于对提取的区域图像在当前帧图像上的所处位置进行标注;
前后帧图像截取单元114,用于截取当前帧图像的前后帧图像并存储;
人脸遮挡区域比对单元115,分别连接人脸遮挡区域提取单元112和前后帧图像截取单元114,用于将遮挡人脸的区域图像与当前帧的前一帧图像或后一帧图像进行图像比对,以确定前一帧图像或后一帧图像中是否同样存在遮挡人脸的区域;
人脸遮挡区域匹配单元116,分别连接人脸遮挡区域比对单元115、当前帧图像截取单元111和前后帧图像截取单元114,用于在前一帧图像或后一帧图像中不存在人脸遮挡区域时,在前一帧图像或后一帧图像上匹配出与当前帧图像中遮挡住人脸的区域图像相同位置处的匹配图像;匹配图像保留了前一帧图像或后一帧图像上的与当前帧图像遮挡住人脸的区域图像相同位置处的原始图像信息;为了确保能够匹配到当前帧图像与前一帧图像或后一帧图像上的相同位置,截取的当前帧图像和前一帧图像或后一帧图像的图像尺寸一致;
匹配图像提取单元117,连接人脸遮挡区域匹配单元116,用于从前一帧图像或后一帧图像上提取出匹配图像并存储;
图像填充单元118,连接匹配图像提取单元117,用于将匹配图像填充到当前帧图像中的遮挡住人脸的区域图像的所处位置处,以实现对当前帧图像的修复。
综上,本发明实现了对表情的实时迁移,满足了人们对于表情“真人化”实时迁移的需求。
需要声明的是,上述具体实施方式仅仅为本发明的较佳实施例及所运用技术原理。本领域技术人员应该明白,还可以对本发明做各种修改、等同替换、变化等等。但是,这些变换只要未背离本发明的精神,都应在本发明的保护范围之内。另外,本申请说明书和权利要求书所使用的一些术语并不是限制,仅仅是为了便于描述。