数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain深度学习模型工具

本文主要是介绍数字时代的自我呈现:探索个人形象打造的创新工具——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环境使用简单,您只需要按以下步骤操作(注意:目前暂不提供永久存储,实例重启后数据会丢失):

#Step1: 我的notebook -> PAI-DSW -> GPU环境#Step2: 进入Notebook cell,执行下述命令从github clone代码:
!GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1#Step3: 切换当前工作路径
import os
os.chdir('/mnt/workspace/facechain')    # 注意替换成上述clone后的代码文件夹主路径
print(os.getcwd())!pip3 install gradio
!pip3 install controlnet_aux==0.0.6
!pip3 install python-slugify
!python3 app.py#Step4: 点击生成的URL即可访问web页面,上传照片开始训练和预测

除了ModelScope入口以外,您也可以前往PAI-DSW 直接购买带有ModelScope镜像的计算实例(推荐使用A10资源),这样同样可以使用如上的最简步骤运行起来。

2.2 docker镜像

如果您熟悉docker,可以使用我们提供的docker镜像,其包含了模型依赖的所有组件,无需复杂的环境安装:

#Step1: 机器资源
您可以使用本地或云端带有GPU资源的运行环境。
如需使用阿里云ECS,可访问: https://www.aliyun.com/product/ecs,推荐使用”镜像市场“中的CentOS 7.9 64(预装NVIDIA GPU驱动)#Step2: 将镜像下载到本地 (前提是已经安装了docker engine并启动服务,具体可参考: https://docs.docker.com/engine/install/)
docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.0#Step3: 拉起镜像运行
docker run -it --name facechain -p 7860:7860 --gpus all registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.0 /bin/bash  #注意 your_xxx_image_id 替换成你的镜像id
#(注意: 如果提示无法使用宿主机GPU的错误,可能需要安装nvidia-container-runtime, 参考:https://github.com/NVIDIA/nvidia-container-runtime)#Step4: 在容器中安装gradio
pip3 install gradio
pip3 install controlnet_aux==0.0.6
pip3 install python-slugify#Step5: 获取facechain源代码
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
cd facechain
python3 app.py
#Note: FaceChain目前支持单卡GPU,如果您的环境有多卡,请使用如下命令
#CUDA_VISIBLE_DEVICES=0 python3 app.py#Step6: 点击 "public URL", 形式为 https://xxx.gradio.live

2.3. conda虚拟环境

使用conda虚拟环境,参考Anaconda来管理您的依赖,安装完成后,执行如下命令:
(提示: mmcv对环境要求较高,可能出现不适配的情况,推荐使用docker方式)

conda create -n facechain python=3.8    # 已验证环境:3.8 和 3.10
conda activate facechainGIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
cd facechainpip3 install -r requirements.txt
pip3 install -U openmim 
mim install mmcv-full==1.7.0#进入facechain文件夹,执行:
python3 app.py
#Note: FaceChain目前支持单卡GPU,如果您的环境有多卡,请使用如下命令
#CUDA_VISIBLE_DEVICES=0 python3 app.py#最后点击log中生成的URL即可访问页面。

备注:如果是Windows环境还需要注意以下步骤:

#1. 重新安装pytorch、与tensorflow匹配的numpy
#2. pip方式安装mmcv-full: pip3 install mmcv-full

如果您想要使用"人物说话视频生成"标签页的功能,请参考installation_for_talkinghead_ZH里的安装使用教程。

2.4. colab运行

ColabInfo
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传FaceChain Installation on Colab

备注:app服务成功启动后,在log中访问页面URL,进入”形象定制“tab页,点击“选择图片上传”,并最少选1张包含人脸的图片;点击“开始训练”即可训练模型。训练完成后日志中会有对应展示,之后切换到“形象体验”标签页点击“开始生成”即可生成属于自己的数字形象。

2.5脚本运行

如果不想启动服务,而是直接在命令行进行开发调试等工作,FaceChain也支持在python环境中直接运行脚本进行训练和推理。在克隆后的文件夹中直接运行如下命令来进行训练:

PYTHONPATH=. sh train_lora.sh "ly261666/cv_portrait_model" "v2.0" "film/film" "./imgs" "./processed" "./output"

参数含义:

ly261666/cv_portrait_model: ModelScope模型仓库的stable diffusion基模型,该模型会用于训练,可以不修改
v2.0: 该基模型的版本号,可以不修改
film/film: 该基模型包含了多个不同风格的子目录,其中使用了film/film目录中的风格模型,可以不修改
./imgs: 本参数需要用实际值替换,本参数是一个本地文件目录,包含了用来训练和生成的原始照片
./processed: 预处理之后的图片文件夹,这个参数需要在推理中被传入相同的值,可以不修改
./output: 训练生成保存模型weights的文件夹,可以不修改

等待5-20分钟即可训练完成。用户也可以调节其他训练超参数,训练支持的超参数可以查看train_lora.sh的配置,或者facechain/train_text_to_image_lora.py中的完整超参数列表。

进行推理时,请编辑run_inference.py中的代码:

#使用深度控制,默认False,仅在使用姿态控制时生效
use_depth_control = False
#使用姿态控制,默认False
use_pose_model = False
#姿态控制图片路径,仅在使用姿态控制时生效
pose_image = 'poses/man/pose1.png'
#填入上述的预处理之后的图片文件夹,需要和训练时相同
processed_dir = './processed'
#推理生成的图片数量
num_generate = 5
#训练时使用的stable diffusion基模型,可以不修改
base_model = 'ly261666/cv_portrait_model'
#该基模型的版本号,可以不修改
revision = 'v2.0'
#该基模型包含了多个不同风格的子目录,其中使用了film/film目录中的风格模型,可以不修改
base_model_sub_dir = 'film/film'
#训练生成保存模型weights的文件夹,需要保证和训练时相同
train_output_dir = './output'
#指定一个保存生成的图片的文件夹,本参数可以根据需要修改
output_dir = './generated'
#使用凤冠霞帔风格模型,默认False
use_style = False

之后执行:

python 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.更多内容

  • 测试图片

  • 部分效果

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

这篇关于数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain深度学习模型工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198765

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (