目前AI绘图还是比较像开盲盒,虽然能根据语义提供惊艳的图片,但是与设计师所构思的目标还是有一定距离。
那像我们这种没有绘画功底的程序员想要制作出心中的人物(尤其手脚)姿态,该怎样减少随机开盒的次数呢?
本文提供几种精确控制人物动作的方法。
- 如果要了解如何安装sd,可参考《Windows安装Stable Diffusion WebUI及问题解决记录》;
- 如果要了解各种模型及配置参数,可参考《Stable Diffusion 个人推荐的各种模型及设置参数、扩展应用等合集》;
- 如果遇到运行使用时的问题,可参考《Windows使用Stable Diffusion时遇到的各种问题整理》。
注意:正式使用前请先确认你的Stable Diffusion Webui中已经安装了ControlNet扩展和OpenPose Editor插件,ControlNet扩展所需的模型candy、depth、openpose(建议全给装了)也部署到位。
不会安装的同学参考:《Stable Diffusion中ControlNet和OpenPose的安装教程》

流程整理:无论那种方法,操作思路都差不多
大都大同小异,具体摆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 Editor教程:通过 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打开下载的模型,调整人物的姿势,如图:

调整分辨率

分别打勾depth、canny、pose后渲染图形就能得到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的约束参数,很可能生图生出双人滑冰~~

简单易用,以后想作图自己做动作就行了。
这是针对图样出完以后的细节修改方法。



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

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

像这种小修小改的,绘画专业的人员用传统方式改动可能更快更细腻更准确。
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我想这样组织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中)将被完全忽略。
我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion
我想编写一个ruby脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"
这个问题有两个部分。在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):
假设我们有A、B、C类。Adefself.inherited(sub)#metaprogramminggoeshere#takeclassthathasjustinheritedclassA#andforfooclassesinjectprepare_foo()as#firstlineofmethodthenrunrestofthecodeenddefprepare_foo#=>prepare_foo()neededhere#somecodeendendBprepare_foo()neededhere#somecodeendend如您所见,我正在尝试将foo_prepare()调用注入
显然在Test::Unit中没有assert_false。您将如何通过扩展断言并添加文件config/initializers/assertions_helper.rb来添加它?这是最好的方法吗?我不想修改test/unit/assertions.rb。顺便说一句,我不认为这是多余的。我使用的是assert_equalfalse,something_to_evaluate。这种方法的问题是很容易意外使用assertfalse,something_to_evaluate。这将始终失败,不会引发错误或警告,并且会在测试中引入错误。 最佳答案
这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi
我在引擎样式插件中有一些代码,其中包含一些模型。在我的应用程序中,我想扩展其中一个模型。通过在初始值设定项中包含一个模块,我已经设法将实例和类方法添加到相关模型中。但是我似乎无法添加关联、回调等。我收到“找不到方法”错误。/libs/qwerty/core.rbmoduleQwertymoduleCoremoduleExtensionsmoduleUser#InstanceMethodsGoHere#ClassMethodsmoduleClassMethodshas_many:hits,:uniq=>true#nomethodfoundbefore_validation_on_crea
我正在尝试将Ruby1.9.3应用程序升级到2.0,除了一个小问题外,一切似乎都很顺利。我写了一个模块,我将其包含在我的模型中以覆盖activerecorddestroy。它将现有的destroy方法别名为destroy!,然后覆盖destroy以更改记录上的deleted_at时间戳。仅当我升级到ruby2.0时,destroy!不再破坏记录,但其行为就像我的新覆盖方法一样。知道为什么会这样吗?下面是更相关的代码部分。完整要点here.defself.included(base)base.class_evaldoalias_method:destroy!,:destroyalia