一种基于深度学习的表情包生成系统及方法
技术领域
本发明属于表情包生成系统技术领域,尤其是一种基于深度学习 的表情包生成系统及方法,本发明利用了人脸检测和人脸特征点标记 技术定位表情,在表情移植方面,利用了深度学习技术,深度学习基 础区别于传统的图像处理方法,它通过计算机自主学习来解决问题, 可以根据问题自动建立模型。
背景技术
随着智能手机的普及和社交软件形式的多样化,为了丰富聊天内 容,增强用户间的交流,很多即时通信软件都提供了表情信息,例如, 诸多的表情包;用户可以选择表情包中的各种表情进行信息发送,通 过其中的表情信息来表达难以或不便用文字描述的情绪和信息;
现有的人像表情包制作,都是截取人面部某个特定的表情,生成 表情包,同样的表情移植到另一个人的脸上会有更大的乐趣,也增强 了表情包的交互性;现有技术实现了人脸交换功能,这种技术基于人 脸识别将人脸从人形中分割出来,替换到另一个人形中,但这种拼贴 效果图片的处理痕迹较为明显,且只是人脸的移植并没有真正做到表 情的移植,和理想效果相差较远;详细来说现有技术的主要缺点包括:
1.对数据库中人脸特征点进行检索,计算每个特征点距离平均位 置的偏移量,根据这个偏移量在另一个视频的数据库中找到最相近的 两个再进行替换,计算量很大,对于硬件要求较高且效率较低,无法 进行表情包的实时生成;
2.在找到特征点相近的人脸后,将人脸部分整体移植而不是表情 的移植,虽然可以针对光线等进行调节,但实现的效果并不好,图片 处理痕迹比较重,与真实人像差异较大;
现有技术中,也出现一种根据特征点换脸的方式,例如:专利号 为:CN201610301352.X的发明专利,一种视频移植换脸的方法,该 发明公开了一种视频移植换脸的方法,包括步骤:给定两段带有人脸 的视频A和视频B,欲用A视频中的人脸来替换B视频中的人脸;检 测出视频A中有人脸的帧,对视频中人脸做特征点定位,并将结果保 存在数据库中;检测出视频B中有人脸的帧,对视频中人脸做特征点 定位,并根据所检测出的人脸特征点,在视频A所产生的数据库中寻 找与其最为相似的脸;在利用定位出的人脸的特征点的基础上,将人 脸区域分成多个三角区域,并根据特征点的坐标计算出所有特征点的目标特征点,依据特征点和目标特征点的位置对人脸划分的所有三角 区域做仿射变换,再用变形后的视频A的脸替换掉视频B的脸;对人 脸边缘和视频颜色做出调整,从而实现对视频内容的非线性编辑;
虽然该专利文献在人脸识别中都使用了特征点定位技术,并且实 现的对象都是涉及两个人面部的替换,但该对比专利需要分别提取A、 B视频中人脸的特征点后,在A的特征点数据库中找到与B特征点最 相近的,然后使用了划分三角区域做仿射变换的方法将人脸部分抠图 式直接替换;而本专利使用了深度学习和生成对抗网络,通过判别器 和生成器的对抗训练,针对B的特征点以A中人脸为模板生成新的图 片,区别于抠图式的直接替换,本专利只将表情进行移植,并且是根 据特征点生成新的图片也就是重现一个人说话时头部动作和面部表 情,并将其映射到目标人脸上,并且本专利提出的系统可以实现表情的实时移植。
发明内容
为了解决上述技术问题,本发明提供一种基于深度学习的表情包 生成系统及方法,解决了现有人像表情包都是对单个用户表情的录制 截取,缺少趣味性和交互性的问题,利用深度学习中的生成对抗网络 实现了表情的移植,让使用者的表情移植到另外一张脸上生成表情包, 该发明之系统可基于深度学习,根据原有的特征点的位置,生成整张 人脸图像,这真正实现了表情的移植,较符合真实图片,并且可以实 时的进行表情替换,设计优化合理,工作稳定;
一种基于深度学习的表情包生成系统及方法,其中:
一种基于深度学习的表情包生成系统,包括:11个部分;分别 为:神经网络调控单元、视频处理模块、电源模块、神经网络训练模 块、神经网络反馈模块、神经网络测试模块、测试结果后处理模块、 摄像头信息处理模块和、摄像头单元、模型存储模块和视频数据库;
进一步的,所述神经网络调控单元是本系统的核心部件;所述神 经网络调控单元由电源模块进行供电,接收视频处理模块传递的数据, 控制所述神经网络训练模块进行神经网络训练,并接收由所述神经网 络反馈模块传递回来的训练结果;训练完成后,所述神经网络调控单 元启动所述神经网络测试模块进行系统性能测试,再由所述测试结果 后处理模块将生成的图片处理成视频形式,用户可以自由截取表情片 段,表情包制作完成;
作为一种举例说明,所述测试结果后处理模块的工作流程包括:
1.在实时通过摄像头单元输入表情的同时,会得到相应输出,
使用者选择表情包录制开始时间节点;
2.表情完成后,选择结束时间节点;
3.将这段时间内生成的图片按一定帧率拼接成视频形式,生 成表情动图;
进一步的,所述神经网络调控单元的神经网络结构采用 tensorflow深度学习框架设计完成,框架结构包括:生成器G和判 别器D;此举完美的构建了生成对抗网络;
所述生成器G的目标设计,是用于生成与真实图片相近的图片; 它的输入端接收随机噪声z,输出端表示为G(z);
作为一种举例说明,所述生成器G采用ENCODER-DECODER的级连 结构,实际上是对图片下采样再上采样的过程;下采样过程与判别器 大致相同,内部结构也是多个DECODE模块相连接;上采样过程和下 采样是对称的,不同之处是卷积变成了反卷积;反卷积的作用就是将 下采样得到的小维度的图片再变换成和输入图片一样的尺寸;每个反 卷积操作后都连接着Batch normalization和Relu层;
所述判别器D的目标设计,是正确判别输入数据的真伪,它的输 出可以看作是图片来源于真实数据的概率,取值范围为[0,1];“真” 表示数据来源于真实数据x的分布,“伪”表示来源于生成器G的伪 数据G(z),系统最终的目的是利用生成器生成接近真实图片的分布, 而完善系统的过程,就是生成器判别器对抗迭代各自优化的过程;
作为一种应用举例说明,所述判别器D采用ENCORDER结构;其 内部包含多个编码器相连接;判别器的实质与传统的神经网络相同, 就是将图片下采样,采样过程就是分别以不同大小的卷积核对图像进 行卷积。
作为一种优选举例说明,所述卷积核采用带有权重的滤波器,其 对图片进行卷积运算后可以提取图像的不同特征;每个卷积操作后面 会进行batch normalization和Relu操作;随着网络训练不断深入, 激活输入值也就是卷积得到的值服从的分布会发生变化;这种分布的 变化会导致后向传播时神经网络的梯度消失,网络收敛速度会随之越 来越慢,而batch normalization的作用就是把每层神经网络输入值 的分布重新变为正太分布;激活函数Relu的作用是使任意取值范围 的是都不会存在梯度为0的问题,进而加速网络收敛,提高计算效率;
进一步的,所述视频处理模块由电源模块供电,所述视频处理模 块将来自视频数据库的输入视频截取成视频帧的模式,并自动筛选出 可以用于训练的有效帧,并同时对图像中的人脸进行预处理操作;
作为一种举例说明,所述视频处理模块的工作流程包括:
1.从视频数据库中读取视频数据;
2.将视频解析成图像帧形式;
3.使用opencv检测器对每帧进行人脸检测,排除没有人脸的 无效帧;
4.调用Dlib库对人脸68个特征点进行检测并标记在新图片 上;
5.得到包含人脸的原图和对应的特征点标记图;
6.将图片输入神经网络调控单元;
进一步的,所述摄像头信息处理模块同样由电源模块供电,读取 所述摄像头单元捕获的图像信息数据,以帧为单位,筛选保留有效帧;
作为一种举例说明,本发明是一个基于人脸检测及人脸特征点识 别的表情替换系统,系统输入采用摄像头单元实时捕捉到的人脸视频, 系统将该人的表情进行提取,并将其替换到目标人脸上作为输出视频;
作为一种举例说明,所述摄像头信息处理模块的工作流程包括:
1.从摄像头单元中读入数据;
2.将视频解析成图像帧形式;
3.将图片输入进神经网络调控单元;
进一步的,所述模型存储模块用于存储神经网络结构中各个层的 参数或模型;
一种基于深度学习的表情包生成方法,包括如下步骤:
步骤一、整理并设计数据集:所述数据集包括两部分:
第一部分:为目标人脸数据,来自任意人物面部视频文件,每个 视频包括若干帧人脸正面图像,视频中的人可以有各种表情;这一部 分数据经过系统的数据处理模块截取成视频帧的模式进而被其他模 块调用;
作为一种举例说明,所述各种表情包括:皱眉、撇嘴、张嘴;头 部可以有轻微的左右晃动或者上下晃动。
第二部分:由摄像头单元读取获得,使用者可以实时变换表情被 摄像头捕捉作为数据;
作为一种举例说明,所述第一部分数据用于训练系统,系统完成 的功能就是将第二部分数据中,人的实时表情替换到第一部分数据中 的人脸上,达到人脸表情移植的实时效果。
步骤二、选定被用于表情替换的人脸视频,输入到视频处理模块 中,并将它处理成视频帧的形式;
步骤三、识别人脸特征点并且标注在一张等大空白图片的相同位 置,将包含人脸的图像和对应的含有特征点位置的标记图像数据一同 输入到神经网络调控单元;
步骤四、神经网络调控单元使用步骤二中的数据进行训练,通过 向神经网络训练模块和神经网络反馈模块不断输入数据,从而优化神 经网络结构的参数;
作为一种举例说明,所述步骤四中的训练包括:
首先,训练判别器D,将真实数据标记为1,由生成器G生成的 数据标记为0,反复迭代更新D的参数;在本系统中,将特征点标记 图和人脸图片相连接输入判别器,得到的输出记作D(x),将特征点 标记图和生成图片相连接输入判别器,得到的输出记作D(G(z)); 理想结果是D(G(z))接近1而D(G(z))接近0;定义损失函数 为loss=-((1-y)log(1-D(G(z))+ylogD(x)),log(x)为减函 数,在自变量x为1时,f(x)值为零,所以最小化loss的过程, 实际是增大D(x)和l-D(G(z))的过程;
其次,当输入的是从数据集中取出的真实人脸图片数据时,y=1, 我们只需要考虑第二部分数据集,当输入的为生成器生成的人脸图片 数据时,y=0,我们只计算第一部分数据集;
最后,训练判别器D后,训练生成器G,将G与D相连接一起训 练,固定D的参数不变,训练时将G的生成图片标签改为1,为了使 损失函数减小,只能改变G的权重,经过反复迭代,G的生成图片能 力增强;不断进行D和G的交替训练,最小化损失函数,理想情况下 D对输入的图片输出均为0.5时达到全局最优,表明D分辨不出图片 来自真实图片还是生成器,此时生成的图片最逼真,最接近真实图片 效果,此时可认为G已经学到了真实数据的分布;
步骤五、训练完毕后,将神经网络结构中各个层的参数或模型存 储到模型存储模块,之后即可开始测试阶段;
步骤六、在测试阶段,神经网络调控单元从模型存储模块中取出 已经训练好的模型,而后神经网络调控单元接收来自摄像头信息处理 模块对于测试视频处理过后产生的有效帧,将这些关键帧通过神经网 络测试模块作为神经网络结构的输入,输出为表情替换后的图片,按 照一定的帧率把生成图片拼接,得到替换后的人脸表情小视频。
有益效果:
1、完美构建了生成对抗网络(GAN)架构,其优点在于:
1)GAN所采用的神经网络结构能够整合各类损失函数,训练难 度较低;
2)GAN采用对抗训练法,网络不是直接复制真实数据或者对它 们取平均,这增加了生成样本的多样性。这就是为什么我们使用的系 统可以根据人在某个表情下的五官特征点位置,生成另一个人做同样 表情的图像;
2、对人脸的定位以及对表情的识别,获取表情特征后,智能化 的在目标人像上表达,通过自动化的计算设计,使上述表情包的生成 实时化。
附图说明
图1是一种基于深度学习的表情包生成系统的整体结构原理示意图
图2是一种基于深度学习的表情包生成系统之神经网络调控单元的 结构设计图
图3是一种基于深度学习的表情包生成系统之神经网络调控单元判 别器D编码器的实现原理示意图
图4是一种基于深度学习的表情包生成系统之神经网络调控单元判 别器D的实现之连接结构示意图
图5是一种基于深度学习的表情包生成系统之神经网络调控单元生 成器G解码器的实现原理示意图
图6是一种基于深度学习的表情包生成系统之神经网络调控单元生 成器G的实现之连接结构示意图
图7是一种基于深度学习的表情包生成系统之神经网络调控单元训 练流程示意图
具体实施方式
下面,参考附图1至7所示,一种基于深度学习的表情包生成系 统及方法,其中:
一种基于深度学习的表情包生成系统,包括:11个部分;分别 为:神经网络调控单元101、视频处理模块102、电源模块103、神 经网络训练模块104、神经网络反馈模块105、神经网络测试模块106、 测试结果后处理模块107、摄像头信息处理模块108、摄像头单元109、模型存储模块110和视频数据库111;
进一步的,所述神经网络调控单元101是本系统的核心部件;所 述神经网络调控单元101由电源模块103进行供电,接收视频处理模 块102传递的数据,控制所述神经网络训练模块104进行神经网络训 练,并接收由所述神经网络反馈模块105传递回来的训练结果;训练 完成后,所述神经网络调控单元101启动所述神经网络测试模块106 进行系统性能测试,再由所述测试结果后处理模块107将生成的图片 处理成视频形式,用户可以自由截取表情片段,表情包制作完成;
作为一种举例说明,所述测试结果后处理模块107的工作流程包 括:
1.在实时通过摄像头单元109输入表情的同时,会得到相应输出, 使用者选择表情包录制开始时间节点;
2.表情完成后,选择结束时间节点;
3将这段时间内生成的图片按一定帧率拼接成视频形式,生成表 情动图;
进一步的,所述神经网络调控单元101的神经网络结构采用 tensorflow深度学习框架设计完成,框架结构包括:生成器G 201 和判别器D 202,此举完美的构建了生成对抗网络;
所述生成器G 201的目标设计,是用于生成与真实图片相近的图 片;它的输入端接收随机噪声z,输出端表示为G(z);
作为一种举例说明,所述生成器G 201采用ENCODER和DECODER 的级连结构,实际上是对图片下采样再上采样的过程;下采样过程与 判别器大致相同,内部结构也是多个DECODE模块相连接;上采样过 程和下采样是对称的,不同之处是卷积变成了反卷积;反卷积的作用 就是将下采样得到的小维度的图片再变换成和输入图片一样的尺寸; 每个反卷积操作后都连接着Batch normalization和Relu层;
所述判别器D 202的目标设计,是正确判别输入数据的真伪,它 的输出可以看作是图片来源于真实数据的概率,取值范围为[0,1]; “真”表示数据来源于真实数据x的分布,“伪”表示来源于生成器 G的伪数据G(z),系统最终的目的是利用生成器生成接近真实图片 的分布,而完善系统的过程,就是生成器、判别器对抗迭代各自优化 的过程;
作为一种应用举例说明,所述判别器D 202采用ENCORDER结构; 其内部包含多个编码器相连接;判别器的实质与传统的神经网络相同, 就是将图片下采样,采样过程就是分别以不同大小的卷积核对图像进 行卷积。
作为一种优选举例说明,所述卷积核采用带有权重的滤波器,其 对图片进行卷积运算后可以提取图像的不同特征;每个卷积操作后面 会进行batch normalization和Relu操作;随着网络训练不断深入, 激活输入值也就是卷积得到的值服从的分布会发生变化;这种分布的 变化会导致后向传播时神经网络的梯度消失,网络收敛速度会随之越 来越慢,而batch normalization的作用就是把每层神经网络输入值 的分布重新变为正太分布;激活函数Relu的作用是使任意取值范围 的是都不会存在梯度为0的问题,进而加速网络收敛,提高计算效率;
进一步的,所述视频处理模块102由电源模块103供电,所述视 频处理模块102将来自视频数据库的输入视频截取成视频帧的模式, 并自动筛选出可以用于训练的有效帧,并同时对图像中的人脸进行预 处理操作;
作为一种举例说明,所述视频处理模块102的工作流程包括:
1.从视频数据库111中读取视频数据;
2.将视频解析成图像帧形式;
3.使用opencv检测器对每帧进行人脸检测,排除没有人脸的无 效帧;
4.调用Dlib库对人脸68个特征点进行检测并标记在新图片上;
5.得到包含人脸的原图和对应的特征点标记图
6.将图片输入神经网络调控单元;
进一步的,所述摄像头信息处理模块108同样由电源模块103供 电,读取所述摄像头单元109捕获的图像信息数据,以帧为单位,筛 选保留有效帧;
作为一种举例说明,本发明是一个基于人脸检测及人脸特征点识 别的表情替换系统,系统输入采用摄像头单元109实时捕捉到的人脸 视频,系统将该人的表情进行提取,并将其替换到目标人脸上作为输 出视频;
作为一种举例说明,所述摄像头信息处理模块108的工作流程包 括:
1.从摄像头单元109中读入数据;
2.将视频解析成图像帧形式;
3.将图片输入进神经网络调控单元101;
进一步的,所述模型存储模块110用于存储神经网络结构中各个 层的参数或模型;
一种基于深度学习的表情包生成方法,包括如下步骤:
步骤一、整理并设计数据集:所述数据集包括两部分:
第一部分:为目标人脸数据,来自任意人物面部视频文件,每个 视频包括若干帧人脸正面图像,视频中的人可以有各种表情;这一部 分数据经过系统的数据处理模块截取成视频帧的模式进而被其他模 块调用;
作为一种举例说明,所述各种表情包括:皱眉、撇嘴、张嘴;头 部可以有轻微的左右晃动或者上下晃动。
第二部分:由摄像头单元109读取获得,使用者可以实时变换表 情被摄像头捕捉作为数据;
作为一种举例说明,所述第一部分数据用于训练系统,系统完成 的功能就是将第二部分数据中,人的实时表情替换到第一部分数据中 的人脸上,达到人脸表情移植的实时效果。
步骤二、选定被用于表情替换的人脸视频,输入到视频处理模块102中,并将它处理成视频帧的形式;
步骤三、识别人脸特征点并且标注在一张等大空白图片的相同位 置,将包含人脸的图像和对应的含有特征点位置的标记图像数据一同 输入到神经网络调控单元101;
步骤四、神经网络调控单元101使用步骤二中的数据进行训练, 通过向神经网络训练模块104和神经网络反馈模块105不断输入数据, 从而优化神经网络结构的参数;
作为一种举例说明,所述步骤四中的训练包括:
首先,训练判别器D 202,将真实数据标记为1,由生成器G 201 生成的数据标记为0,反复迭代更新D的参数;在本系统中,将特征 点标记图和人脸图片相连接输入判别器,得到的判别器输出记作D(x), 将特征点标记图和生成图片相连接输入判别器,得到的输出记作D(G (z));理想结果是D(G(z))接近1而D(G(z))接近0;定义损 失函数为loss=-((1-y)log(1-D(G(z))+ylogD(x)),log(x) 为减函数,在自变量x为1时,f(x)值为零,所以最小化loss的 过程,实际是增大D(x)和l-D(G(z))的过程;
其次,当输入的是从数据集中取出的真实人脸图片数据时,y=1, 我们只需要考虑第二部分数据集,当输入的为生成器生成的人脸图片 数据时,y=0,我们只计算第一部分数据集;
最后,训练判别器D 202后,训练生成器G 201,将G与D相连 接一起训练,固定D的参数不变,训练时将G的生成图片标签改为1, 为了使损失函数减小,只能改变G的权重,经过反复迭代,G的生成 图片能力增强;不断进行D和G的交替训练,最小化损失函数,理想 情况下D对输入的图片输出均为0.5时达到全局最优,表明D分辨不 出图片来自真实图片还是生成器,此时生成的图片最逼真,最接近真 实图片效果,此时可认为G已经学到了真实数据的分布;
步骤五、训练完毕后,将神经网络结构中各个层的参数或模型存 储到模型存储模块110,之后即可开始测试阶段;
步骤六、在测试阶段,神经网络调控单元101从模型存储模块 110中取出已经训练好的模型,而后神经网络调控单元101接收来自 摄像头信息处理模块108对于测试视频处理过后产生的有效帧,将这 些关键帧通过神经网络测试模块106作为神经网络结构的输入,输出 为表情替换后的图片,按照一定的帧率把生成图片拼接,得到替换后 的人脸表情小视频。
构建了生成对抗网络(GAN)架构,GAN所采用的神经网络结构能 够整合各类损失函数,训练难度较低;GAN采用对抗训练法,网络不 是直接复制真实数据或者对它们取平均,这增加了生成样本的多样性。 这就是为什么我们使用的系统可以根据人在某个表情下的五官特征 点位置,生成另一个人做同样表情的图像;对人脸的定位以及对表情 的识别,获取表情特征后,智能化的在目标人像上表达,通过自动化 的计算设计,使上述表情包的生成实时化。
以上公开的仅为本申请的一个具体实施例,但本申请并非局限于 此,任何本领域的技术人员能思之的变化,都应落在本申请的保护范 围内。