Stable Diffusion基础:ControlNet之人体姿势控制

news2025/6/20 20:03:48

在AI绘画中精确控制图片是一件比较困难的事情,不过随着 ControlNet 的诞生,这一问题得到了很大的缓解。 今天我就给大家分享一个使用Stable Diffusion WebUI + OpenPose ControlNet 复制照片人物姿势的方法,效果可以参考上图。

OpenPose 可以控制人体的姿态、面部的表情,有时候还能够解决坏手的问题(不要抱太大期望,下文会有介绍)。

OpenPose可以直接复制一张图片的人体姿势,就像题图一样,也可以通过骨架图生成人体图片(什么是骨架图?下文会有介绍)。

下面我们就以“文生图”为例,来看下如何使用 OpenPose 。

安装ControlNet

一般的 Stable Diffusion WebUI 整合包或者镜像都已经安装了这个插件,如果你的还没有安装,需要先安装它。已经安装好的跳过这一小节即可。

方法是打开 Stable Dissusion WebUI 前端页面,进入“扩展插件”-“从网址安装”,在“扩展插件的git仓库网址”中输入:https://github.com/Mikubill/sd-webui-controlnet,然后点击“安装”,待安装完成后重启 SD WebUI。各种 ControlNet 模型和预处理器一般会在首次使用时自动下载安装。

如果访问github不畅,也可以通过别的方式下载插件包和对应的模型,然后自己部署到 stable-diffusion-webui 中。文章最后提供了我整理的插件包和各种模型。

具体部署路径如下:

  1. ControlNet插件:<stable-diffusion-webui>/extensions
  2. ControlNet模型:<stable-diffusion-webui>/extensions/sd-webui-controlnet/models
  3. ControlNet预处理器:<stable-diffusion-webui>/extensions/sd-webui-controlnet/annotator/downloads

注意需替换 <stable-diffusion-webui> 为你自己的SD WebUI部署路径,如果你的 SD WebUI 启动命令中配置了模型的路径,或者做了文件夹的软链接,也需要根据实际情况进行调整。

安装成功后,在“文生图”、“图生图”界面的下方会出现 ControlNet 区域,点击右侧的展开按钮,下边有4个ControlNet单元,也就是我们可以同时使用4个ControlNet模型控制出图的效果,一般也就够了。

如果你的 ControlNet 只有1个单元,或者你想修改这个单元的数量,可以到“设置”中调整,如下图所示,找到“多重控制网:最大模型数量”,更改之后别忘了重启。

复制图片姿势

进入“文生图”界面,只需要选择一个你喜欢的大模型,填写简单的提示词就可以了。文章最后提供了我整理的模型合集,有兴趣的可以参考使用。

然后在页面下方的 ControlNet 中设置 OpenPose,按照下图所示的步骤操作:

  1. 这里只需要设置1个 ControlNet 单元,选择第一个就行了。
  2. 上传你要复制姿势的图片。
  3. 启用这个 ControNet 单元,一般选择图片后会自动勾选。
  4. 选中“完美匹配像素”,让 ControlNet 自动计算一个合理的内部图片处理空间,涉及底层技术细节,无脑勾选就行了。
  5. Control Type 选择 OpenPose。
  6. 预处理会自动带出,不用修改。它是用来从参考图片中提取骨架图的。
  7. 模型会自动带出,不用修改。它是在生成图片时根据骨架图控制人体姿势的。
  8. 这个按钮可以将参考图片的尺寸带到“文生图”参数中,如果参考图片的高宽没有超过 1024 ,建议使用,超过1024的出图会比较慢,可以按照图片比例手动设置“文生图”中的高宽参数。

最后点击“生成”就等着出图吧。这里会输出两张图片,一张是使用大模型加OpenPose生成的图片,另一张是根据参考图片生成的骨架图,我们可以把这个骨架图复制出来,以后继续使用或者分享给别人使用。

