在AI绘画中,有时候我们须要主角(人物或动物)摆出特定的姿势,该怎么做呢?

第一种方法:以图生图

打开Stable Diffusion界面,点击imag2img

下面涌现一个”drop image here or click to upload”的方框,从网上找一张你希望呈现的姿势图片,比如一个老鹰,姿势:双眼盯着远方。
把这张图片拖拽到方框,或者从本地电脑上传。

AI绘画教程Stable Diffusion中若何控制人像的姿势

然后在提示词框里输入提示词,比如:a dragon ,然后点击generate天生图像。
但是这样天生的图像,姿势不好掌握,有些会比较像,有些差很远。

第二种方法:利用ControlNet。
这是一个很强大的stable Diffusion插件,可以精准的掌握AI绘画中人物或动物的姿势,从而天生很多好玩有创意的图片。

比如,穿上钢铁侠战衣的擎天柱:

现在大部分stable Diffusion的colab包都自带ControlNet,如果你利用的版本里没有,可以打开extensions,在安装时勾选ControlNet

下载ControlNet模型那一栏,选择通用的姿势掌握模型ControlNet_openpose(也可以都选)

现在,打开stable Diffusion,可以在提示词框下面看到control net的按钮

有一个Enable的方框,勾选,就启用control net了。

我们来测试下control net的效果。
先不启用control net,输入提示词,天生如下图片,可以看到图片中人物的姿势互异。

然后我们上传一张瑜伽动作姿势的图片到control net,然后勾选enable,Preprocessor选择openpose,Model选择openpose-sd21-safe [2be3125b]

再次点击generate按钮,这时候天生的图片基本保持了和上传图像中的瑜伽动作

但是,这个动作和源照片中的瑜伽动作差距有些大,天生效果不是很空想。
这不是插件的问题,而是选用的模型不太对。

Control net的Preprocessor有很多种模型可选:canny、depth、depth_leres、hed、mlsd、

normal_map、openpose、openposehand、clip_vision、color、pidinet、scribble、fake_scribble、segmentation、binary。
这些都是什么意思呢?

Openpose:最常用的模型,采纳图片中的人物骨架做为参考,以天生图片。
用于人物动作。

Canny: 撷取图片中的边缘线做为参考,以天生图片

mlsd : 撷取图片中明显的直线做为参考,以天生图片。
一样平常用于建筑、物体的检测,常用于室内装潢,建筑设计

Hed: 撷取图片中的特色做为参考,以天生图片。
也是边缘提取,跟canny类似

Scribbles:手稿模型 撷取利用者供应的线条做为参考,以天生图片。
可以把随手画的涂鸦天生精美的画面

Segmentation:将图片化为大略的色块作为参考,以天生图片

Depth:提取深度检测信息,可以天生具有同样深度构造的图 。

normal:模型识别,跟深度图有点类似,但对付细节的保留更加的精确。
通过读取原图片中的深度信息和法线背景阈值。

Pidinet:检测图像中的曲线和直线条,然后天生图片。
天生的结果和HED有些相似。
不过,细节会少一些。

Fake Scribble:从成品图中提取出草图 ,和涂鸦是倒过来的。

总结下,这些不同的模型采取的不同方法来掌握姿势,并没有谁更好谁更差,而是须要根据须要和图像特色来选择对应的得当模型。

常日来说,对付人像,HED 模型可以最精准的复制人物动作。
Canny 、 depth、normal也不错,但是有时可能会有一些变形。
从上面图像来看,不仅复制了动作,还复制了、发型和衣服,效果不是很空想。
OpenPose在复制动作的同时,则没有去世板的去复制衣服和发型,而是精准的天生提示词中的内容,可以说是形神兼备,效果最佳。
mLSD则完备不适宜人像,复制效果非常差。

回到最开始的例子中,将preprocessor模型从openpose改成hed,可以看到天生图片中人物的动作和源图片中的人物动作千篇一律,精准还原。