草庐IT

Stable Diffusion 准确绘制人物动作及手脚细节(需ControlNet扩展)

暂时先用这个名字 2023-04-22 原文

目前AI绘图还是比较像开盲盒,虽然能根据语义提供惊艳的图片,但是与设计师所构思的目标还是有一定距离。
那像我们这种没有绘画功底的程序员想要制作出心中的人物(尤其手脚)姿态,该怎样减少随机开盒的次数呢?
本文提供几种精确控制人物动作的方法。

注意:正式使用前请先确认你的Stable Diffusion Webui中已经安装了ControlNet扩展和OpenPose Editor插件,ControlNet扩展所需的模型candydepthopenpose(建议全给装了)也部署到位。

不会安装的同学参考:《Stable Diffusion中ControlNet和OpenPose的安装教程

流程整理:无论那种方法,操作思路都差不多

  1. 参考图:摆pose出参考图,尽量表达到位;
  2. 分析调试:将参考图提供给controlnet使用并进行微调;
  3. 出图:Stable Diffusion开盲盒出图(期间需若干参数调整)。

一、在线人偶摆pose法

准备

大都大同小异,具体摆pose方法我就不写了,多调调就能掌握的。
网址:
https://app.posemy.art/
https://webapp.magicposer.com/
https://www.anyposes.com/

参考图

摆好相机位置,清除背景,生成pose参考图。

分析调试

将图片放入controlnet,分析openpose,得到结构图(重要),深度图和边缘图看需要,注意权重、介入和退出的时机。


越白越亮表示离观看者越近,本案例中右侧的人物更亮更白,这说明controlnet的深度图分析错了。

生图

本节参考图中的人物细节有重合的部分,因此将容易混淆的部分用文字描述来约束。

Generation Data:

modelshoot style, 2warrior, fall backward with arms outstretched, push down, Roman Colosseum, helmet, cloudy sky, 
Negative prompt:  easynegative
Seed: -1, Steps: 32, Sampler: DPM++ SDE Karras, CFG scale: 10

二、OPENPOSE自画法

准备

参考图

通过 OpenPose Editor 编辑一下人物形态。

分析调试

发送到 >>>文生图,并且配置参数

生图

随便写点适合的东西。

Generation Data:

modelshoot style, (extremely detailed CG unity 8k wallpaper), full shot body photo of the most beautiful artwork in the world, beautiful women, (1dancer:1.5),(2hands:1.5)
Negative prompt:  easynegative, canvas frame, cartoon, 3d, ((disfigured)), ((bad art)), ((deformed)),((extra limbs)),((close up)),((b&w)), wierd colors, blurry, (((duplicate))), ((morbid)), ((mutilated)), [out of frame], extra fingers, mutated hands, ((poorly drawn hands)), ((poorly drawn face)), (((mutation))), (((deformed))), ((ugly)), blurry, ((bad anatomy)), (((bad proportions))), ((extra limbs)), cloned face, (((disfigured))), out of frame, ugly, extra limbs, (bad anatomy), gross proportions, (malformed limbs), ((missing arms)), ((missing legs)), (((extra arms))), (((extra legs))), mutated hands, (fused fingers), (too many fingers), (((long neck))), Photoshop, video game, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, mutation, mutated, extra limbs, extra legs, extra arms, disfigured, deformed, cross-eye, body out of frame, blurry, bad art, bad anatomy, 3d render
Seed: -1, Steps: 32, Sampler: DPM++ SDE Karras, CFG scale: 10

单纯使用本方法的话,目前没法产生深度图和边缘图。

三、Blender三维建模方式

本方法可以提供深度图、结构图~~~

准备

参考图

用blender打开下载的模型,调整人物的姿势,如图:


调整分辨率

分别打勾depthcannypose后渲染图形就能得到controlnet所需的图片

出图方法如下:

  • 深度图
    如上图选中depth,渲染出深度图另存即可

  • 边缘图
    选中canny后根据下图配置完compositing,再渲染保存就是canny图

  • 骨骼图
    取消canny图中所设置的反转颜色,否则出图不正确

选中openpose后渲染图形

分析调试

将三张图分别导入controlnet中,参考方案一。

生图

写一下关键字生图。


stable diffusion似乎在这个机位角度对身形的分析并不好,这小粗腿。-_-!

四、常用图片识别法

准备

真人摆pose照一张

参考图

本文用安娜·谢尔巴科娃的照片~~

分析调试

controlnet分析绘制出边缘图、骨骼图和深度图。

这种干净单一的画面,controlnet分析出的结果是比较准确的,所以如果真的用于生产制作,那么绿幕或干净的背景还是有一定必要的。

生图

figure skating, Style-Empire, 8k portrait of beautiful young woman, sports
Negative prompt: [lowres, cropped, watermark, jpeg artifacts, low quality, normal quality, bad anatomy, text error, worst quality]
Size: 1024x691, Seed: -1, Steps: 32, Sampler: DPM++ SDE Karras, CFG scale: 5,