注意看这个骨架图中是有一点手的形状的,所以理论上,如果我们在骨架图中描绘了手的形状,生成图片中的手是会受到一定约束的。再来一张总统挥手的照片,这只手看着还不错,不过也是生成了很多张之后挑选出来的。

生图参数:

a man in a suit waves from a plane window as he stands on the deck of a plane with his hand up, Beeple, sunglasses, a stock photo, american romanticism
Negative prompt: EasyNegative,bad hands,bad fingers
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 289185078, Size: 656x432, Model hash: c0d1994c73, Model: realisticVisionV20_v20, Denoising strength: 0.7, Clip skip: 2, ControlNet 0: "preprocessor: openpose_full, model: control_v11p_sd15_openpose_fp16 [73c2b67d], weight: 1.5, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: True, control mode: Balanced, preprocessor params: (512, -1, -1)", Hires upscale: 2, Hires upscaler: Latent, TI hashes: "EasyNegative: c74b4e810b03", Version: v1.5.1

使用骨架图姿势

在上一小节我们使用 OpenPose 时,先提取了图片人物的骨架图,然后使用骨架图生成的图片,所以只要有骨架图就能生成图片了。这对于创造太方便了,毕竟没有那么多的图片可以参考。

这里为了演示方便,直接使用上一小节提取的骨架图。我们只需要更改 ControlNet 这里的设置,如下图所示:

  1. 上传照片使用骨架图。
  2. 预处理器设置为None,因为我们不需要再从照片中提取人物的骨架图。

其他参数都不变,直接生成就好了。

创造骨架图

骨架图从哪里来?这里介绍一个网站、两个插件,都可以生成或者获取骨架图。

Avatar Pose Maker

这是一个制作骨架图的网站,可以调整人体的姿势、拍照的视角,也可以下载别人制作好的骨架图。

访问地址:Avatar Pose Maker

打开的页面如下图所示,我简单说下几个操作区域:

  1. 这里选择你要调整的身体部位
  2. 这里设置具体身体部位的参数,可以调整姿势。
  3. 这里可以调整人物的视角,是正面、侧面,还是仰视、俯视等等。
  4. 这里下载你创造的骨架图照片
  5. 这里可以随机生成很多人体姿势。
  6. 这里可以进入查看别人分享的姿势,有标签说明姿势是什么含义,选择下载就好了。

OpenPose Editor

这是 Stable Diffusion WebUI 的一个插件,插件访问地址:https://github.com/fkunn1326/openpose-editor.git,插件安装方法参考上文的“安装ControlNet”。

安装成功后,我们可以在一级页签中看到“OpenPose Editor”,这个插件的使用比较简单,可以在绘图区域这里直接调整人物的姿势,然后下载图片备用,或者直接发送到文生图、图生图等使用。

这里贴出我这个骨架图的出图效果:

生图参数:

eastern girl,18 years old, standing, waving left hand, balck hair, long straight hair, blue eyes, white shirt, blue jeans, trees, blue sky, cloud
Negative prompt: EasyNegative, bad hands, bad fingers, malformed
Steps: 30, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1995058330, Face restoration: CodeFormer, Size: 512x512, Model hash: 15012c538f, Model: realisticVisionV51_v51VAE, Denoising strength: 0.7, Clip skip: 2, ControlNet 0: "preprocessor: none, model: control_v11p_sd15_openpose_fp16 [73c2b67d], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (-1, -1, -1)", Hires upscale: 2, Hires upscaler: Latent, TI hashes: "EasyNegative: c74b4e810b03", Version: v1.5.1

3D Openpose

这是又一个Stable Diffusion WebUI的插件,访问地址:https://github.com/nonnonstop/sd-webui-3d-open-pose-editor.git,不会安装的同学请参考上文的“安装ControlNet”。

安装成功后,我们可以在一级页签中看到“3D Openpose”,这个插件功能比较强大,我们可以在一个3D的环境中调整人物的形态,但是操作上也会比较复杂,大家可以自己体会下。

  1. 双击骨架图中的关节部位可以调整这个关节的方向。
  2. 鼠标滑动可以调整人物的视角和大小。
  3. 特别支持了手脚的深度图、边缘检测图,用于优化手脚的生成,也可以单独只生成手。

