本文介绍如何使用GPU云服务器搭建Stable Diffusion模型,并基于ModelScope框架和HRN人脸重建模型,实现使用文本生成3D模型。

背景信息

自多态模型GPT-4发布后,AIGC(AI Generated Content,AI生成内容)时代正扑面而来,从单一的文字文本,演化到更丰富的图片、视频、音频、3D模型等。

本文将基于HRN人脸重建模型,以人脸头像作为输入,利用层次化表征实现快速人脸几何、纹理恢复,指导您如何实现使用文本生成高精度3D模型。关于模型的详细信息,请参见HRN人脸重建模型

如何使用GPU云服务器搭建Stable Diffusion模型_云计算

重要

  • 阿里云不对第三方模型“HRN人脸重建模型”的合法性、安全性、准确性进行任何保证,阿里云不对由此引发的任何损害承担责任。
  • 您应自觉遵守第三方模型的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。

操作步骤

创建ECS实例

本文使用的ai-inference-solution市场镜像中,内置了以下三个模型及运行环境。

  • v1-5-pruned-emaonly.safetensors:Stable Diffusion v1.5模型,一种潜在的text-to-image(文本到图像)的扩散模型,能够在给定任何文本输入的情况下生成逼真的图像。
    说明
    该模型中文提示词效果不好,建议使用英文提示词。
  • Taiyi-Stable-Diffusion-1B-Chinese-v0.1:太乙-中文模型,基于0.2亿筛选过的中文图文对训练,可以使用中文进行AI绘画。
  • Taiyi-Stable-Diffusion-1B-Anime-Chinese-v0.1:太乙-动漫风格模型,首个开源的中文Stable Diffusion动漫模型,该模型是基于Taiyi-Stable-Diffusion-1B-Chinese-v0.1进行继续训练,经过100万筛选过的动漫中文图文对训练得到的。太乙-动漫风格模型不仅能够生成精美的动漫图像,还保留了太乙-中文模型对于中文概念强大的理解能力。
  1. 前往实例创建页。
  2. 按照界面提示完成参数配置,创建一台ECS实例。需要注意的参数如下,其他参数的配置,请参见自定义购买实例。
  • 实例:选择实例规格为ecs.gn7i-c16g1.4xlarge。
  • 镜像:本文使用已部署好推理所需环境的云市场镜像,名称为ai-inference-solution。
  • 公网IP:选中分配公网IPv4地址,带宽计费模式选择按使用流量,带宽峰值设置为100 Mbps。以加快模型下载速度。
  1. 为当前ECS实例添加安全组规则,具体操作,请参见添加安全组规则。
    安全组规则所属的方向:入方向端口范围5000/5000授权对象:访问WebUI服务的本地客户端公网IP地址(非实例公网IP地址)。例如本地客户端公网IP为101.200.XX.XX,则授权对象为101.200.XX.XX/32。
  2. 创建完成后,在ECS实例页面,获取公网IP地址。
    说明
    公网IP地址用于生成图片测试时访问WebUI服务。

为Nginx添加用户登录验证

本文所使用的镜像中预装了Nginx软件,用于登录鉴权,以防止非授权用户登录。

  1. 执行如下命令,创建登录用户和密码。
    说明
    ${UserName}请替换为您自定义的用户名,例如admin;'${Password}'请替换为您自定义的密码,例如ECS@test1234。
htpasswd -bc /etc/nginx/password ${UserName} '${Password}'
  1. 执行如下命令,重启Nginx。
systemctl restart nginx
  1. 执行如下命令,查看Nginx状态。
systemctl status nginx

当显示如下图所示的回显信息时,说明Nginx处于运行中。

如何使用GPU云服务器搭建Stable Diffusion模型_stable diffusion_02

  1. 执行如下命令,设置Nginx开机自启动。
systemctl enable nginx

文本生成3D模型

步骤一:(可选)基于Stable Diffusion生成头像图片

通过文本生成人脸头像,作为人脸重建模型的图片输入。您也可以跳过该步骤,使用镜像中已有的头像生成3D模型。

  1. 执行如下命令,启动WebUI服务。
cd ~/stable-diffusion-webui/
nohup ./run_taiyi.sh &

重要

建议您等待1分钟,等待WebUI加载完成。

  1. 在浏览器地址栏输入http://<ECS公网IP地址>:5000,在弹出的登录对话框,输入为Nginx添加用户登录验证中创建的用户和密码,单击登录
  2. 在WebUI服务页面左上角,切换模型为v1-5-pruned-emaonly.safetensors
  3. 在对话框中输入简单的提示语,单击生成/Generate生成头像,然后单击保存/Save
    说明
    以下提示语仅为示例,您可以根据需要,自行输入提示语。
Elon Musk,mugshot,smiled

如何使用GPU云服务器搭建Stable Diffusion模型_云计算_03

Mark Zuckerberg,mugshot,with a serious face

如何使用GPU云服务器搭建Stable Diffusion模型_运维_04

步骤二:使用头像图片生成3D模型
  1. 执行如下命令,切换conda环境到modelscope中
conda activate modelscope
  1. 执行如下命令,切换到scripts目录。
cd /root/scripts
  1. (条件必选)上传头像图片。
    如果您是通过步骤一生成的图片或自定义图片,需将图片上传到root/scripts目录,并获取带格式的头像图片名称(例如image.png)用于生成3D模型。具体操作,请参见上传文件
    说明
    ai-inference-solution镜像中自带了头像图片(存放于root/scripts中),您也可以跳过该步骤,直接使用该镜像中的图片,试玩头像图片生成3D模型。
  2. 执行如下命令,使用头像图片生成3D模型。
./faceTo3D.py 头像图片文件名

本文以头像图片文件名为image.png为例(请根据实际需求替换),则命令为:

./faceTo3D.py image.png

说明

首次执行脚本时,会通过公网自动下载所需模型库,100 Mbps带宽下载时间大约为2分钟,请耐心等待。

如何使用GPU云服务器搭建Stable Diffusion模型_服务器_05

生成的3D模型文件存放在/root/scripts/output目录中,其中.obj.mtl.jpg可导入Unity、UE等软件中使用;头像旋转视频(rotation video)、可视化图片(visual image)可用于快速浏览生成效果。

如何使用GPU云服务器搭建Stable Diffusion模型_云计算_06