导读
高保真 3D 人脸重建在许多场景中都有广泛的应用,例如 AR/VR、医疗、电影制作等。尽管大量的工作已经使用 LightStage 等专业硬件实现了出色的重建效果,从单一或稀疏视角的单目图像估计高精细的面部模型仍然是一个具有挑战性的任务。
本文,我们将介绍文本生成3D头部模型,结合了文生图stable diffusion模型和头部重建模型HRN,以文本为输入,可生成高质量3D头部。头部重建模型HRN在单图人脸重建榜单REALY上取得正脸、侧脸双榜第一,并在其他多个数据集中取得了SOTA的效果。
prompt: a girl with freckles and blue eyes.
prompt: a clown with red nose.
该文本生成3D头部模型包含了text-to-image以及head reconstruction两个部分,首先利用sd+controlnet进行文本引导的、姿态可控的人脸图像生成,而后利用HRN算法重建出3D头部,从而实现文生3D头部的功能。
HRN算法简介:
HRN是一种新颖的层次化表征网络,以实现单图的高精细人脸重建。 具体来说,HRN对人脸几何细节进行了解耦并引入了层次表征来实现精细的人脸建模。 同时,结合面部细节的3D先验,提高重建结果的准确性和真实性。HRN还提出了一个de-retouching模块,以实现更好的几何和纹理解耦。 值得注意的是,通过考虑不同视图的细节一致性,HRN框架可以扩展到多视图重建。 在两个单视图和两个多视图人脸重建基准上的大量实验表明,HRN框架方法在重建精度和视觉效果方面优于现有方法。
魔搭社区最佳实践
使用方式
输入文本描述(目前仅支持英文),返回对应符合文本描述的3D模型(.obj文件+纹理贴图)。
模型参数
hair_tex: pipeline参数,可在configuration.json中修改,或者在pipeline初始化中传入,如:
当hair_tex为True时(默认),将输出带头发的纹理,如以上第一个示例。
当hair_tex为False时,将输出光头的纹理,如以上第二个示例.
使用范围
请输入人物描述词,当输入描述词与人无关时,可能会失败。
由于HRN是基于真实人脸的重建模型,所以当目标与真实人头越相近时,效果越好。
目标场景
影视、娱乐等。
最佳实践代码
本模型基于pytorch进行训练和推理,在ModelScope框架上,提供输入描述词,即可以通过简单的Pipeline调用来使用text-to-head模型。
import os import cv2 from modelscope.models.cv.face_reconstruction.utils import write_obj from modelscope.outputs import OutputKeys from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks def save_results(result, save_root): os.makedirs(save_root, exist_ok=True) # export obj and texture mesh = result[OutputKeys.OUTPUT]['mesh'] texture_map = result[OutputKeys.OUTPUT_IMG] mesh['texture_map'] = texture_map write_obj(os.path.join(save_root, 'text_to_head_result.obj'), mesh) print(f'Output written to {os.path.abspath(save_root)}') text_to_head = pipeline(Tasks.text_to_head, model='damo/cv_HRN_text-to-head', model_revision='v0.2') result = text_to_head('a clown with red nose') save_results(result, './text_to_head_results')
预处理
对输入的prompt进行优化,加入后缀描述词,反向描述词等。
后处理
将顶点坐标、三角面片、贴图等数据转化为obj等模型文件。
欢迎开发者们来魔搭社区体验!
点击直达示例开源模型链接
https://www.modelscope.cn/models/damo/cv_HRN_text-to-head/summary