调整好后,点击“生成”。

生成后的预览图如下,第一张是骨架图,后边几张是用来画手脚的辅助图。

可以直接发送到文生图和图生图,也可以下载后备用。直接发送感觉不太好用,建议先下载再上传。ControlNet的设置方式和上文直接使用骨架图生成图片一样,注意不需要选择预处理器。

如果我们希望对手脚进行专门的修复,可以使用画手脚的辅助图。这里选择边缘检测这个ControlNet,注意还是不要选择预处理器,启动控制步数和结束控制步数大家可以根据实际情况调整,文生图中不要从0到1,会影响图片的结构,图生图中可以使用局部绘图修手修脚。

虽然我们专门对手脚进行了处理,但是出图的效果还是经常出现畸形的手脚,效果是有的,但和期望的差距还比较大。下边是两个例子:

  1. 文生图带修手:

  1. 先文生图,再图生图局部修手:

资源下载

如果你下载插件和模型不方便,可以使用我整理的资源包,关注公众号:萤火遛AI(yinghuo6ai),发消息:插件,即可获取下载地址。


以上就是本次分享的主要内容,如果有问题欢迎沟通交流。

如果你还没有使用过Stable Diffusion WebUI,可以先看这几篇文章,了解下如何使用:

手把手教你在本机安装Stable Diffusion秋叶整合包

手把手教你在云环境炼丹(部署Stable Diffusion WebUI)

SDXL 1.0出图效果直逼Midjourney!手把手教你快速体验!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件

目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能&#xff0c;如下为Visual Studio 2022的该功能界面&#xff1a; 图 1 图 2 当在Visual Studio 2022打开很多文件时&#xff0c;可以按照图1、图2所示找到自…

《Linux从练气到飞升》No.11 初识操作系统

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

HTML详解连载(1)

这里写目录标题 HTML定义HTML 超文本标记语言标签语法注意拓展 HTML基本骨架解释VS Code 快速生成骨架&#xff1a;标签的关系父子关系&#xff08;嵌套关系&#xff09;兄弟关系&#xff08;并列关系&#xff09; 代码格式注释 标题标签标签名:h1-h6(双标签)经验&#xff1a; …

十二种排序算法(附动图)

排序算法 一、基本介绍 ​ 排序算法比较基础&#xff0c;但是设计到很多计算机科学的想法&#xff0c;如下&#xff1a; ​ 1、比较和非比较的策略 ​ 2、迭代和递归的实现 ​ 3、分而治之思想 ​ 4、最佳、最差、平均情况时间复杂度分析 ​ 5、随机算法 二、排序算法的分类 …

Linux系统目录结构介绍

Linux系统目录结构介绍 一、目录结构 Linux系统的目录结构是一颗倒状树&#xff1a; “/”表示最顶层的目录&#xff0c;叫做根目录。 &#xff08;1&#xff09;pwd可以显示当前所在的目录。 &#xff08;2&#xff09;cd可以切换当前的目录&#xff0c;例如&#xff0c;…

Jenkins部署python接口自动化测试

一、点击新建Item 二、指定源码和分支 私钥位置&#xff1a;C:\Users\Administrator\.ssh 文件下 三、构建脚本编写 四、构建后操作 指定输出的allure 结果目录

jmeter性能测试常见的一些问题

一、request 请求超时设置 timeout 超时时间是可以手动设置的&#xff0c;新建一个 http 请求&#xff0c;在“高级”设置中找到“超时”设置&#xff0c;设置连接、响应时间为2000ms。 1. 请求连接超时&#xff0c;连不上服务器。 现象&#xff1a; Jmeter表现形式为&#xff…

识别和应对内存抖动

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、案例分析3.1 使用memory-profiler3.2 使用 cp…

ArduPilot飞控之FAILSAFE机制

