在AI绘画中,有时候我们须要主角(人物或动物)摆出特定的姿势,该怎么做呢?
第一种方法:以图生图
打开Stable Diffusion界面,点击imag2img
下面涌现一个”drop image here or click to upload”的方框,从网上找一张你希望呈现的姿势图片,比如一个老鹰,姿势:双眼盯着远方。把这张图片拖拽到方框,或者从本地电脑上传。
然后在提示词框里输入提示词,比如: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,可以看到天生图片中人物的动作和源图片中的人物动作千篇一律,精准还原。