数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain 深度学习模型工具
数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain 深度学习模型工具
1.介绍
FaceChain 是一个可以用来打造个人数字形象的深度学习模型工具。用户仅需要提供最低一张照片即可获得独属于自己的个人形象数字替身。FaceChain 支持在 gradio 的界面中使用模型训练和推理能力,也支持资深开发者使用 python 脚本进行训练推理;同时,欢迎开发者对本 Repo 进行继续开发和贡献。FaceChain 的模型由ModelScope开源模型社区提供支持。
2.环境准备
兼容性验证 FaceChain 是一个组合模型,使用了包括 PyTorch 和 TensorFlow 在内的机器学习框架,以下是已经验证过的主要环境依赖:
python 环境: py3.8, py3.10
pytorch 版本: torch2.0.0, torch2.0.1
tensorflow 版本: 2.8.0, tensorflow-cpu
CUDA 版本: 11.7
CUDNN 版本: 8+
操作系统版本: Ubuntu 20.04, CentOS 7.9
GPU 型号: Nvidia-A10 24G
资源要求
GPU: 显存占用约 19G
磁盘: 推荐预留 50GB 以上的存储空间
2.安装指南
支持以下几种安装方式,任选其一:
2.1. 使用 ModelScope 提供的 notebook 环境【推荐】
ModelScope(魔搭社区)提供给新用户初始的免费计算资源,参考ModelScope Notebook
如果初始免费计算资源无法满足要求,您还可以从上述页面开通付费流程,以便创建一个准备就绪的 ModelScope(GPU) DSW 镜像实例。
Notebook 环境使用简单,您只需要按以下步骤操作(注意:目前暂不提供永久存储,实例重启后数据会丢失):
除了 ModelScope 入口以外,您也可以前往PAI-DSW 直接购买带有 ModelScope 镜像的计算实例(推荐使用 A10 资源),这样同样可以使用如上的最简步骤运行起来。
2.2 docker 镜像
如果您熟悉 docker,可以使用我们提供的 docker 镜像,其包含了模型依赖的所有组件,无需复杂的环境安装:
2.3. conda 虚拟环境
使用 conda 虚拟环境,参考Anaconda来管理您的依赖,安装完成后,执行如下命令:(提示: mmcv 对环境要求较高,可能出现不适配的情况,推荐使用 docker 方式)
备注:如果是 Windows 环境还需要注意以下步骤:
如果您想要使用"人物说话视频生成"标签页的功能,请参考installation_for_talkinghead_ZH里的安装使用教程。
2.4. colab 运行
备注:app 服务成功启动后,在 log 中访问页面 URL,进入”形象定制“tab 页,点击“选择图片上传”,并最少选 1 张包含人脸的图片;点击“开始训练”即可训练模型。训练完成后日志中会有对应展示,之后切换到“形象体验”标签页点击“开始生成”即可生成属于自己的数字形象。
2.5 脚本运行
如果不想启动服务,而是直接在命令行进行开发调试等工作,FaceChain 也支持在 python 环境中直接运行脚本进行训练和推理。在克隆后的文件夹中直接运行如下命令来进行训练:
参数含义:
等待 5-20 分钟即可训练完成。用户也可以调节其他训练超参数,训练支持的超参数可以查看train_lora.sh
的配置,或者facechain/train_text_to_image_lora.py
中的完整超参数列表。
进行推理时,请编辑 run_inference.py 中的代码:
之后执行:
即可在output_dir
中找到生成的个人数字形象照片。
3.算法介绍
3.1 基本原理
个人写真模型的能力来源于 Stable Diffusion 模型的文生图功能,输入一段文本或一系列提示词,输出对应的图像。我们考虑影响个人写真生成效果的主要因素:写真风格信息,以及用户人物信息。为此,我们分别使用线下训练的风格 LoRA 模型和线上训练的人脸 LoRA 模型以学习上述信息。LoRA 是一种具有较少可训练参数的微调模型,在 Stable Diffusion 中,可以通过对少量输入图像进行文生图训练的方式将输入图像的信息注入到 LoRA 模型中。因此,个人写真模型的能力分为训练与推断两个阶段,训练阶段生成用于微调 Stable Diffusion 模型的图像与文本标签数据,得到人脸 LoRA 模型;推断阶段基于人脸 LoRA 模型和风格 LoRA 模型生成个人写真图像。
3.2 训练阶段
输入:用户上传的包含清晰人脸区域的图像
输出:人脸 LoRA 模型
描述:首先,我们分别使用基于朝向判断的图像旋转模型,以及基于人脸检测和关键点模型的人脸精细化旋转方法处理用户上传图像,得到包含正向人脸的图像;接下来,我们使用人体解析模型和人像美肤模型,以获得高质量的人脸训练图像;随后,我们使用人脸属性模型和文本标注模型,结合标签后处理方法,产生训练图像的精细化标签;最后,我们使用上述图像和标签数据微调 Stable Diffusion 模型得到人脸 LoRA 模型。
3.3 推断阶段
输入:训练阶段用户上传图像,预设的用于生成个人写真的输入提示词
输出:个人写真图像
描述:首先,我们将人脸 LoRA 模型和风格 LoRA 模型的权重融合到 Stable Diffusion 模型中;接下来,我们使用 Stable Diffusion 模型的文生图功能,基于预设的输入提示词初步生成个人写真图像;随后,我们使用人脸融合模型进一步改善上述写真图像的人脸细节,其中用于融合的模板人脸通过人脸质量评估模型在训练图像中挑选;最后,我们使用人脸识别模型计算生成的写真图像与模板人脸的相似度,以此对写真图像进行排序,并输出排名靠前的个人写真图像作为最终输出结果。
3.4 模型列表
附(流程图中模型链接)
[1] 人脸检测+关键点模型 DamoFD:https://modelscope.cn/models/damo/cv_ddsar_face-detection_iclr23-damofd
[2] 图像旋转模型:创空间内置模型
[3] 人体解析模型 M2FP:https://modelscope.cn/models/damo/cv_resnet101_image-multiple-human-parsing
[4] 人像美肤模型 ABPN:https://www.modelscope.cn/models/damo/cv_unet_skin_retouching_torch
[5] 人脸属性模型 FairFace:https://modelscope.cn/models/damo/cv_resnet34_face-attribute-recognition_fairface
[6] 文本标注模型 Deepbooru:https://github.com/KichangKim/DeepDanbooru
[7] 模板脸筛选模型 FQA:https://modelscope.cn/models/damo/cv_manual_face-quality-assessment_fqa
[8] 人脸融合模型:https://www.modelscope.cn/models/damo/cv_unet_face_fusion_torch
[9] 人脸识别模型 RTS:https://modelscope.cn/models/damo/cv_ir_face-recognition-ood_rts
[10] 人脸说话模型:https://modelscope.cn/models/wwd123/sadtalker
4.更多内容
测试图片
部分效果
更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。
版权声明: 本文为 InfoQ 作者【汀丶人工智能】的原创文章。
原文链接:【http://xie.infoq.cn/article/87893db0ce8177a1ac39f7442】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论