ArduPilot飞控之FAILSAFE机制 1. 源由2. 设计2.1 遥控信号丢失2.1.1 触发原因2.1.2 场景分析2.1.3 重要参数 2.2 电池低电2.2.1 触发原因2.2.2 场景分析2.2.3 重要参数 2.3 地面站/电传信号丢失2.3.1 触发原因2.3.2 场景分析2.3.3 重要参数 2.4 EKF故障(Extended Kalman Filter…

解密创意保护的钥匙:软著申请流程详解

引言 在当今数字化的浪潮下&#xff0c;软件已经渗透到我们生活的方方面面&#xff0c;从工作到娱乐&#xff0c;从沟通到创新。每一个看似简单的应用程序背后&#xff0c;都蕴藏着无限的创意和智慧。然而&#xff0c;这些创意往往也伴随着被复制、盗用甚至侵权的风险。为了保…

什么是BFC?它有什么作用?如何创建BFC?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是BFC⭐ BFC的作用⭐ 创建BFC的方法⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web…

【100个 Unity实用技能】☀️ | Unity UGUI ScrollView滑动到指定位置

Unity 小科普 老规矩&#xff0c;先介绍一下 Unity 的科普小知识&#xff1a; Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

JMeter常用功能及使用方法详解

JMeter被广泛应用于软件性能测试&#xff0c;是一个开源的、纯Java编写的测试工具&#xff0c;其中包括了很多强大的功能。以下将重点介绍JMeter常用功能及使用方法。 一、JMeter压力测试 1.什么是JMeter压力测试&#xff1f; JMeter压力测试就是模拟多种负载条件并分析不同条…

【雕爷学编程】Arduino动手做(07)---电位器模块之电位器调速并带蜂鸣的8位跑马灯

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

详解使用SSH远程连接Ubuntu服务器系统

演示环境&#xff1a; 1.Windows10系统 2.VMware Workstation Pro虚拟机 2.Ubuntu16.04.6&#xff08;以上版本通用&#xff09; 回归正题 一、在Ubuntu端&#xff1a; 1.首先需要安装SSH服务器&#xff0c;在ubuntu终端输入以下指令 sudo apt-get install ssh2.输入你的ubu…

数据安全加固:深入解析滴滴ES安全认证技术方案

前文分别介绍了滴滴自研的ES强一致性多活是如何实现的、以及如何提升ES的性能潜力。由于ES具有强大的搜索和分析功能&#xff0c;同时也因其开源和易于使用而成为黑客攻击的目标。近些年&#xff0c;业界ES数据泄露事件频发, 以下是一些比较严重的数据泄露案件&#xff1a; 202…

基于 ChatGLM2 和 OpenVINO™ 打造中文聊天助手

点击蓝字 关注我们,让开发变得更有趣 作者 | 英特尔 AI 软件工程师 杨亦诚 排版 | 李擎 基于ChatGLM2和OpenVINO™打造中文聊天助手 ChatGLM 是由清华大学团队开发的是一个开源的、支持中英双语的类 ChatGPT 大语言模型&#xff0c;它能生成相当符合人类偏好的回答, ChatGLM2 …

160. 相交链表 题解

题目描述&#xff1a;160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 注&#xff1a;本题中链表相交是“Y”型的&am…

KDD 2023 | 美团技术团队精选论文解读

本文精选了美团技术团队被KDD 2023收录的7篇论文进行解读&#xff0c;论文覆盖了Feed流推荐、多模态数据、实例分割、用户意图预测等多个方向。这些论文也是美团技术团队与国内多所高校、科研机构合作的成果。希望给从事相关研究工作的同学带来一些启发或者帮助。 ACM SIGKDD&a…

(el-switch)操作(不使用 ts):Element-plus 中 Switch 将默认值修改为 “true“ 与 “false“(字符串)来控制开关

Ⅰ、Element-plus 提供的 Switch 开关组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供 Switch 组件情况&#xff1a; 其一、Element-ui 自提供的 Switch 代码情况为(示例的代码)&#xff1a; // Element-plus 自提供的代码&#xff1a; // 此时是使用了 ts 语言环…