如果降低controlnet的约束参数,很可能生图生出双人滑冰~~

简单易用,以后想作图自己做动作就行了。

五、PS修补法

这是针对图样出完以后的细节修改方法。

准备

  • 准备好PHOTOSHOP等图片编辑软件
  • 准备一张待修改的图片

  • 寻找一张手图

参考图

  • 在photoshop中,将手放在合适的位置并且将色彩尽可能调一致,这涉及到phososhop的部分知识。

分析调试

生成参考图导入Stable Diffusion的 图生图>>>局部重绘

画笔涂抹需修改的对象(此处为手)后,配置参数(需多次调整)生图,直到满意为止。
其间可能除了修改主要对象外,对对象周围的部分也可能以涂抹方式修改。

生图

手的光影色彩协调了(其实错了),但细节丢失了。


像这种小修小改的,绘画专业的人员用传统方式改动可能更快更细腻更准确。

有关Stable Diffusion 准确绘制人物动作及手脚细节(需ControlNet扩展)的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. c - mkmf 在编译 C 扩展时忽略子文件夹中的文件 - 2

    我想这样组织C源代码:+/||___+ext||||___+native_extension||||___+lib||||||___(Sourcefilesarekeptinhere-maycontainsub-folders)||||___native_extension.c||___native_extension.h||___extconf.rb||___+lib||||___(Rubysourcecode)||___Rakefile我无法使此设置与mkmf一起正常工作。native_extension/lib中的文件(包含在native_extension.c中)将被完全忽略。

  3. ruby-on-rails - 向 Rails 3 添加 Ruby 扩展方法的最佳实践? - 2

    我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion

  4. ruby - 如何在 ruby​​ 中复制目录结构,不包括某些文件扩展名 - 2

    我想编写一个ruby​​脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"

  5. ruby - 扩展类和实例 - 2

    这个问题有两个部分。在RubyProgrammingLanguage一书中,有一个使用模块扩展字符串对象和类的示例(第8.1.1节)。第一个问题。为什么如果您使用新方法扩展类,然后创建该类的对象/实例,则无法访问该方法?irb(main):001:0>moduleGreeter;defciao;"Ciao!";end;end=>nilirb(main):002:0>String.extend(Greeter)=>Stringirb(main):003:0>String.ciao=>"Ciao!"irb(main):004:0>x="foobar"=>"foobar"irb(main):

  6. ruby - 动态扩展现有方法或覆盖 ruby​​ 中的发送方法 - 2

    假设我们有A、B、C类。Adefself.inherited(sub)#metaprogramminggoeshere#takeclassthathasjustinheritedclassA#andforfooclassesinjectprepare_foo()as#firstlineofmethodthenrunrestofthecodeenddefprepare_foo#=>prepare_foo()neededhere#somecodeendendBprepare_foo()neededhere#somecodeendend如您所见,我正在尝试将foo_prepare()调用注入

  7. ruby-on-rails - 如何扩展 Ruby Test::Unit 断言以包含 assert_false? - 2

    显然在Test::Unit中没有assert_false。您将如何通过扩展断言并添加文件config/initializers/assertions_helper.rb来添加它?这是最好的方法吗?我不想修改test/unit/assertions.rb。顺便说一句,我不认为这是多余的。我使用的是assert_equalfalse,something_to_evaluate。这种方法的问题是很容易意外使用assertfalse,something_to_evaluate。这将始终失败,不会引发错误或警告,并且会在测试中引入错误。 最佳答案

  8. ruby-on-rails - 无法构建 gem native 扩展 (mkmf (LoadError)) - Ubuntu 12.04 - 2

    这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby​​和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi

  9. ruby-on-rails - 使用模块扩展带有 "has_many"的插件中的模型 - 2

    我在引擎样式插件中有一些代码,其中包含一些模型。在我的应用程序中,我想扩展其中一个模型。通过在初始值设定项中包含一个模块,我已经设法将实例和类方法添加到相关模型中。但是我似乎无法添加关联、回调等。我收到“找不到方法”错误。/libs/qwerty/core.rbmoduleQwertymoduleCoremoduleExtensionsmoduleUser#InstanceMethodsGoHere#ClassMethodsmoduleClassMethodshas_many:hits,:uniq=>true#nomethodfoundbefore_validation_on_crea

  10. ruby-on-rails - Ruby 1.9.3 -> 2.0 别名方法和扩展 - 2

    我正在尝试将Ruby1.9.3应用程序升级到2.0,除了一个小问题外,一切似乎都很顺利。我写了一个模块,我将其包含在我的模型中以覆盖activerecorddestroy。它将现有的destroy方法别名为destroy!,然后覆盖destroy以更改记录上的deleted_at时间戳。仅当我升级到ruby​​2.0时,destroy!不再破坏记录,但其行为就像我的新覆盖方法一样。知道为什么会这样吗?下面是更相关的代码部分。完整要点here.defself.included(base)base.class_evaldoalias_method:destroy!,:destroyalia

随机推荐