CN116563450A - 表情迁移方法、模型训练方法和装置 - Google Patents
表情迁移方法、模型训练方法和装置 Download PDFInfo
- Publication number
- CN116563450A CN116563450A CN202210105861.0A CN202210105861A CN116563450A CN 116563450 A CN116563450 A CN 116563450A CN 202210105861 A CN202210105861 A CN 202210105861A CN 116563450 A CN116563450 A CN 116563450A
- Authority
- CN
- China
- Prior art keywords
- expression
- neural network
- network model
- training
- base coefficient
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000014509 gene expression Effects 0.000 title claims abstract description 676
- 238000012549 training Methods 0.000 title claims abstract description 243
- 238000000034 method Methods 0.000 title claims abstract description 222
- 230000005012 migration Effects 0.000 title claims abstract description 64
- 238000013508 migration Methods 0.000 title claims abstract description 64
- 238000003062 neural network model Methods 0.000 claims abstract description 293
- 230000008569 process Effects 0.000 claims abstract description 58
- 230000006870 function Effects 0.000 claims description 79
- 230000015654 memory Effects 0.000 claims description 68
- 238000012545 processing Methods 0.000 claims description 62
- 230000001815 facial effect Effects 0.000 claims description 37
- 230000036961 partial effect Effects 0.000 claims description 20
- 230000008909 emotion recognition Effects 0.000 claims description 9
- 230000008451 emotion Effects 0.000 claims description 8
- 239000000523 sample Substances 0.000 claims 1
- 239000000758 substrate Substances 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 12
- 230000008921 facial expression Effects 0.000 description 54
- 238000013528 artificial neural network Methods 0.000 description 53
- 238000013527 convolutional neural network Methods 0.000 description 33
- 239000013598 vector Substances 0.000 description 32
- 210000003128 head Anatomy 0.000 description 25
- 239000011159 matrix material Substances 0.000 description 24
- 238000005070 sampling Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 20
- 238000011176 pooling Methods 0.000 description 20
- 238000012546 transfer Methods 0.000 description 18
- 238000004422 calculation algorithm Methods 0.000 description 12
- 241000282414 Homo sapiens Species 0.000 description 11
- 230000001537 neural effect Effects 0.000 description 11
- 210000002569 neuron Anatomy 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 101100269618 Streptococcus pneumoniae serotype 4 (strain ATCC BAA-334 / TIGR4) aliA gene Proteins 0.000 description 7
- 230000004913 activation Effects 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 6
- 241001465754 Metazoa Species 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 230000007935 neutral effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000000306 recurrent effect Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 241000282819 Giraffa Species 0.000 description 2
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 210000000887 face Anatomy 0.000 description 2
- 210000003205 muscle Anatomy 0.000 description 2
- 238000000513 principal component analysis Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241000272814 Anser sp. Species 0.000 description 1
- 241000282693 Cercopithecidae Species 0.000 description 1
- 208000004350 Strabismus Diseases 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000005284 basis set Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000013604 expression vector Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Architecture (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Human Computer Interaction (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Image Analysis (AREA)
Abstract
本申请实施例提供了一种表情迁移方法、模型训练方法和装置。在表情迁移方法中,利用预先训练好的第一神经网络模型对源对象对应的表情基系数进行处理,得到与目标对象对应的表情基系数,并利用其驱动目标对象,以将源对象的表情迁移至目标对象。同时,基于待处理的表情数据对第二神经网络模型进行训练,以调整第二神经网络模型的模型参数。当第二神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失小于第一神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失时,继续利用第二神经网络模型对源对象对应的表情基系数进行处理。上述技术方案能够提高表情信息传递的准确性,从而提高表情迁移效率。
Description
技术领域
本申请实施例涉及图像处理技术领域,并且更具体地,涉及一种表情迁移方法、模型训练方法和装置。
背景技术
面部表情捕捉***的出现,实现了人类面部表情的捕捉与迁移。具体地,面部表情捕捉***通过对用户面部关键点的运动进行捕获,可以实时模拟出人脸表情,并可以将人脸表情赋予到数字形象(即虚拟角色,如虚拟人物或拟人动物)上。
表情可以由多个局部动作表情叠加表示,每个局部动作表情为一个表情基,一组表情基的线性组合权重为表情基系数。在表情迁移过程中,可以先获得人脸表情的表情基系数,再将该表情基系数与数字形象的表情基组合,从而驱动数字形象做出与人脸表情对应的表情。
然而,由于人脸模型的表情基与数字形象的表情基之间通常会存在差异,直接将人脸表情的表情基系数迁移应用到数字形象中并不能确保用户表情信息的准确传递,导致表情迁移效率不高。
发明内容
本申请实施例提供一种表情迁移方法、模型训练方法和装置,能够提高用户表情信息传递的准确性,从而提高表情迁移的效率。
第一方面,提供了一种表情迁移方法,包括:获取待处理表情数据,所述待处理表情数据包括多个第一视频帧和多个第二视频帧,其中所述第一视频帧和所述第二视频帧包括源对象的面部图像;基于第一神经网络模型和第一表情基系数,获取第二表情基系数,其中所述第一表情基系数基于所述第一视频帧得到且与所述源对象对应;根据所述第二表情基系数驱动目标对象,以将所述第一视频帧中的源对象的表情迁移至所述目标对象,其中所述第二表情基系数与所述目标对象对应;
当满足预设条件时,基于第二神经网络模型和第三表情基系数,获取第四表情基系数,其中所述第三表情基系数基于所述第二视频帧得到且与所述源对象对应;根据所述第四表情基系数驱动所述目标对象,以将所述第二视频帧中的源对象的表情迁移至所述目标对象,其中所述第四表情基系数与所述目标对象对应;
其中,所述第二神经网络模型的初始模型参数与所述第一神经网络模型的初始模型参数相同,且在所述第一神经网络模型的应用过程中,所述第二神经网络模型的模型参数在基于第一训练数据的训练过程中被调整,所述第一训练数据是根据所述多个第一视频帧中的至少部分第一视频帧获得的;
所述预设条件包括:所述第二神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失小于所述第一神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失。
本申请实施例中,在获取与源对象对应的表情基系数后,可以利用第一神经网络模型或第二神经网络模型进行处理,得到与目标对象对应的表情系数。利用与目标对象对应的表情基系数驱动目标对象,可以使目标对象做出与源对象一致的表情,实现面部表情的准确传递。另外,在第一神经网络模型应用于表情迁移过程的同时,可以利用待处理表情数据对第二神经网络模型进一步训练,以不断更新第二神经网络模型的模型参数,提高第二神经网络模型的精度。这样,可以丰富第二神经网络模型的训练样本,拓展第二神经网络模型的适用场景,避免出现极端表情传递不准确的问题。当第二神经网络模型对应的表情损失小于第一神经网络模型对应的表情损失时,可以将第一神经网络模型替换为第二神经网络模型,然后利用第二神经网络模型继续处理,从而得到更匹配的表情基系数使得目标对象所展现的表情与源对象的表情一致,实现源对象表情信息的准确传递与表达。
结合第一方面,在一种可能的实现方式中,所述第一神经网络模型与所述源对象和所述目标对象相关联;所述第二神经网络模型与所述源对象和所述目标对象相关联。
结合第一方面,在一种可能的实现方式中,在所述基于第二神经网络模型和第三表情基系数,获取第四表情基系数之前,所述方法还包括:基于所述第一训练数据和第一损失函数,对所述第二神经网络模型进行训练,其中所述第一损失函数用于梯度回传,以调整所述第二神经网络模型的模型参数。
可选地,第一损失函数可以为L1范数损失函数(也称绝对值损失函数),也可以为L2范数损失函数,还可以为附加正则约束项的L1范数损失函数或附加正则约束项的L2范数损失函数。
结合第一方面,在一种可能的实现方式中,所述第一训练数据包括第一输出结果集合、第二输出结果集合、第一表情识别结果集合和第二表情识别结果集合;其中,所述第一输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第一神经网络模型处理后输出的调整后表情基系数;所述第二输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第二神经网络模型处理后输出的调整后表情基系数;所述第一表情识别结果集合包括:对所述至少部分第一视频帧中的每个第一视频帧进行表情识别的结果;所述第二表情识别结果集合包括:对所述第二输出结果集合中的每个输出结果在驱动所述目标对象时所得到的数字形象帧进行表情识别的结果。
本申请实施例中,第一训练数据既包括源对象相关的表情数据,还包括目标对象的表情数据,在用于第二神经网络模型的训练时,可以建立源对象与目标对象之间的表情约束和关联。有训练好的第二神经网络模型调整表情基系数后,可以使目标对象与源对象所展现的表情一致,实现用户表情信息的准确传递与表达。
结合第一方面,在一种可能的实现方式中,所述第一损失函数用于表征所述第一输出结果集合与所述第二输出结果集合中对应于同一视频帧的调整后表情基系数之间的差异,以及所述第一表情识别结果集合与所述第二表情识别结果集合中对应于所述同一视频帧的表情识别结果之间的差异。
这样,既可以优化第二神经网络模型的模型参数,也不会使第一神经网络模型与第二神经网络模型偏差较大。
结合第一方面,在一种可能的实现方式中,所述至少部分第一视频帧是从所述多个第一视频帧中采样得到。
这里所涉及的采样,可以是随机采样,也可以是按照一定采样频率采样,例如每隔5个视频帧采样一次等,还可以是连续采样,本申请实施例对此不作限定。
当用于训练第二神经网络模型的第一视频帧的数量小于第一视频帧的总数量时,可以减少训练过程中的计算量,从而减少计算所需资源。
结合第一方面,在一种可能的实现方式中,所述方法还包括:将所述第一神经网络模型的模型参数更新为与所述第二神经网络模型的模型参数一致;在所述第二神经网络模型的应用过程中,在基于第二训练数据的训练过程中调整所述第一神经网络模型的模型参数,其中所述第二训练数据是根据所述多个第二视频帧中的至少部分第二视频帧获得的。
在利用第二神经网络模型对基于第二视频帧得到的第三表情基系数进行处理的过程中,还可以利用第二视频帧中的至少部分第二视频帧对第一神经网络模型进行训练。这样可以丰富训练样本,提高神经网络模型的训练精度。
第二方面,提供了一种表情迁移方法,包括:获取待处理表情数据,所述待处理表情数据包括多个第一视频帧和多个第二视频帧,其中所述第一视频帧和所述第二视频帧包括源对象的面部图像;基于第一神经网络模型和第一表情基系数,获取第二表情基系数,其中所述第一表情基系数基于所述第一视频帧得到且与所述源对象对应;根据所述第二表情基系数驱动目标对象,以将所述第一视频帧中的源对象的表情迁移至所述目标对象,其中所述第二表情基系数与所述目标对象对应;
当满足预设条件时,将所述第一神经网络模型的模型参数更新为与第二神经网络模型的参数一致,得到调整后的第一神经网络模型;基于所述调整后的第一神经网络模型和第三表情基系数,获取第四表情基系数,其中所述第三表情基系数基于所述第二视频帧得到且与所述源对象对应;根据所述第四表情基系数驱动所述目标对象,以将所述第二视频帧中的源对象的表情迁移至所述目标对象,其中所述第四表情基系数与所述目标对象对应;
其中,所述第二神经网络模型的初始模型参数与所述第一神经网络模型的初始模型参数相同,且在所述第一神经网络模型的应用过程中,所述第二神经网络模型的模型参数在基于第一训练数据的训练过程中被调整,所述第一训练数据是根据所述多个第一视频帧中的至少部分第一视频帧获得的;
所述预设条件包括:所述第二神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失小于所述第一神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失。
本申请实施例中,在获取与源对象对应的表情基系数后,可以利用第一神经网络模型进行处理,得到与目标对象对应的表情系数。利用与目标对象对应的表情基系数驱动目标对象,可以使目标对象做出与源对象一致的表情,实现面部表情的准确传递。
另外,在第一神经网络模型应用于表情迁移过程的同时,可以利用待处理表情数据对第二神经网络模型进一步训练,以不断更新第二神经网络模型的模型参数。当第二神经网络模型对应的表情损失小于第一神经网络模型对应的表情损失时,将第一神经网络模型的模型参数更新为与第二神经网络模型一致。这样,可以丰富第一神经网络模型的训练样本,拓展第一神经网络模型的适用场景,避免出现极端表情传递不准确的问题,还能够根据更新后的第一神经网络模型得到更匹配的表情基系数使得目标对象所展现的表情与源对象的表情一致,实现源对象表情信息的准确传递与表达。
结合第二方面,在一种可能的实现方式中,所述第一神经网络模型与所述源对象和所述目标对象相关联;所述第二神经网络模型与所述源对象和所述目标对象相关联。
结合第二方面,在一种可能的实现方式中,在所述将所述第一神经网络模型的模型参数更新为与第二神经网络模型的参数一致之前,所述方法还包括:基于所述第一训练数据和第一损失函数,对所述第二神经网络模型进行训练,其中所述第一损失函数用于梯度回传,以调整所述第二神经网络模型的模型参数。
结合第二方面,在一种可能的实现方式中,所述第一训练数据包括第一输出结果集合、第二输出结果集合、第一表情识别结果集合和第二表情识别结果集合;其中,所述第一输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第一神经网络模型处理后输出的调整后表情基系数;所述第二输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第二神经网络模型处理后输出的调整后表情基系数;所述第一表情识别结果集合包括:对所述至少部分第一视频帧中的每个第一视频帧进行表情识别的结果;所述第二表情识别结果集合包括:对所述第二输出结果集合中的每个输出结果在驱动所述目标对象时所得到的数字形象帧进行表情识别的结果。
结合第二方面,在一种可能的实现方式中,所述第一损失函数用于表征所述第一输出结果集合与所述第二输出结果集合中对应于同一视频帧的调整后表情基系数之间的差异,以及所述第一表情识别结果集合与所述第二表情识别结果集合中对应于所述同一视频帧的表情识别结果之间的差异。
结合第二方面,在一种可能的实现方式中,所述至少部分第一视频帧是从所述多个第一视频帧中采样得到。
结合第二方面,在一种可能的实现方式中,所述方法还包括:在所述调整后的第一神经网络模型的应用过程中,在基于第二训练数据的训练过程中调整所述第二神经网络模型的模型参数,其中所述第二训练数据是根据所述多个第二视频帧中的至少部分第二视频帧获得的。
在利用第一神经网络模型对基于第二视频帧得到的第三表情基系数进行处理的过程中,还可以利用第二视频帧中的至少部分第二视频帧对第二神经网络模型进行训练。这样可以丰富训练样本,提高神经网络模型的训练精度。
第三方面,提供了一种模型训练方法,包括:
获取第一训练帧,所述第一训练帧包括源对象的面部图像;
基于所述第一训练帧,获取与所述源对象的面部图像对应的原始表情基系数和头部姿态参数;
根据所述原始表情基系数,获取第二训练帧,所述第二训练帧包括所述源对象位于正面的面部图像;
根据原始神经网络模型对所述原始表情基系数进行处理,得到调整后的表情基系数;
根据所述调整后的表情基系数和所述头部姿态参数驱动目标对象,获取第三训练帧,所述第三训练帧包括所述目标对象在所述头部姿态参数下的面部图像;
根据所述调整后的表情基系数驱动所述目标对象,获取第四训练帧,所述第四训练帧包括所述目标对象位于正面的面部图像;
根据所述第一训练帧对应的表情识别结果与所述第三训练帧对应的表情识别结果之间的差异和/或所述第二训练帧对应的表情识别结果与所述第四训练帧对应的表情识别结果之间的差异,调整所述原始神经网络模型的参数,以获取目标神经网络模型。
本申请实施例中,在训练神经网络模型的过程中,建立了源对象与目标对象之间的表情约束,从而可以建立源对象与目标对象之间的关联。源对象与目标对象之间的表情约束可以使源对象的表情准确的传递到目标对象上
结合第三方面,在一种可能的实现方式中,所述第一训练帧对应的表情识别结果与所述第三训练帧对应的表情识别结果之间的差异包括:所述第一训练帧对应的表情识别结果与所述第三训练帧对应的表情识别结果之间的曼哈顿距离或欧氏距离;和/或,所述第二训练帧对应的表情识别结果与所述第四训练帧对应的表情识别结果之间的差异包括:所述第二训练帧对应的表情识别结果与所述第四训练帧对应的表情识别结果之间曼哈顿距离或欧氏距离。
第四方面,提供了一种表情迁移装置,包括用于执行上述第一方面或第二方面中的表情迁移方法的各个单元/模块。
第五方面,提供了一种模型训练装置,包括用于执行上述第三方面中的模型训练方法的各个单元/模块。
第六方面,提供了一种表情迁移装置,该装置包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行上述第一方面或第二方面中的表情迁移方法。
第七方面,提供了一种模型训练装置,该装置包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行上述第三方面中的模型训练方法。
第八方面,提供了一种电子设备,该电子设备包括上述第四方面或第六方面的表情迁移装置。
在上述第八方面中,电子设备具体可以是移动终端(例如,智能手机),平板电脑,笔记本电脑,增强现实/虚拟现实设备以及车载终端设备等等。
第九方面,提供了一种计算机设备,该计算机设备包括上述第五方面或第七方面中的模型训练装置。
在上述第九方面中,该计算机设备具体可以是服务器或者云端设备等等。
第十方面,提供一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码被所述设备执行时,所述设备用于执行第一方面、第二方面或第三方面的方法。
第十一方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面、第二方面或第三方面中的方法。
第十二方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述第一方面、第二方面或者第三方面中的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述第一方面、第二方面或者第三方面中的方法。
上述芯片具体可以是现场可编程门阵列或者专用集成电路。
应理解,本申请中,第一方面的方法具体可以是指第一方面以及第一方面中各种实现方式中的任意一种实现方式中的方法,第二方面的方法具体可以是指第二方面以及第二方面中各种实现方式中的任意一种实现方式中的方法,第三方面的方法具体可以是指第三方面以及第三方面中各种实现方式中的任意一种实现方式中的方法。
附图说明
图1是本申请实施例提供的一种***架构的结构示意图。
图2是本申请实施例提供的一种卷积神经网络模型的示意图。
图3是本申请实施例提供的一种芯片硬件结构示意图。
图4是本申请实施例提供的一种***架构的示意图。
图5是本申请实施例适用的场景示意图。
图6是本申请实施例提供的一种表情迁移方法的示意性流程图。
图7是本申请实施例提供的另一种表情迁移方法的示意性流程图。
图8是本申请实施例提供的一种模型训练方法的示意性流程图。
图9是本申请实施例提供的一种模型训练方法的示意性流程图。
图10是本申请实施例提供的一种表情迁移方法的示意性流程图。
图11是本申请实施例提供的一种装置的示意性结构图。
图12是本申请实施例提供的一种装置的硬件结构示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
由于本申请实施例涉及大量神经网络模型的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络模型等相关概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距b为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、......n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络或多层感知机(multi-layer perceptron,MLP),可以理解为具有多层隐含层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,/>是输入向量,/>是输出向量,/>是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量/>经过如此简单的操作得到输出向量/>由于DNN层数多,系数W和偏移向量/>的数量也比较多。这些参数在DNN中的定义如下所述:以系数W为例,假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为/>上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
综上,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络
卷积神经网络(convolutional neuron network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取数据信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)循环神经网络
循环神经网络(recurrent neural networks,RNN)主要用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,而对于每一层层内之间的各个节点是无连接的。而在RNN中,网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐含层本层之间的节点不再无连接而是有连接的,并且隐含层的输入不仅包括输入层的输出还包括上一时刻隐含层的输出。RNN旨在让机器像人一样拥有记忆的能力,因此,RNN的输出需要依赖当前的输入信息和历史的记忆信息。
(5)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数)。比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(6)前向传播算法
前向传播算法,也可以称为正向传播算法,是由前向后进行计算的算法。利用前向传播算法,从输入层开始,一层层向后计算,直到运算到输出层,得到输出结果。前向传播算法通过一层层从前向后的运算,得到输出层结果。
(7)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
如图1所示,本申请实施例提供了一种***架构100。在图1中,数据采集设备160用于采集训练数据。本申请实施例中,训练数据可以包括人脸视频帧、数字形象视频帧、表情基系数等。
在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。以下实施例将结合附图更详细地描述目标模型/规则101的训练过程,在此暂不详述。
上述目标模型/规则101能够用于实现本申请实施例的表情迁移方法。本申请实施例中的目标模型/规则101具体可以为神经网络。在本申请实施例中,该目标模型/规则101是通过训练原始处理模型得到的。需要说明的是,在实际的应用中,数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他设备获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备120训练得到的目标模型/规则101可以应用于不同的***或设备中,如应用于图1所示的执行设备110,所述执行设备110可以是终端,如手机终端、平板电脑、笔记本电脑、增强现实(augmented reality,AR)终端、虚拟现实(virtual reality,VR)终端、车载终端等,还可以是服务器或者云端等。在图1中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理表情数据,如人脸视频帧。
预处理模块113和预处理模块114用于根据I/O接口112接收到的输入数据(如待处理数据)进行预处理,在本申请实施例中,也可以没有预处理模块113和预处理模块114(也可以只有其中的一个预处理模块),而直接采用计算模块111对输入数据进行处理。
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储***150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储***150中。
最后,I/O接口112将处理结果返回给客户设备140,从而提供给用户。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图1所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向I/O接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由I/O接口112直接将如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果,作为新的样本数据存入数据库130。
值得注意的是,图1仅是本申请实施例提供的一种***架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图1中,数据存储***150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储***150置于执行设备110中。
如图1所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本申请实施例中可以是本申请中的神经网络,具体地,本申请实施例使用的神经网络可以为CNN、DNN、深度卷积神经网络(deep convolutional neural networks,DCNN)、循环神经网络(recurrent neural network,RNN)等等。
由于CNN是一种非常常见的神经网络,下面结合图2重点对CNN的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的数据作出响应。
如图2所示,卷积神经网络(CNN)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及神经网络层230。其中,输入层210可以获取待处理数据,并将获取到的待处理数据交由卷积层/池化层220以及后面的神经网络层230进行处理,可以得到数据的处理结果。下面对图2中的CNN 200中内部的层结构进行详细的介绍。
卷积层/池化层220:
卷积层:
如图2所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
下面将以卷积层221为例,介绍一层卷积层的内部工作原理。
卷积层221可以包括很多个卷积算子,卷积算子也称为核,其在数据处理中的作用相当于一个从输入数据矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入数据中提取信息,从而使得卷积神经网络200进行正确的预测。
当卷积神经网络200有多个卷积层的时候,初始的卷积层(例如221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络200深度的加深,越往后的卷积层(例如226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图2中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在数据处理过程中,池化层的唯一目的就是减少数据的空间大小。
神经网络层230:
在经过卷积层/池化层220的处理后,卷积神经网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入数据带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络200需要利用神经网络层230来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层230中可以包括多层隐含层(如图2所示的231、232至23n)以及输出层240,该多层隐含层中所包含的参数可以根据训练数据进行预先训练得到。
在神经网络层230中的多层隐含层之后,也就是整个卷积神经网络200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络200的前向传播(如图2由210至240方向的传播为前向传播)完成,反向传播(如图2由240至210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络200的损失,及卷积神经网络200通过输出层输出的结果和理想结果之间的误差。
可选地,在其他一些实施例中,图2所示的卷积层/池化层220中可以有多个卷积层/池化层并行,该多个并行的卷积层/池化层分别提取特征,并将提取的特征均输入给全神经网络层230进行处理。
需要说明的是,图2所示的卷积神经网络仅作为一种本申请实施例的表情迁移方法的一种可能的卷积神经网络的示例,在具体的应用中,本申请实施例的表情迁移方法所采用的卷积神经网络还可以以其他网络模型的形式存在。
图3为本申请实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器30。该芯片可以被设置在如图1所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图1所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则101。如图2所示的卷积神经网络中各层的算法均可在如图3所示的芯片中得以实现。
神经网络处理器NPU 30作为协处理器挂载到主中央处理器(central processingunit,CPU)(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路303,控制器304控制运算电路303提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路303内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路303是二维脉动阵列。运算电路303还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路303是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器302中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器301中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)308中。
向量计算单元307可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元307可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling)、批归一化(batch normalization)、局部响应归一化(local response normalization)等。
在一些实现中,向量计算单元能307将经处理的输出的向量存储到统一缓存器306。例如,向量计算单元307可以将非线性函数应用到运算电路303的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元307生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路303的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器306用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器(direct memory access controller,DMAC)305将外部存储器中的输入数据搬运到输入存储器301和/或统一存储器306、将外部存储器中的权重数据存入权重存储器302,以及将统一存储器306中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)310,用于通过总线实现主CPU、DMAC和取指存储器309之间进行交互。
与控制器304连接的取指存储器(instruction fetch buffer)309,用于存储控制器304使用的指令。
控制器304,用于调用取指存储器309中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器306、输入存储器301、权重存储器302以及取指存储器309均为片上(on-chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random accessmemory,DDR SDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
其中,图2所示的卷积神经网络中各层的运算可以由运算电路303或向量计算单元307执行。
上文中介绍的图1中的执行设备110能够执行本申请实施例的表情迁移方法的各个步骤,图2所示的CNN模型和图3所示的芯片也可以用于执行本申请实施例的表情迁移方法的各个步骤。下面结合附图对本申请实施例的模型训练方法和本申请实施例的表情迁移方法进行详细的介绍。
如图4所示,本申请实施例提供了一种***架构400。该***架构包括本地设备401、本地设备402以及执行设备110和数据存储***150,其中,本地设备401和本地设备402通过通信网络与执行设备110连接。
执行设备110可以由一个或多个服务器实现。可选地,执行设备110可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备110可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备110可以使用数据存储***150中的数据,或者调用数据存储***150中的程序代码来实现本申请实施例的表情迁移方法。
用户可以操作各自的用户设备(例如本地设备401和本地设备402)与执行设备110进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备110进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
在一种实现方式中,本地设备401、本地设备402从执行设备110获取到目标神经网络的相关参数,将目标神经网络部署在本地设备401、本地设备402上,利用该目标神经网络得到用于驱动数字形象的表情基系数等等。
在另一种实现方式中,执行设备110上可以直接部署目标神经网络,执行设备110通过从本地设备401或本地设备402获取待处理表情数据,并根据目标神经网络对待处理表情数据进行处理得到用于驱动数字形象的表情基系数,并将该表情基系数传送给本地设备401或本地设备402。
上述执行设备110也可以为云端设备,此时,执行设备110可以部署在云端;或者,上述执行设备110也可以为终端设备,此时,执行设备110可以部署在用户终端侧,本申请实施例对此并不限定。
目前,神经网络模型广泛应用于图像、视频、语音等多个领域,展现出超越传统方法的能力。本申请实施例提供的神经网络模型主要用于将源对象的表情迁移到目标对象的过程。本申请实施例中,源对象可以是人或其他动物,这里的人和其他动物可以是真实的,也可以是虚拟形象。源对象也可以为没有生命的物体的虚拟形象。目标对象可以是人、动物、植物或没有生命的物体等的虚拟形象。示例性的,本申请实施例提供的神经网络模型可以应用于将人脸表情迁移到数字形象的过程。
表情迁移,是指使用数字形象模拟人物表情、表现人物情感的方法。这里数字形象也可以称为虚拟形象或虚拟角色,其为表情动画的载体、表情迁移的目标。数字形象可以为虚拟人物(如虚拟主播)或拟人动物(如猴子、小狗、长颈鹿)等。
人脸的表情可以分解为多个局部的肌肉动作,多个局部的肌肉动作可以组合形成各种人脸表情。因此,表情可以由多个局部动作表情叠加表示,其中每个局部动作表情可以称为一个表情基,用于表达表情的一组基础表情称为表情基组,一组表情基的线性组合权重称为表情基系数。
例如表情F可以表示:
其中,为中性表情(或称中性脸、平均脸,即没有表情的脸);A1、A2、A3···An为表情基,如分别表示张嘴、嘴角上扬、眯眼等等;α1、α2、α3···αn为表情基系数。
每个人都有自己的面部身份特征,例如高鼻梁、大眼睛等,因此一个表情的表达方式中还可以考虑用户的面部身份特征,如表情F可以表示为:
其中,为中性表情(或称中性脸、平均脸);Bid为面部身份基组,例如包括高鼻梁、大眼睛、鹅蛋脸等等;βid为身份系数;Aexp为表情基组;αexp为表情基系数。这里,Bid、βid、Aexp、αexp可以为矩阵或多维向量形式。
面部身份特征不同的人,做同一个表情时可能存在差异,例如大眼睛的人和小眼睛的人在大笑时,眼睛眯合的程度有所不同。因此对通用表情基(或称标准表情基、预设表情基)进行微调使其包含用户的面部身份特征,可以得到用户特定的表情基,本申请实施例中也可以称为个性化表情基。这样,表情F还可以表示为:
其中,Aexp为一组标准表情基,即标准表情基组;ΔAexp为微调表情基的分量;Aexp+ΔAexp为一组个性化表情基,即个性化表情基组。公式(3)中的其余参数与公式(2)中对应参数的含义相同,不再赘述。
需要说明的是,本申请以下实施例中所提及的“表情基”,可以指标准表情基,也可以指个性化表情基,本申请实施例对此不作限定。不同角色(如人和长颈鹿、男主播和女主播)可以分别对应一组标准表情基。可以理解的是,不论是人的表情还是数字形象的表情,其可以用对应的标准表情基组表达,也可以用对应的个性化表情基组表达,本申请实施例对此不作限定。
面部表情捕捉***的出现,实现了人类面部表情的捕捉与迁移。具体地,面部表情捕捉***通过对用户面部关键点的运动进行捕获,可以实时模拟出人脸表情,并可以将人脸表情赋予到数字形象上。示例性的,如图5所示的表情迁移场景中,用户可以使用电子设备上的应用程序识别用户501自己的表情,并将用户501的表情(如微笑)迁移到数字形象502上,使数字形象502实时跟随人脸做出活灵活现的表情。
一种表情迁移方式为:先通过重建人脸模型获得人脸表情的表情基系数,再将该表情基系数与数字形象的表情基组组合,从而驱动数字形象做出与人脸表情相同的表情。然而,由于人脸模型的表情基与数字形象的表情基之间通常会存在差异,直接将人脸表情的表情基系数迁移应用到数字形象中并不能确保用户表情信息的准确传递,例如对用户悲伤的表情传递不准确等,从而导致表情迁移的效率不高,影响用户在使用应用程序进行表情迁移时的体验。
鉴于此,本申请实施例提供了一种模型训练方法和表情迁移方法,能够提高表情传递的准确性,提高表情迁移的效率,从而提高用户在表情传递时的体验。具体地,可以利用模型训练方法训练好的神经网络模型,对人脸表情的表情基系数进行处理,得到调整后的表情基系数,并利用调整后的表情基系数驱动数字形象,以实现表情的迁移或传递。其中,神经网络模型在训练过程中建立了用户与数字形象之间的表情约束和关联,使得经神经网络模型处理得到的表情基系数在驱动该数字形象时,数字形象可以做出与人脸表情一致的表情,实现面部表情的准确传递。另外,在神经网络模型应用于表情迁移过程的同时,可以利用待处理表情数据对神经网络模型进一步训练,以不断更新神经网络模型的模型参数,提高神经网络模型的精度。
下面结合附图对本申请实施例提供的模型训练方法和表情迁移方法进行详细介绍。
图6示出了本申请实施例提供的一种表情迁移方法的示意性流程图。图6所示的表情方法600可以由图1中的执行设备110执行,或者由执行设备110和训练设备120联合执行。参考图6,该方法600可以包括步骤S610-S650。
S610,获取待处理表情数据,该待处理表情数据包括多个第一视频帧和多个第二视频帧,其中该第一视频帧和该第二视频帧包括源对象的面部图像。
可选地,该待处理表情数据可以为视频数据(即视频流)。相应地,该多个第一视频帧和该多个第二视频帧可以是从该视频数据中一帧帧提取的。该多个第一视频帧可以属于同一视频流,也可以属于不同视频流。该多个第二视频帧可以属于同一视频流,也可以属于不同视频流。第一视频帧和第二视频帧可以属于同一视频流,也可以属于不同视频流。本申请实施例对此均不作限定。
可选地,该待处理表情数据可以为图片集合。相应地,该多个第一视频帧和该多个第二视频帧即为该图片集合中的一张张图片。
可选地,该待处理表情数据可以是利用单个摄像头拍摄得到的,也可以是利用多个摄像头拍摄得到的。摄像头可以为RGB摄像头、深度相机、红外摄像头等。摄像头可以为手机摄像头、相机镜头、电脑摄像头、监控摄像头等。
本申请实施例中,该多个第一视频帧中的每个第一视频帧和该多个第二视频帧的每个第二视频帧包括源对象的面部图像。也就是说,该待处理表情数据对应于同一对象。
可选地,该待处理表情数据可以是一次性获取的,也可以是分多次获取的。当分多次获取待处理表情数据时,本申请实施例对多个第一视频帧和多个第二视频帧的获取顺序和获取时间不作限定,只要在处理第一视频帧之前获取第一视频帧、在处理第二视频帧之前获取第二视频帧即可。因此,本申请实施例中所涉及的步骤序号仅用于区分不同的步骤,并不对该步骤的执行顺序造成限定。
S620,基于第一神经网络模型和第一表情基系数,获取第二表情基系数,其中第一表情基系数基于第一视频帧得到且与源对象对应。
本申请实施例中,第一神经网络模型的输入和输出均为表情基系数,其输入为与源对象对应的表情基系数,即第一表情基系数;其输出为与目标对象对应的表情基系数,即第二表情基系数。换言之,第一神经网络模型用于将与源对象对应的表情基系数进行处理,得到与目标对象对应的表情基系数。
本申请实施例中,根据第一视频帧获取第一表情基系数的实现方式有很多种,在此不作具体限定。例如,可以将第一视频帧输入预先训练好的神经网络模型中,该神经网络模型可以直接输出第一表情基系数。又如,可以对第一视频帧进行一系列处理操作,如人脸定位、关键点检测、三维人脸重建、姿态估计、表情识别等,而得到第一表情基系数,其中每种处理操作还可以有多种实现方式。
可选地,在申请实施例中,可以利用标准表情基组或源对象的个性化表情基组获取第一表情基系数。相应地,第一表情基系数与标准表情基组或源对象的个性化表情基组组合表示的表情与源对象在第一视频帧中所呈现的表情一致。
这里,第一神经网络模型为预先训练好的,其训练过程可以采用以下实施例中所描述的模型训练方法,下文将结合附图进行说明,在此暂不详述。
S630,根据第二表情基系数驱动目标对象,以将第一视频帧中的源对象的表情迁移至目标对象,其中第二表情基系数与目标对象对应。
这里,根据第二表情基系数驱动目标对象,即利用第二表情基系数与目标对象的表情基组组合,使目标对象展现与第一视频帧中的源对象一致的表情。
应理解,步骤S620和S630所涉及的第一视频帧为所获取的多个第一视频帧中的任意一个视频帧。因此,对于多个第一视频帧中的每一帧,均执行步骤S620和S630。相应地,根据每个第一视频帧都可以得到与之对应的第一表情基系数。
S640,当满足预设条件时,基于第二神经网络模型和第三表情基系数,获取第四表情基系数,其中第三表情基系数基于第二视频帧得到且与源对象对应。
本申请实施例中,第二神经网络模型的输入和输出均为表情基系数,其输入为与源对象对应的表情基系数,即第三表情基系数;其输出为与目标对象对应的表情基系数,即第四表情基系数。换言之,第二神经网络模型用于将与源对象对应的表情基系数进行处理,得到与目标对象对应的表情基系数。
本申请实施例中,第二神经网络模型与第一神经网络模型的作用相同,区别在于第一神经网络模型用于处理与第一视频帧中的源对象对应的表情基系数,第二神经网络模型用于处理与第二视频帧中的源对象对应的表情基系数。这里,根据第二视频帧获取第三表情基系数的方式可以与根据第一视频帧获取第一表情基系数的方式相同。
可选地,在申请实施例中,可以利用标准表情基组或源对象的个性化表情基组获取第三表情基系数。相应地,第三表情基系数与标准表情基组或源对象的个性化表情基组组合表示的表情与源对象在第二视频帧中所呈现的表情一致。
本申请实施例中,第二神经网络模型的初始模型参数与第一神经网络模型的初始模型参数相同。可以认为,在执行方法600之前,第一神经网络模型与第二神经网络模型相同。
S650,根据第四表情基系数驱动目标对象,以将第二视频帧中的源对象的表情迁移至目标对象,其中第四表情基系数与目标对象对应。
这里,根据第四表情基系数驱动目标对象,即利用第四表情基系数与目标对象的表情基组组合,使目标对象展现与第二视频帧中的源对象一致的表情。
应理解,步骤S640和S650所涉及的第二视频帧为所获取的多个第二视频帧中的任意一个视频帧。因此,对于多个第二视频帧中的每一帧,均执行步骤S640和S650。相应地,根据每个第二视频帧都可以得到与之对应的第三表情基系数。
本申请实施例中,第一神经网络模型与源对象和目标对象相关联。第二神经网络模型与源对象和目标对象相关联。对于不同的源对象和目标对象的组合,第一神经网络模型不同,第二神经网络模型不同。
本申请实施例中,在第一神经网络模型的应用过程中,第二神经网络模型的模型参数在基于第一训练数据的训练过程中被调整,第一训练数据是根据多个第一视频帧中的至少部分第一视频帧获得的。换言之,在利用第一神经网络模型对基于第一视频帧得到的第一表情基系数进行处理的过程中,还可以利用第一视频帧中的至少部分第一视频帧对第二神经网络模型进行训练。这样,当满足预设条件时,可以将第一神经网络模型替换为第二神经网络模型,然后利用第二神经网络模型继续处理。为方便区分,本申请实施例中将第二神经网络模型继续处理的相关视频帧称为第二视频帧。
可选地,在一些实施例中,该至少部分第一视频帧是从多个第一视频帧中采样得到。这里所涉及的采样,可以是随机采样,也可以是按照一定采样频率采样,例如每隔5个视频帧采样一次等,还可以是连续采样,本申请实施例对此不作限定。
当用于训练第二神经网络模型的第一视频帧的数量小于第一视频帧的总数量时,可以减少训练过程中的计算量,从而减少计算所需资源。
本申请实施例中,第一训练数据所包括的数据类型不同,基于多个第一视频帧中的至少部分第一视频帧获得第一训练数据的过程不同。例如,该第一训练数据可以包括该至少部分第一视频帧,可以包括根据第一视频帧得到的源对象的表情基系数,可以包括源对象表情基系数经第二神经网络模型处理后输出的表情基系数,可以包括源对象表情基系数经第一神经网络模型处理后输出的表情基系数,还可以包括前述几种数据类型的组合,等等。在实际应用中,关于如何获取第一训练数据,可以根据所构建的训练优化函数确定。
可选地,预设条件可以包括:第二神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失小于第一神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失。
可以理解的是,在比较第二神经网络模型对应的表情损失与第一神经网络模型对应的表情损失时,第一神经网络模型与第二神经网络模型的输入应相同,所涉及的待迁移表情的视频帧相同。也就是说,针对某一第一视频帧而言,将该第一视频帧对应的第一表情基系数分别输入到第一神经网络模型和第二神经网络模型中,可以分别得到第一神经网络模型输出的表情基系数和第二神经网络模型输出的表情基系数。利用第一神经网络模型输出的表情基系数驱动目标对象,可以得到目标对象的第一面部图像;利用第二神经网络模型输出的表情基系数驱动目标对象,可以得到目标对象的第二面部图像。第一神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失,可以根据第一面部图像与该第一视频帧之间的表情差异确定。第二神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失,可以根据第二面部图像与该第一视频帧之间的表情差异确定。
当第二神经网络模型对应的表情损失小于第一神经网络模型对应的表情损失时,可以认为第二神经网络模型的精度更高。将同一表情基系数分别输入到第一神经网络模型和第二神经网络模型中时,第二神经网络模型输出的表情基系数与目标对象更匹配,其用于驱动目标对象时,目标对象做出的表情与视频帧中源对象所做出的表情更一致。
本申请实施例中,在获取与源对象对应的表情基系数后,可以利用第一神经网络模型或第二神经网络模型进行处理,得到与目标对象对应的表情系数。利用与目标对象对应的表情基系数驱动目标对象,可以使目标对象做出与源对象一致的表情,实现面部表情的准确传递。另外,在第一神经网络模型应用于表情迁移过程的同时,可以利用待处理表情数据对第二神经网络模型进一步训练,以不断更新第二神经网络模型的模型参数,提高第二神经网络模型的精度。这样,可以丰富第二神经网络模型的训练样本,拓展第二神经网络模型的适用场景,避免出现极端表情传递不准确的问题。当第二神经网络模型对应的表情损失小于第一神经网络模型对应的表情损失时,可以将第一神经网络模型替换为第二神经网络模型,然后利用第二神经网络模型继续处理,从而得到更匹配的表情基系数使得目标对象所展现的表情与源对象的表情一致,实现源对象表情信息的准确传递与表达。
本申请实施例中,与源对象对应的表情基系数经过第一神经网络模型或第二神经网络模型处理后,可以降低表情基系数与身份系数的相关性,或将表情基系数与源对象的身份系数解耦合,减小了源对象的身份系数在表情基系数驱动目标对象过程中的干扰。举例说明,若视频帧中的源对象鼓腮,则在进行人脸重建时,可能会建立一个比较瘦但处于鼓腮的模型,还可能建立一个比较胖但没有鼓腮的模型,根据不同的人脸重建模型得到的表情基系数有不同的结果。直接使用与源对象对应的表情基系数驱动目标对象,可能会得到相差较大的表情。这里,第一神经网络模型或第二神经网络模型可以对表情基系数进行约束,使得表情基系数与身份系数的相关性减小。
可选地,在步骤S640之前,方法600还包括:基于第一训练数据和第一损失函数,对第二神经网络模型进行训练,其中第一损失函数用于梯度回传,以调整第二神经网络模型的模型参数。
也就是说,通过调整第二神经网络模型的模型参数,优化第一损失函数的值,使得第一损失函数收敛至预设值,或者使第一损失函数的损失值变化率小于预设阈值,从而完成第二神经网络模型的训练。这里所涉及的“梯度”是指第二神经网络模型中模型参数大小的梯度。该模型参数大小的梯度通过计算第一损失函数对相应参数的偏导得到。
可选地,第一训练数据包括用于代入第一损失函数中计算损失值的数据。
可选地,第一损失函数可以为L1范数损失函数(也称绝对值损失函数),也可以为L2范数损失函数,还可以为附加正则约束项的L1范数损失函数或附加正则约束项的L2范数损失函数。
可选地,在一些实施例中,第一训练数据包括第一输出结果集合、第二输出结果集合、第一表情识别结果集合和第二表情识别结果集合。
第一输出结果集合包括:基于至少部分第一视频帧中的每个第一视频帧得到的表情基系数经第一神经网络模型处理后输出的调整后表情基系数。换言之,至少部分第一视频帧中的每个第一视频帧都可以得到对应的表情基系数,将这些对应的表情基系数分别输入到第一神经网络模型后,可以得到对应的调整后表情基系数。第一输出结果集合即包括这些由第一神经网络模型输出的调整后表情基系数。
第二输出结果集合包括:基于至少部分第一视频帧中的每个第一视频帧得到的表情基系数经第二神经网络模型处理后输出的调整后表情基系数。换言之,至少部分第一视频帧中的每个第一视频帧都可以得到对应的表情基系数,将这些对应的表情基系数分别输入到第二神经网络模型后,可以得到对应的调整后表情基系数。第二输出结果集合即包括这些由第二神经网络模型输出的调整后表情基系数。
第一表情识别结果集合包括:对至少部分第一视频帧中的每个第一视频帧进行表情识别的结果。
第二表情识别结果集合包括:对第二输出结果集合中的每个输出结果在驱动目标对象时所得到的数字形象帧进行表情识别的结果。也就是说,用第二神经网络模型输出的调整后表情基系数驱动目标对象,可以得到包含目标对象表情的数字形象帧。第二表情识别结果集合即包括对目标对象的表情进行识别的结果。
本申请实施例中,第一训练数据既包括源对象相关的表情数据,还包括目标对象的表情数据,在用于第二神经网络模型的训练时,可以建立源对象与目标对象之间的表情约束和关联。有训练好的第二神经网络模型调整表情基系数后,可以使目标对象与源对象所展现的表情一致,实现用户表情信息的准确传递与表达。另外,基于表情约束还可以为用户提供表情的放大功能。
可选地,在一些实施例中,第一损失函数用于表征第一输出结果集合与第二输出结果集合中对应于同一视频帧的调整后表情基系数之间的差异,以及第一表情识别结果集合与第二表情识别结果集合中对应于同一视频帧的表情识别结果之间的差异。
也就是说,在计算第一损失函数的输出值时,可以根据第一神经网络模型和第二神经网络模型针对同一视频帧的输出结果之间的差异,以及第二神经网络模型的输出驱动目标对象所做出的表情与源对象的表情之间的差异确定。这样,既可以优化第二神经网络模型的模型参数,也不会使第一神经网络模型与第二神经网络模型偏差较大。
可选地,在一些实施例中,方法600还包括:将第一神经网络模型的模型参数更新为与第二神经网络模型的模型参数一致;在第二神经网络模型的应用过程中,在基于第二训练数据的训练过程中调整第一神经网络模型的模型参数,其中第二训练数据是根据多个第二视频帧中的至少部分第二视频帧获得的。
也就是说,在利用第二神经网络模型对基于第二视频帧得到的第三表情基系数进行处理的过程中,还可以利用第二视频帧中的至少部分第二视频帧对第一神经网络模型进行训练。这样可以丰富训练样本,提高神经网络模型的训练精度。
在该实施例中,对第一神经网络模型进行训练的过程与前述对第二神经网络模型进行训练的过程类似,只是训练数据有所不同。具体可参考前文描述,为简洁,在此不再赘述。
图7示出了本申请实施例提供的另一种表情迁移方法的示意性流程图。参考图7,该方法700可以包括步骤S710-S760。
S710,获取待处理表情数据,待处理表情数据包括多个第一视频帧和多个第二视频帧,其中第一视频帧和第二视频帧包括源对象的面部图像。
步骤S710与方法600中的步骤S610相同,具体可参考关于S610的相关描述。
S720,基于第一神经网络模型和第一表情基系数,获取第二表情基系数,其中第一表情基系数基于第一视频帧得到且与源对象对应。
步骤S720与方法600中的步骤S620相同,具体可参考关于S620的相关描述。
S730,根据第二表情基系数驱动目标对象,以将第一视频帧中的源对象的表情迁移至目标对象,其中第二表情基系数与目标对象对应。
步骤S730与方法600中的步骤S630相同,具体可参考关于S630的相关描述。
S740,当满足预设条件时,将第一神经网络模型的模型参数更新为与第二神经网络模型的参数一致,得到调整后的第一神经网络模型。
该预设条件包括:第二神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失小于第一神经网络模型输出的表情基系数用于驱动目标对象时产生的表情损失。
S750,基于调整后的第一神经网络模型和第三表情基系数,获取第四表情基系数,其中第三表情基系数基于第二视频帧得到且与源对象对应。
步骤S750与方法600中的步骤S640类似,区别在于:S640中替换使用第二神经网络模型,S750继续使用调整后的第一神经网络模型。但实际上,调整后的第一神经网络模型与第二神经网络模型是相同的。具体内容可参考关于S640的相关描述。
S760,根据第四表情基系数驱动目标对象,以将第二视频帧中的源对象的表情迁移至目标对象,其中第四表情基系数与目标对象对应。
步骤S760与方法600中的步骤S650相同,具体可参考关于S650的相关描述。
可选地,在一些实施例中,方法700还包括:在调整后的第一神经网络模型的应用过程中,在基于第二训练数据的训练过程中调整第二神经网络模型的模型参数,其中第二训练数据是根据多个第二视频帧中的至少部分第二视频帧获得的。
在利用第一神经网络模型对基于第二视频帧得到的第三表情基系数进行处理的过程中,还可以利用第二视频帧中的至少部分第二视频帧对第二神经网络模型进行训练。这样可以丰富训练样本,提高神经网络模型的训练精度。
需要说明的是,适用于方法600的其他实施例,同样可以结合方法700使用,相关描述可参考关于图6的说明,为简洁,在此不再赘述。
综上,根据方法600和方法700的描述可知,方法600中是交替使用第一神经网络模型和第二神经网络模型对待处理表情数据的表情基系数进行处理,方法600中始终使用第一神经网络模型对待处理表情数据的表情基系数进行处理,但其模型参数可以根据第二神经网络模型的训练结果进行更新。
图8示出了本申请实施例提供的一种模型训练方法的示意性流程图。图8所示的方法800可以由图1中的训练设备120执行。参考图8,该方法800可以包括步骤S810-S870。
S810,获取第一训练帧,第一训练帧包括源对象的面部图像。
该第一训练帧为视频帧或图片。
S820,基于第一训练帧,获取与源对象的面部图像对应的原始表情基系数和头部姿态参数。
实现该步骤的方式可以有多种,本申请实施例对此不作限定。例如,将第一训练帧输入神经网络模型中,由神经网络模型直接输出原始表情基系数和头部姿态参数。再如,可以对第一训练帧进行一系列处理操作,如人脸定位、关键点检测、三维人脸重建、姿态估计、表情识别等,而得到原始表情基系数和头部姿态参数,其中每种处理操作还可以有多种实现方式。
S830,根据原始表情基系数,获取第二训练帧,第二训练帧包括源对象位于正面的面部图像。
可选地,可以将原始表情基系数与源对象的表情基组组合,得到源对象的正面图像。这里所涉及的正面图像可以认为是不带头部姿态参数的图像。
S840,根据原始神经网络模型对原始表情基系数进行处理,得到调整后的表情基系数。
S850,根据调整后的表情基系数和头部姿态参数驱动目标对象,获取第三训练帧,第三训练帧包括目标对象在头部姿态参数下的面部图像。
可选地,可以将调整后的表情基系数与目标对象的表情基组组合,并带入头部姿态参数,可以得到目标对象在头部姿态参数下的面部图像。这里,目标对象的头部旋转、平移程度与源对象的头部旋转、平移程度一致。
S860,根据调整后的表情基系数驱动目标对象,获取第四训练帧,第四训练帧包括目标对象位于正面的面部图像。
可选地,可以将调整后的表情基系数与目标对象的表情基组组合,得到目标对象的正面图像。
S870,根据第一训练帧对应的表情识别结果与第三训练帧对应的表情识别结果之间的差异和/或第二训练帧对应的表情识别结果与第四训练帧对应的表情识别结果之间的差异,调整原始神经网络模型的参数,以获取目标神经网络模型。
本申请实施例中,在训练神经网络模型的过程中,建立了源对象与目标对象之间的表情约束,从而可以建立源对象与目标对象之间的关联。源对象与目标对象之间的表情约束可以使源对象的表情准确的传递到目标对象上,例如将人脸表情传递到数字形象上。不同数字形象之间的表情约束可以建立数字形象之间的关联,实现人脸表情的间接传递。
可选地,在一些实施例中,第一训练帧对应的表情识别结果与第三训练帧对应的表情识别结果之间的差异包括:第一训练帧对应的表情识别结果与第三训练帧对应的表情识别结果之间的曼哈顿距离或欧氏距离。
可选地,在一些实施例中,第二训练帧对应的表情识别结果与第四训练帧对应的表情识别结果之间的差异包括:第二训练帧对应的表情识别结果与第四训练帧对应的表情识别结果之间曼哈顿距离或欧氏距离。
下面结合更为具体的例子对本申请实施例提供的模型训练方法和表情迁移方法进行介绍。可以理解的是,以下实施例是以将人脸表情迁移到数字形象上的场景为例进行描述,即源对象为人,目标对象为数字形象。但对于源对象和目标对象为其他形式的组合,本申请实施例同样适用。
图9示出了本申请实施例提供的一种模型训练方法的示意性流程图。图9所示的模型训练方法900可以是方法800的一个具体的例子。该方法900具体可以包括如下步骤。
S901,获取人脸视频帧{f0,f1,f2,...,fn}。
人脸视频帧指的是带有人脸图像的视频数据中的视频帧,也可以称为视频图像。其中视频帧中的人脸图像是同一用户的。实际上,视频数据中的每个视频帧可以认为是一张图片,因此可选地,在该步骤中也可以获取多张带有人脸图像的图片。也就是说,在该步骤S901中,只要获取到包含面部表情的二维图像(即面部图像样本)即可。
可选地,带有人脸图像的视频数据可以是利用单个摄像头获取的单视角视频数据,也可以是利用多个摄像头在多个角度拍摄得到的多视角视频数据,本申请实施例对此不作限定。但应理解,在该带有人脸图像的视频数据中,应尽可能包括较为丰富的面部表情动作。
可以理解的是,人脸视频帧{f0,f1,f2,...,fn}中的任意一帧可以认为是前述方法800中的第一训练帧的一个具体示例,其中n为正整数。
S902,对于人脸视频帧{f0,f1,f2,...,fn}中的第一训练帧fi(1≤i≤n,i为正整数),获取该第一训练帧fi中的人脸图像对应的原始表情基系数W={w0,w1,w2,...,wk}和头部姿态参数。
原始表情基系数W是一个与第一表情基组中表情基数量匹配的多维系数向量,如为k维系数向量,其中k为正整数。这里第一表情基组指的是与原始表情基系数W组合以表达人脸表情的表情基组。例如,该第一表情基组可以是预设的样本表情基组,也可以是包含面部身份特征的个性化表情基组。
本申请实施例中,对于获取原始表情基系数W的方式不作任何限定,这里可以采用现有的任意一种获取表情基系数的方式。
作为一个示例,可以基于深度学习的方式获取原始表情基系数W。例如,可以将第一训练帧fi输入到预先训练好的神经网络模型中,该神经网络模型的输出即为原始表情基系数W。应理解,此处涉及的神经网络模型是根据人脸图像输出表情基系数的模型。
作为另一个示例,可以采用人脸定位技术、人脸关键点检测技术、三维人脸重建技术、人脸姿态估计技术、人脸表情识别技术等获取原始表情基系数W。其中每种技术还可以有多种实现方案,这些方案均可适用于此。下面仅对各个技术进行简要说明。
人脸定位技术,是指通过人脸检测技术,确定人脸在图片中的位置。
人脸关键点检测技术,是指在人脸图像上定位出一些具有特殊语义信息的点,例如眼睛、鼻尖、嘴唇等。
三维人脸重建技术,是指生成人脸三维模型的技术。例如,可以通过人脸视频帧实现人脸的三维重建。重建出的人脸模型应与视频帧中的人脸具有相同的拓扑结构,即重建出的人脸模型投影到2D图像中的关键点与视频帧中的人脸关键点依然相互对应。人脸模型重建的精度影响着后续表情基系数求解的准确性。
人脸姿态估计技术,是指实现人脸在世界坐标系下的变换估计的技术,主要是要估计出当前图片中的人脸所对应的头部姿态参数。一般来说,三维模型到二维图像的投影过程会经历旋转和平移变换,相应地,本申请实施例中,头部姿态参数包括头部的旋转角度和头部的平移量。头部的旋转角度可以旋转矩阵R表示,头部的平移量可以平移向量T表示。在人脸姿态估计技术中,变换估计的准确性决定着所驱动的数字形象的头部姿态的准确性。
人脸表情识别技术,是指对输入的人脸图像中的面部表情进行分类,识别出该面部表情属于哪种表情。
在三维人脸重建的过程中,重建的人脸模型可以采用类似上述公式(2)的公式,即:
这里,F人脸为重建的人脸模型;为平均的人脸模型,一般为预设的,可以认为是不带表情的中性脸;Bid1为面部身份特征,一般为主成分分析(principal componentanalysis,PCA)的身份基组;βid1为身份系数;Aexp1为表情基组;αexp1为表情基系数。这里,Bid1、βid1、Aexp1、αexp1可以为矩阵或多维向量形式。
也就是说,在平均的人脸模型的基础上,加上βid1Bid1可以恢复出不带表情的用户三维人脸脸型,再加上αexp1Aexp1可以恢复出带有表情的用户三维人脸,从而实现人脸的重建。公式(4)中的Bid1、βid1和αexp1可在三维人脸重建的过程中或之前求解出来。
从公式(4)可以看出,人脸重建的准确度依赖于身份信息和表情信息,身份信息的准确与否直接影响着人脸表情基系数(即原始表情基系数W)的准确性。因此,在一些实施例中,可以约束同一个用户在不同表情下的身份系数来提高身份信息的准确性。具体来说,同一个用户在不同表情下的身份系数应当具有一致性,即应为相同的,因而同一个用户在不同视频帧中的身份系数相互交换,应不影响所生成的人脸模型。
作为示例而非限定,根据第一视频帧可以重建出带有表情1的人脸模型,具体可以得到表情基系数1和身份系数1。根据第二视频帧可以重建出带有表情2的人脸模型,具体可以得到表情基系数2和身份系数2。将身份系数1和2调换,由表情基系数1和身份系数2组合得到的表情应与表情1一致,由表情基系数2和身份系数1组合得到的表情应与表情2一致。因此,可以通过不同身份系数和同一表情基系数组合来重建用户人脸,可以提高人脸重建的准确度。
总而言之,在步骤S902中,只要能够根据人脸图像获取到原始表情基系数W和头部姿态参数即可,具体的获取方式本申请实施例并不限定。
S903,将原始表情基系数W输入到神经网络模型MLP中。
S904,神经网络模型MLP对原始表情基系数W={w0,w1,w2,...,wk}进行处理,输出调整后的表情基系数W′={w′0,w′1,w′2,...,w′k}。
在该步骤中,神经网络模型MLP对原始表情基W进行微调。
S905,根据步骤S904中得到的调整后的表情基系数W′和步骤S902中得到的头部姿态参数驱动数字形象,通过对数字形象进行可微分渲染得到与第一训练帧fi对应的数字形象帧f′i,该数字形象帧f′i为前述第三训练帧的一个具体示例。
在该步骤中,驱动数字形象即将调整后的表情基系数W′与数字形象的表情基组合,使数字形象做出相应表情的过程。为与第一表情基组区分,本申请实施例中将数字形象对应的表情基组称为第二表情基组。
本申请实施例中,通过多次执行步骤S905,可以得到人脸视频帧{f0,f1,f2,...,fn}中的每一视频帧所对应的数字形象帧,因此与人脸视频帧{f0,f1,f2,...,fn}对应的全部数字形象帧可以表示为{f′0,f′1,f′2,...,f′n}。
S906,根据步骤S904中得到的调整后的表情基系数W′生成对应的正面数字形象F′i。
正面数字形象即数字形象的正脸。在该步骤中,可以利用调整后的表情基系数W′和数字形象的模型生成数字形象的正脸。在一些实施例中,正面数字形象也可以理解为利用调整后的表情基系数W′驱动数字形象所得到的不带头部姿态的数字形象帧。该正面数字形象F′i可以理解为是前述第四训练帧的一个具体示例。
本申请实施例中,通过多次执行步骤S906,可以得到人脸视频帧{f0,f1,f2,...,fn}中的每一视频帧所对应的正面数字形象,因此与人脸视频帧{f0,f1,f2,...,fn}对应的全部正面数字形象可以表示为{F′0,F′1,F′2,...,F′n}。
S907,根据步骤S902中得到的原始表情基系数W生成对应的正面人脸Fi。
正面人脸可以理解为恢复出的不带头部姿态参数的人脸。在该步骤中,可以利用原始表情基系数W和恢复出来的人脸模型生成正面人脸。正面人脸Fi可以理解为是前述第二训练帧的一个具体示例。
本申请实施例中,通过多次执行步骤S907,可以得到人脸视频帧{f0,f1,f2,...,fn}中的每一视频帧所对应的正面人脸,因此与人脸视频帧{f0,f1,f2,...,fn}对应的全部正面人脸可以表示为{F0,F1,F2,...,Fn}。
S908,计算损失函数L1,并进行梯度回传,以调整神经网络模型MLP的模型参数。
本申请实施例中的损失函数L1用于表征人脸视频帧与数字形象图像之间的表情差异,其优化目的在于使得输入视频帧的面部表情和所驱动的数字形象的面部表情一致。这里所涉及的“梯度”是指神经网络模型MLP中模型参数大小的梯度。该模型参数大小的梯度可以通过计算损失函数L1对相应参数的偏导得到。
可选地,在一些实施例中,损失函数L1可以为:
L1=||exp(fi)-exp(f′i)||2+||exp(Fi)-exp(F′i)||2 (5)
其中,exp(fi)为根据人脸视频帧中的第一训练帧fi识别出来的表情;exp(f′i)为根据数字形象帧中的对应帧f′i(即第三训练帧)识别出来的表情;exp(Fi)为根据正面人脸Fi(即第二训练帧)识别出来的表情;exp(F′i)为根据正面数字形象F′i(即第四训练帧)识别出来的表情。可选地,exp(fi)、exp(f′i)、exp(Fi)、exp(F′i)可以多维向量或矩阵表示。
||exp(fi)-exp(f′i)||2为人脸视频帧中的面部表情与数字形象帧中的面部表情在表情空间上的距离,该距离越小,说明所驱动的数字形象的表情与人脸视频帧中的表情差异越小,越趋于一致。
||exp(Fi)-exp(F′i)||2为人脸视频帧中的面部在正面的表情与数字形象帧中的面部在正面的表情在表情空间上的距离,该距离越小,说明所驱动的数字形象的正脸表情与人的正脸表情差异越小,越趋于一致。
也就是说,优化公式(5)的输出值,目的在于使人脸视频帧的人脸和数字形象在正脸及实际所展现的姿态(如侧脸)下的表情均一致。因此,损失函数L1的输出值越小越好。
在一些实施例中,可以通过神经网络模型识别表情,例如将人脸视频帧中的第一训练帧fi输入到预先训练好的神经网络模型中,该神经网络模型对第一训练帧fi进行处理,识别出人脸表情,并输出相应的向量表示。
上述公式(5)中利用L2范数建立了人脸视频帧和数字形象帧之间的表情损失约束。
在一些实施例中,损失函数L1还可以为:
L1=||exp(fi)-exp(f′i)||2 (6)
在另一些实施例中,损失函数L1还可以为:
L1=||exp(Fi)-exp(F′i)||2 (7)
公式(6)中包括公式(5)中的前半部分,用于表征人脸视频帧的人脸和数字形象在实际所展现的姿态下的表情差异。
公式(7)中包括公式(5)中的后半部分,用于表征人脸视频帧的人脸和数字形象的正脸表情差异。
若采用公式(6)中所示的损失函数L1,则方法900中可以省略步骤S906和步骤S907。若采用公式(7)中所示的损失函数L1,则方法900可以省略步骤S905。
应理解,在其他一些实施例中,也可以通过其他方式构建损失函数L1,例如利用L1范数构建,本申请实施例对此不作限定。可以理解的是,L1范数为向量的1范数,表示向量中非零元素的绝对值之和,如||X1=∑ixi。L2范数为向量的2范数,表示向量的元素的平方和再开平方,如
在步骤S908之后,根据损失函数L1的结果可以对神经网络模型MLP的模型参数进行调整。至此,完成一次对神经网络模型MLP的训练过程。对于第一训练帧fi后的下一帧,同样执行步骤S901-S908,只不过后一视频帧所使用的神经网络模型的模型参数相比前一帧所使用的神经网络模型的模型参数已经调整。
通过不断调整神经网络模型MLP的模型参数,使损失函数L1不断收敛。当损失函数L1的结果小于预设阈值或者不再减小时,可以认为神经网络模型MLP训练完成。
需要说明的是,为方便理解,图9所示的方法中是以神经网络模型MLP为例进行介绍的,在其他一些实施例中,图9中的神经网络模型MLP可以替换为前述任意一种神经网络,例如卷积神经网络、循环神经网络、深度神经网络等等。
还需要说明的是,为方便理解,图9所示的方法中是以人脸表情迁移到数字形象为例进行的说明,所使用的训练数据包括人脸视频帧和数字形象帧。在其他一些实施例中,人脸视频帧还可以替换为其他数字形象的图像,这样训练出来的神经网络模型用于在数字形象之间传递表情。
本申请实施例中,通过构建人脸视频帧与数字形象的表情损失函数L1来训练神经网络模型,训练好的神经网络模型与人脸视频帧中的用户以及所驱动的数字形象相关联。
图10示出了本申请实施例提供的一种表情迁移方法的示意性流程图。图10所示的方法1000可以是方法600或方法700的一个具体的例子。图10所示的方法1000可以包括如下步骤。
S1001,获取人脸视频帧{g0,g1,g2,...,gt}。
该步骤中所获取的人脸视频帧为待处理的视频帧,包括待处理表情数据,其中t为正整数。步骤S1001中的人脸视频帧中的人脸与步骤S901中的人脸视频帧中的人脸应属于同一用户。
S1002,对于人脸视频帧{g0,g1,g2,...,gt}中的任意帧gi(1≤i≤t,i为正整数),获取该视频帧gi中的人脸图像对应的第一表情基系数M={m0,m1,m2,...,mk}。
这里,第一表情基系数M为k维系数向量,k为正整数。本申请实施例中,获取第一表情基系数M的方式可以与方法900中获取原始表情基系数W的方式相同,具体可参考上文相关描述,在此不再赘述。
S1003,将第一表情基系数M输入到第一MLP中。
这里,第一MLP为经方法900训练好的神经网络模型MLP。
S1004,第一MLP对第一表情基系数M={m0,m1,m2,...,mk}进行处理,输出第二表情基系数M′={m′0,m′1,m′2,...,m′k}。
S1005,根据步骤S1004中得到的第二表情基系数M′驱动数字形象。通过对数字形象进行可微分渲染可以得到与人脸视频帧gi对应的数字形象帧g′i。
在该步骤中,数字形象帧g′i中数字形象的表情与人脸视频帧gi中的人脸表情一致。步骤S1005所驱动的数字形象与方法900中的涉及的数字形象为同一数字形象。
本申请实施例中,通过多次执行步骤S1005,可以得到人脸视频帧{g0,g1,g2,...,gt}中的每一视频帧所对应的数字形象帧,因此与人脸视频帧{g0,g1,g2,...,gt}对应的全部数字形象帧可以表示为{g′0,g′1,g′2,...,g′t}。
S1006,在对人脸视频帧{g0,g1,g2,...,gt}中的每一帧执行步骤S1002的过程中,对步骤S1002中得到的第一表情基系数进行数据采样,并将采样得到的第一表情基系数输入到第二MLP中。例如,将任意帧gi对应的第一表情基系数M输入到第二MLP中。
当然,在其他一些实施例中,也可以对人脸视频帧{g0,g1,g2,...,gt}进行采样,再根据采样得到的人脸视频帧确定对应的表情基系数后,将其输入到第二MLP中。
本申请实施例中,数据采样的频率可以为每隔P帧采样一次,这里P可以为1、2、4、7或者其他大于1的正整数。当然,也可以随机采样或连续采样,本申请实施例并不限定。
可选地,第二MLP也为经方法900训练好的神经网络模型MLP,其中第二MLP的初始模型参数与第一MLP的初始模型参数相同。
S1007,第二MLP对第一表情基系数M={m0,m1,m2,...,mk}进行处理,输出第五表情基系数M″={m″0,m″1,m″2,...,m″k}。
S1008,根据步骤S1007中得到的第五表情基系数M″可以得到与人脸视频帧对应的数字形象帧g″i。
本申请实施例中,通过多次执行步骤S1008,可以得到每一个采样视频帧所对应的数字形象帧,因此与采样视频帧对应的全部数字形象帧可以表示为{g″0,g″1,g″2,...,g″t}。
可以理解的是,若第一MLP与第二MLP的模型参数相同,则将第一表情基系数M分别输入到第一MLP和第二MLP后,所得到的第二表情基系数M′和第五表情基系数M″相同。相应地,第二表情基系数M′与数字形象的表情基组合所呈现的表情应同第五表情基系数M″与数字形象的表情基组合所呈现的表情相同。
S1009,计算第一损失函数L2,并进行梯度回传,以调整第二MLP的模型参数。
本申请实施例中,第一损失函数L2用于表征采样视频帧与数字形象图像之间的表情差异,其优化目的在于使得采样视频帧的面部表情和所驱动的数字形象的面部表情一致。
可选地,在一些实施例中,第一损失函数L2可以为:
L2=||exp(gi)-exp(g″i)||2+λ||M″-M′||2 (8)
其中,exp(gi)为根据采样视频帧gi识别出来的表情;exp(g″i)为根据对应的数字形象帧g″i识别出来的表情;λ为超参数,即人为设置的参数,而不是通过训练得到的参数。可选地,exp(gi)、exp(g″i)可以多维向量或矩阵表示。
||exp(gi)-exp(g″i)||2为采样视频帧中的面部表情与数字形象帧中的面部表情在表情空间上的距离,该距离越小,数字形象的表情与采样视频帧中的表情差异越小,越趋于一致。
||M″-M′||2为第五表情基系数与M″与第二表情基系数M′之间的距离,该距离越小,第五表情基系数与M″与第二表情基系数M′的差异越小。通过约束||M″-M′||2,可以防止模型为了迎合训练集而过于复杂造成过拟合的情况,可以提高模型的泛化能力。
通过优化公式(8),可以使采样视频帧的人脸和数字形象的表情一致,并且约束第一MLP与第二MLP之间的差距不要过大。因此,第一损失函数L2越小越好。上述公式(8)中利用L2范数建立了采样视频帧和数字形象帧之间的表情损失约束。
应理解,在其他一些实施例中,也可以通过其他方式构建第一损失函数L2,例如利用L1范数构建,本申请实施例对此不作限定。
在步骤S1006之后,根据第一损失函数L2的结果可以对第二MLP的模型参数进行调整。步骤S1006-S1009可以认为是完成了一次对第二MLP的训练过程。对于采样视频帧gi后的下一采样视频帧,同样执行步骤S1006-S1009,只不过后一采样视频帧所使用的第二MLP的模型参数相比前一采样视频帧所使用的第二MLP的模型参数已经发生变化。
当经由第二MLP处理得到的第五表情基系数在驱动数字形象时,其表情损失小于经由第一MLP处理得到的第二表情基系数在驱动数字形象的表情损失时,可以对第一MLP的模型参数进行更新。例如,可以将第一MLP的模型参数替换为第二MLP的模型参数,即将第二MLP的模型参数赋予到第一MLP上。又如,也可以直接第一MLP替换为训练好的第二MLP,直接使用第二MLP进行表情基系数的微调,以驱动数字形象,同时将第一MLP的模型参数更新,以对第一MLP进行如步骤S1006-S1009所示的训练过程。
因此,在实际使用中,可以训练好的第一MLP上实时输出表情基系数,同时实时采样数据并调整第二MLP。当第二MLP在采样数据集中的表情损失小于第一MLP时,使用第二MLP替换第一MLP。此时的第二MLP继续实时输出表情基系数,第一MLP继续实时训练。第二MLP的训练过程与第一MLP的训练过程异步,利用待处理表情数据进行训练,可以丰富训练样本,避免出现极端表情未能准确传递的情况。
本申请实施例提供的表情迁移方法可以在服务器端应用,还可以在用户终端上应用。用户终端可以为智能手机、平板电脑、笔记本电脑、台式计算机等。服务器端可以由具有处理功能的计算机来实现,本申请实施例不限于此。
上文结合图1至图10详细的描述了本申请实施例的方法实施例,下面结合图11至图12,详细描述本申请实施例的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图11示出了本申请实施例提供的一种装置的示意性结构图。图11所示的装置1100包括获取单元1101和处理单元1102。
若装置1100用于执行申请实施例提供的表情迁移方法,该装置1100可以位于图1所示的执行设备110或其他设备中。该装置1100可用于执行图6或图7所示的表情迁移方法,还可用于执行图10所示的实施例。
获取单元1101可以用于执行方法600中的步骤S610、S620、S640,或者执行方法700中的步骤S710、S720、S750。
处理单元1102可以用于执行方法600中的步骤S630、S650,或者执行方法700中的步骤S730、S740、S760。
若装置1100用于执行申请实施例提供的模型训练方法,该装置1100可以位于图1所示的训练设备120或其他设备中。该装置1100可用于执行图8所示的模型训练方法,还可用于执行图9所示的实施例。
获取单元1101可以用于执行方法800中的步骤S810-S860。
处理单元1102可以用于执行方法800中的步骤S870。
图12示出了本申请实施例提供的一种装置的硬件结构示意图。图12所示的装置1200包括存储器1201、处理器1202、通信接口1203以及总线1204。其中,存储器1201、处理器1202、通信接口1203通过总线1204实现彼此之间的通信连接。
存储器1201可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器1201可以存储程序,当存储器1201中存储的程序被处理器1202执行时,处理器1202和通信接口1203用于执行本申请实施例的模型训练方法的各个步骤。
处理器1202可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的模型训练装置中的单元所需执行的功能,或者执行本申请实施例的模型训练方法。
处理器1202还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的模型训练方法的各个步骤可以通过处理器1202中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1202还可以是通用处理器、数字信号处理器(digitalsignal processing,DSP)、专用集成电路、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1201,处理器1202读取存储器1201中的信息,结合其硬件完成本申请实施例的模型训练装置中包括的单元所需执行的功能,或者执行本申请实施例的模型训练方法。
通信接口1203使用例如但不限于收发器一类的收发装置,来实现装置1200与其他设备或通信网络之间的通信。
总线1204可包括在装置1200各个部件(例如,存储器1201、处理器1202、通信接口1203)之间传送信息的通路。
本申请实施例还提供了一种表情迁移装置的硬件结构示意图,其结构与图12的用于模型训练的装置的结构相同,因此仍参考图12对表情迁移装置进行描述。
装置1200包括存储器1201、处理器1202、通信接口1203以及总线1204。其中,存储器1201、处理器1202、通信接口1203通过总线1204实现彼此之间的通信连接。
存储器1201可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器1201可以存储程序,当存储器1201中存储的程序被处理器1202执行时,处理器1202和通信接口1203用于执行本申请实施例的表情迁移方法的各个步骤。
处理器1202可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的表情迁移装置中的单元所需执行的功能,或者执行本申请实施例的表情迁移方法。
处理器1202还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的表情迁移方法的各个步骤可以通过处理器1202中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1202还可以是通用处理器、数字信号处理器(digitalsignal processing,DSP)、专用集成电路、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1201,处理器1202读取存储器1201中的信息,结合其硬件完成本申请实施例的表情迁移装置中包括的单元所需执行的功能,或者执行本申请实施例的表情迁移方法。
通信接口1203使用例如但不限于收发器一类的收发装置,来实现装置1200与其他设备或通信网络之间的通信。
总线1204可包括在装置1200各个部件(例如,存储器1201、处理器1202、通信接口1203)之间传送信息的通路。
本申请实施例还提供一种计算机程序存储介质,该计算机程序存储介质具有程序指令,当该程序指令被直接或者间接执行时,使得前文中的模型训练方法或表情迁移方法得以实现。
本申请实施例还提供一种芯片***,该芯片***包括至少一个处理器,当程序指令在该至少一个处理器中执行时,使得前文中的模型训练方法或表情迁移方法得以实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种表情迁移方法,其特征在于,包括:
获取待处理表情数据,所述待处理表情数据包括多个第一视频帧和多个第二视频帧,其中所述第一视频帧和所述第二视频帧包括源对象的面部图像;
基于第一神经网络模型和第一表情基系数,获取第二表情基系数,其中所述第一表情基系数基于所述第一视频帧得到且与所述源对象对应;
根据所述第二表情基系数驱动目标对象,以将所述第一视频帧中的源对象的表情迁移至所述目标对象,其中所述第二表情基系数与所述目标对象对应;
当满足预设条件时,
基于第二神经网络模型和第三表情基系数,获取第四表情基系数,其中所述第三表情基系数基于所述第二视频帧得到且与所述源对象对应;
根据所述第四表情基系数驱动所述目标对象,以将所述第二视频帧中的源对象的表情迁移至所述目标对象,其中所述第四表情基系数与所述目标对象对应;
其中,所述第二神经网络模型的初始模型参数与所述第一神经网络模型的初始模型参数相同,且在所述第一神经网络模型的应用过程中,所述第二神经网络模型的模型参数在基于第一训练数据的训练过程中被调整,所述第一训练数据是根据所述多个第一视频帧中的至少部分第一视频帧获得的;
所述预设条件包括:
所述第二神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失小于所述第一神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失。
2.根据权利要求1所述的方法,其特征在于,
所述第一神经网络模型与所述源对象和所述目标对象相关联;
所述第二神经网络模型与所述源对象和所述目标对象相关联。
3.根据权利要求1或2所述的方法,其特征在于,在所述基于第二神经网络模型和第三表情基系数,获取第四表情基系数之前,所述方法还包括:
基于所述第一训练数据和第一损失函数,对所述第二神经网络模型进行训练,其中所述第一损失函数用于梯度回传,以调整所述第二神经网络模型的模型参数。
4.根据权利要求3所述的方法,其特征在于,所述第一训练数据包括第一输出结果集合、第二输出结果集合、第一表情识别结果集合和第二表情识别结果集合;其中,
所述第一输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第一神经网络模型处理后输出的调整后表情基系数;
所述第二输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第二神经网络模型处理后输出的调整后表情基系数;
所述第一表情识别结果集合包括:对所述至少部分第一视频帧中的每个第一视频帧进行表情识别的结果;
所述第二表情识别结果集合包括:对所述第二输出结果集合中的每个输出结果在驱动所述目标对象时所得到的数字形象帧进行表情识别的结果。
5.根据权利要求4所述的方法,其特征在于,所述第一损失函数用于表征所述第一输出结果集合与所述第二输出结果集合中对应于同一视频帧的调整后表情基系数之间的差异,以及所述第一表情识别结果集合与所述第二表情识别结果集合中对应于所述同一视频帧的表情识别结果之间的差异。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述至少部分第一视频帧是从所述多个第一视频帧中采样得到。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
将所述第一神经网络模型的模型参数更新为与所述第二神经网络模型的模型参数一致;
在所述第二神经网络模型的应用过程中,在基于第二训练数据的训练过程中调整所述第一神经网络模型的模型参数,其中所述第二训练数据是根据所述多个第二视频帧中的至少部分第二视频帧获得的。
8.一种表情迁移方法,其特征在于,包括:
获取待处理表情数据,所述待处理表情数据包括多个第一视频帧和多个第二视频帧,其中所述第一视频帧和所述第二视频帧包括源对象的面部图像;
基于第一神经网络模型和第一表情基系数,获取第二表情基系数,其中所述第一表情基系数基于所述第一视频帧得到且与所述源对象对应;
根据所述第二表情基系数驱动目标对象,以将所述第一视频帧中的源对象的表情迁移至所述目标对象,其中所述第二表情基系数与所述目标对象对应;
当满足预设条件时,将所述第一神经网络模型的模型参数更新为与第二神经网络模型的参数一致,得到调整后的第一神经网络模型;
基于所述调整后的第一神经网络模型和第三表情基系数,获取第四表情基系数,其中所述第三表情基系数基于所述第二视频帧得到且与所述源对象对应;
根据所述第四表情基系数驱动所述目标对象,以将所述第二视频帧中的源对象的表情迁移至所述目标对象,其中所述第四表情基系数与所述目标对象对应;
其中,所述第二神经网络模型的初始模型参数与所述第一神经网络模型的初始模型参数相同,且在所述第一神经网络模型的应用过程中,所述第二神经网络模型的模型参数在基于第一训练数据的训练过程中被调整,所述第一训练数据是根据所述多个第一视频帧中的至少部分第一视频帧获得的;
所述预设条件包括:
所述第二神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失小于所述第一神经网络模型输出的表情基系数用于驱动所述目标对象时产生的表情损失。
9.根据权利要求8所述的方法,其特征在于,
所述第一神经网络模型与所述源对象和所述目标对象相关联;
所述第二神经网络模型与所述源对象和所述目标对象相关联。
10.根据权利要求8或9所述的方法,其特征在于,在所述将所述第一神经网络模型的模型参数更新为与第二神经网络模型的参数一致之前,所述方法还包括:
基于所述第一训练数据和第一损失函数,对所述第二神经网络模型进行训练,其中所述第一损失函数用于梯度回传,以调整所述第二神经网络模型的模型参数。
11.根据权利要求10所述的方法,其特征在于,所述第一训练数据包括第一输出结果集合、第二输出结果集合、第一表情识别结果集合和第二表情识别结果集合;其中,
所述第一输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第一神经网络模型处理后输出的调整后表情基系数;
所述第二输出结果集合包括:基于所述至少部分第一视频帧中的每个第一视频帧得到的表情基系数经所述第二神经网络模型处理后输出的调整后表情基系数;
所述第一表情识别结果集合包括:对所述至少部分第一视频帧中的每个第一视频帧进行表情识别的结果;
所述第二表情识别结果集合包括:对所述第二输出结果集合中的每个输出结果在驱动所述目标对象时所得到的数字形象帧进行表情识别的结果。
12.根据权利要求11所述的方法,其特征在于,所述第一损失函数用于表征所述第一输出结果集合与所述第二输出结果集合中对应于同一视频帧的调整后表情基系数之间的差异,以及所述第一表情识别结果集合与所述第二表情识别结果集合中对应于所述同一视频帧的表情识别结果之间的差异。
13.根据权利要求8至12中任一项所述的方法,其特征在于,所述至少部分第一视频帧是从所述多个第一视频帧中采样得到。
14.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
在所述调整后的第一神经网络模型的应用过程中,在基于第二训练数据的训练过程中调整所述第二神经网络模型的模型参数,其中所述第二训练数据是根据所述多个第二视频帧中的至少部分第二视频帧获得的。
15.一种模型训练方法,其特征在于,包括:
获取第一训练帧,所述第一训练帧包括源对象的面部图像;
基于所述第一训练帧,获取与所述源对象的面部图像对应的原始表情基系数和头部姿态参数;
根据所述原始表情基系数,获取第二训练帧,所述第二训练帧包括所述源对象位于正面的面部图像;
根据原始神经网络模型对所述原始表情基系数进行处理,得到调整后的表情基系数;
根据所述调整后的表情基系数和所述头部姿态参数驱动目标对象,获取第三训练帧,所述第三训练帧包括所述目标对象在所述头部姿态参数下的面部图像;
根据所述调整后的表情基系数驱动所述目标对象,获取第四训练帧,所述第四训练帧包括所述目标对象位于正面的面部图像;
根据所述第一训练帧对应的表情识别结果与所述第三训练帧对应的表情识别结果之间的差异和/或所述第二训练帧对应的表情识别结果与所述第四训练帧对应的表情识别结果之间的差异,调整所述原始神经网络模型的参数,以获取目标神经网络模型。
16.根据权利要求15所述的方法,其特征在于,
所述第一训练帧对应的表情识别结果与所述第三训练帧对应的表情识别结果之间的差异包括:
所述第一训练帧对应的表情识别结果与所述第三训练帧对应的表情识别结果之间的曼哈顿距离或欧氏距离;
和/或,
所述第二训练帧对应的表情识别结果与所述第四训练帧对应的表情识别结果之间的差异包括:
所述第二训练帧对应的表情识别结果与所述第四训练帧对应的表情识别结果之间曼哈顿距离或欧氏距离。
17.一种表情迁移装置,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述存储器存储的程序,当所述处理器执行所述存储器存储的程序时,所述处理器用于执行权利要求1至14中任一项所述的方法。
18.一种模型训练装置,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述存储器存储的程序,当所述处理器执行所述存储器存储的程序时,所述处理器用于执行权利要求15或16所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码被所述设备执行时,所述设备执行如权利要求1至14中任一项所述的表情迁移方法或者如权利要求15或16所述的模型训练方法。
20.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行如权利要求1至14中任一项所述的表情迁移方法或者如权利要求15或16所述的模型训练方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210105861.0A CN116563450A (zh) | 2022-01-28 | 2022-01-28 | 表情迁移方法、模型训练方法和装置 |
PCT/CN2022/143944 WO2023142886A1 (zh) | 2022-01-28 | 2022-12-30 | 表情迁移方法、模型训练方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210105861.0A CN116563450A (zh) | 2022-01-28 | 2022-01-28 | 表情迁移方法、模型训练方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116563450A true CN116563450A (zh) | 2023-08-08 |
Family
ID=87470509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210105861.0A Pending CN116563450A (zh) | 2022-01-28 | 2022-01-28 | 表情迁移方法、模型训练方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116563450A (zh) |
WO (1) | WO2023142886A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116757923B (zh) * | 2023-08-16 | 2023-12-08 | 腾讯科技(深圳)有限公司 | 一种图像生成方法、装置、电子设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229268A (zh) * | 2016-12-31 | 2018-06-29 | 商汤集团有限公司 | 表情识别及卷积神经网络模型训练方法、装置和电子设备 |
CN111971713A (zh) * | 2018-06-14 | 2020-11-20 | 英特尔公司 | 使用图像和时间跟踪神经网络进行的3d面部捕获和修改 |
CN109684911B (zh) * | 2018-10-30 | 2021-05-11 | 百度在线网络技术(北京)有限公司 | 表情识别方法、装置、电子设备及存储介质 |
CN109753938B (zh) * | 2019-01-10 | 2021-11-05 | 京东方科技集团股份有限公司 | 图像识别方法和设备及应用、神经网络的训练方法 |
WO2021034463A1 (en) * | 2019-08-19 | 2021-02-25 | Neon Evolution Inc. | Methods and systems for image and voice processing |
CN113570029A (zh) * | 2020-04-29 | 2021-10-29 | 华为技术有限公司 | 获取神经网络模型的方法、图像处理方法及装置 |
CN111783620A (zh) * | 2020-06-29 | 2020-10-16 | 北京百度网讯科技有限公司 | 表情识别方法、装置、设备及存储介质 |
-
2022
- 2022-01-28 CN CN202210105861.0A patent/CN116563450A/zh active Pending
- 2022-12-30 WO PCT/CN2022/143944 patent/WO2023142886A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023142886A1 (zh) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11610122B2 (en) | Generative adversarial neural network assisted reconstruction | |
US11625613B2 (en) | Generative adversarial neural network assisted compression and broadcast | |
CN111354079B (zh) | 三维人脸重建网络训练及虚拟人脸形象生成方法和装置 | |
CN111667399B (zh) | 风格迁移模型的训练方法、视频风格迁移的方法以及装置 | |
US11232286B2 (en) | Method and apparatus for generating face rotation image | |
Du et al. | Representation learning of temporal dynamics for skeleton-based action recognition | |
JP7373554B2 (ja) | クロスドメイン画像変換 | |
WO2021184933A1 (zh) | 一种人体三维模型重建方法 | |
CN112614213B (zh) | 人脸表情确定方法、表情参数确定模型、介质及设备 | |
CN111583399B (zh) | 图像处理方法、装置、设备、介质和电子设备 | |
CN109684969B (zh) | 凝视位置估计方法、计算机设备及存储介质 | |
Yang et al. | Facial expression recognition based on dual-feature fusion and improved random forest classifier | |
CN112085835B (zh) | 三维卡通人脸生成方法、装置、电子设备及存储介质 | |
WO2022052782A1 (zh) | 图像的处理方法及相关设备 | |
Bashirov et al. | Real-time rgbd-based extended body pose estimation | |
CN111462274A (zh) | 一种基于smpl模型的人体图像合成方法及*** | |
Neverova | Deep learning for human motion analysis | |
WO2023142886A1 (zh) | 表情迁移方法、模型训练方法和装置 | |
RU2755396C1 (ru) | Нейросетевой перенос выражения лица и позы головы с использованием скрытых дескрипторов позы | |
Zacharatos et al. | Emotion recognition from 3D motion capture data using deep CNNs | |
US20230298243A1 (en) | 3d digital avatar generation from a single or few portrait images | |
CN113313133A (zh) | 一种生成对抗网络的训练方法、动画图像生成方法 | |
CN116977547A (zh) | 一种三维人脸重建方法、装置、电子设备和存储介质 | |
CN116079727A (zh) | 基于3d人体姿态估计的人形机器人动作模仿方法及装置 | |
GB2613240A (en) | Transformer-based shape models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |