Pose 泰裤辣! 一键提取姿态生成新图像
本文分享自华为云社区《Pose泰裤辣! 一键提取姿态生成新图像》,作者: Emma_Liu 。
人体姿态骨架生成图像 ControlNet-Human Pose in Stable Diffusion
相关链接:Notebook 案例地址: 人体姿态生成图像 ControlNet-Human Pose in Stable Diffusion
AI gallery:https://developer.huaweicloud.com/develop/aigallery/home.html
也可通过AI Gallery,搜索【人体姿态生成图像】一键体验!
ControlNet
什么是 ControlNet?ControlNet 最早是在 L.Zhang 等人的论文《Adding Conditional Control to Text-to-Image Diffusion Model》中提出的,目的是提高预训练的扩散模型的性能。它引入了一个框架,支持在扩散模型 (如 Stable Diffusion) 上附加额外的多种空间语义条件来控制生成过程。
ControlNet 可以复制构图和人体姿势。它解决了生成想要的确切姿势困难的问题。
Human Pose 使用 OpenPose 检测关键点,如头部、肩膀、手的位置等。它适用于复制人类姿势,但不适用于其他细节,如服装、发型和背景。
ControlNet 的工作原理是将可训练的网络模块附加到稳定扩散模型的 U-Net (噪声预测器)的各个部分。Stable Diffusion 模型的权重是锁定的,在训练过程中它们是不变的。在训练期间仅修改附加模块。
研究论文中的模型图很好地总结了这一点。最初,附加网络模块的权重全部为零,使新模型能够利用经过训练和锁定的模型。
训练 ControlNet 包括以下步骤:
克隆扩散模型的预训练参数,如 Stable Diffusion 的潜在 UNet,(称为 “可训练副本”),同时也单独保留预训练的参数(“锁定副本”)。这样做是为了使锁定的参数副本能够保留从大型数据集中学习到的大量知识,而可训练的副本则用于学习特定的任务方面。
参数的可训练副本和锁定副本通过 "零卷积 "层连接,该层作为 ControlNet 框架的一部分被优化。这是一个训练技巧,在训练新的条件时,保留冻结模型已经学会的语义。
从图上看,训练 ControlNet 是这样的:
ControlNet 提供了八个扩展,每个扩展都可以对扩散模型进行不同的控制。这些扩展是 Canny, Depth, HED, M-LSD, Normal, Openpose, Scribble, and Semantic Segmentation。
ControlNet-Pose2imge 适配 ModelArts
使用方法:
输入一个图像,并提示模型生成一个图像。Openpose 将为你检测姿势,从图像提取人体姿态,用姿态信息控制生成具有相同姿态的新图像。
对两张图像分别为进行人体骨骼姿态提取,然后根据输入描述词生成图像,如下图所示:
🔹 本案例需使用 Pytorch-1.8 GPU-P100 及以上规格运行
🔹 点击 Run in ModelArts,将会进入到 ModelArts CodeLab 中,这时需要你登录华为云账号,如果没有账号,则需要注册一个,且要进行实名认证,参考《ModelArts准备工作_简易版》 即可完成账号注册和实名认证。 登录之后,等待片刻,即可进入到 CodeLab 的运行环境
1. 环境准备
为了方便用户下载使用及快速体验,本案例已将代码及 control_sd15_openpose 预训练模型转存至华为云 OBS 中。注意:为了使用该模型与权重,你必须接受该模型所要求的 License,请访问 huggingface 的 lllyasviel/ControlNet, 仔细阅读里面的 License。模型下载与加载需要几分钟时间。
check GPU & 安装依赖
大约耗时 1min
导包
2. 加载模型
3. 人体姿态生成图像
设置参数,生成图像
上传您的图像至./ControlNet/test_imgs/ 路径下,然后更改图像路径及其他参数后,点击运行。
参数说明:
img_path:输入图像路径,黑白稿
prompt:提示词
a_prompt:次要的提示
n_prompt: 负面提示,不想要的内容
image_resolution: 对输入的图片进行最长边等比 resize
detect_resolution: 中间生成条件图像的分辨率
scale:文本提示的控制强度,越大越强
guess_mode: 盲猜模式,默认关闭,开启后生成图像将不受 prompt 影响,使用更多样性的结果,生成后得到不那么遵守图像条件的结果
seed: 随机种子
ddim_steps: 采样步数,一般 15-30,值越大越精细,耗时越长
DDIM eta: 生成过程中的随机噪声系数,一般选 0 或 1,1 表示有噪声更多样,0 表示无噪声,更遵守描述条件
strength: 这是应用 ControlNet 的步骤数。它类似于图像到图像中的去噪强度。如果指导强度为 1,则 ControlNet 应用于 100% 的采样步骤。如果引导强度为 0.7 并且您正在执行 50 个步骤,则 ControlNet 将应用于前 70% 的采样步骤,即前 35 个步骤。
4. Gradio 可视化部署
Gradio 应用启动后可在下方页面上传图片根据提示生成图像,您也可以分享 public url 在手机端,PC 端进行访问生成图像。
请注意: 在图像生成需要消耗显存,您可以在左侧操作栏查看您的实时资源使用情况,点击 GPU 显存使用率即可查看,当显存不足时,您生成图像可能会报错,此时,您可以通过重启 kernel 的方式重置,然后重头运行即可规避。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/749100667e21e9ea12c04ca7f】。文章转载请联系作者。
评论