当前位置:AIGC资讯 > AIGC > 正文

Stable Diffusion实现AI绘画,尝试向实际业务迈进...

前置:

        由于处于学习初期,懂得较少以及可能会出现理解错误等情况,故而文章仅供参考学习使用,旨在分享知识,共同学习,不能作为依据,如有错误,感谢指出,文章主题分为两部分,学习部分也就理论知识,实践部分主要包括问题及解决方案。

一、Stable Diffusion:

文生图:

1.提示词分类以及书写:

Tips:

①ai对于提示词的认知是词组>句子,完整的语法结构反而更难理解

1.1内容型提示词:

人物及主体特征:

服饰穿搭 white dress

发型发色 red hair,long hair

五官特点 small eyes,big mouth

面部表情 smilling

肢体动作 stretching arms

场景特征:

室内室外 indoor/outdoor

大场景 forest,city,street

小细节 tree,bush,white flower

环境光照

白天黑夜 day/night

特定时段 morning,sunset

光环境 sunlight,bright,dark

天空 blue sky,starry sky

画幅视角

距离 close-up,distant

人物比例 full body,upper body

观察视角 from above,view of back

镜头类型 wide angle,Sony A7 IIII

1.2标准化提示词:

画质提示词:

通用高画质 best quality,ultra-detailed, masterpiece, hires, 8k 特定高分辨率类型 extremely detailed CG unity 8k wallpaper (超精细的8KUnity游戏CG),unreal engine rendered(虚幻引警渲染)

画风提示词 插画风 illustration, painting, paintbrush 二次元 anime, comic, game CG 写实系 photorealistic, realistic, photograph

2.权重与负面提示词:

①套括号() (white flower) = *1.1权重

②(white flower:1.5) 在括号内直接加:和需要的权重

③(((white flower))) 每多套一层权重就是原来的1.1倍,这里是1.331倍

④多括号{{{white flower}}} 每套一层额外*1.05倍

⑤方括号[[[white flower]]] 每套一层,额外*0.9倍

3.反向提示词:

顾名思义,反向提示词就是不需要出现在画面中的内容

4.出图参数详解:

4.1采样方法

AI进行图像生成的时候使用的某种特定算法

Euler (a)

适合插画风格

DPM 2M 和2M Karras

速度快

SDE Karras

细节更为丰富

Tips:

带++一般是改进过的算法

4.2面部修复

采用对抗算法识别人物面部并进行修复,类似美图app的智能p脸

4.3平铺/分块

用于生成可以无缝贴满整个屏幕的纹理性图片的,勾选容易出错

4.4提示词相关性

顾名思义,就是与关联词的关系度,一般安全范围在7-12,太高太低容易变形

4.5随机种子

画面关系度,以我目前使用来看,使用固定随机数种子可以保证在原有的基础上改变内容

4.6生成批次/数量

因为AI根据相同提示词生成的图片具有随机性,所以生产批次是在同一个提示词下生成不同的图片,最后可以通过对比甄选比较符合预期的图片

每批数量,就是在每个批次生成图片数量,默认是一批一个,如果多个显存可能会爆炸,这个很好理解就是并行的量更多了,但是由于显存问题,可能并不能支持这么操作,理论提高效率实际要根据性能决定。

二、AI绘画实际业务问题难点及解决思路(包含未解决项)

1.绘图技巧和报错处理:

①绘图常见报错处理

ValueError: images do not match

Time taken: 10.55s

Torch active/reserved: 4200/5126 MiB, Sys VRAM: 7450/8192 MiB (90.94%)

原因:

很多时候为了保证和原图像素一样会设置类似于宽417,高714等等尺寸,就会导致这样的报错

②图生图重绘中的canyan技巧:

关于canyan边缘监测对作图影响过大如何处理:

调低权重和引导步数,如果线条过于复杂,可以调高low Threshold 并且适当调高High Threshold

        满足以上参数的前提下,重绘幅度在0.7左右,在我的测试中比较容易出满意的图。

2.AI模特换装问题:

局部重绘的时候:

全图:

①适合更换背景

仅蒙版:

①如果是全身照的情况下,在局部重绘选择仅模板会导致画面变形,比如飞起来的头发,延长的衣服等等问题。

②在涂鸦重绘模式下,就是只修改图片某一部分,,比如眼睛不和谐等等,适合修复小部分

蒙版模糊:

数值越大,边界感觉越弱,反之数值越大,边界感越模糊。太大容易产生多余肢体

局部重绘模式下不改变任务但更换背景,原模特衍生肢体或毛发或衣物的问题解决:

前置:

①局部重绘区域选择全图而不是仅蒙版,可能可以解决

②蒙版蒙住内容,选择原图能够最大程度保留非蒙版区域,填充虽然也能保持原图,但是可能延长头发等情况,不稳定,时好时坏,

                                                        原图

                                                填充 

                                              潜空间噪声

进阶:(如何基础都设置对了还有问题可以考虑下面)

①通过修改3d openpose 比原来整体小即可,滚轮缩小就好了②降低蒙版模糊值

Tips:

AI作画具有随机性,就算上述都对,依旧可能产生问题,可以在提示词下做点文章,由于模特其实依旧生成好了,我们可以对可能产生的衍生模特做操作,比如短发或光头(防止头发衍生),内衣内裤(防止衣服裤子过长)

只需要修改宽高为8的倍数即可,例如400 600即可或者600 800 具体按照情况来定,避开错误即可

3.ai模特换脸业务(还在优化中):

原图:

效果图:

由于篇幅问题,就不过多展示了,下面说说实现步骤和注意细节

实现步骤:

1.tag标签配置:

我的都是默认配置,未做过多优化操作,比如你希望皮肤白一些,就可以正向提示词前加上,也可以选择(white face)(white face:1.2)增加权重,默认大家都有,这个很简单不多阐述。

正向tag:

best quality, ultra high res, (photorealistic:1.4),1girl,close mouth

反向tag:

(((gape))),paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans,bikini,medium breast,,Nevus, skin spots,nsfw,(((neck too long))),(((wrinkle)))

 2.选择局部重绘:

通过涂鸦选择需要重绘区域,右侧圆点可拉动能够调节画笔粗细。

3.配置参数

照抄下图即可,值得注意的是宽高是最好与原图相似,生成效果会更好而且最好是8的倍数,不能417 714这种会绘图报错,迭代步数默认是20,28可以提高画面精细度,面部修复最好勾选,不容易出现面目狰狞,蒙版模糊类似于PS的锐化,看情况条件,推荐4-8是最好的,蒙版蒙住内容选择填充画面较为和谐。具体参数不做过多赘述了

 4.打开3D openpose调节人物动作

①点击如图文件,选择从图片中检测,将需要修改的图像导入就会生成如下图这样的背景图和姿势了,然后在设置处,点开移动模式勾选上,然后调节骨骼与背景至差不多融合,如图2,通过鼠标滚轮能够调节远近,也就是骨骼的大小,近一点就更贴近镜头,保持和背景图差不多即可,然后点击生成。对了,不要忘记在右上角设置宽高和画布一致,例如我是600 800 那我就设置600 800即可

 5.发送到controlnet

将第一个发送到0通道口,如果被占用可以发送到1 2 3等,其他关闭即可,然后点击图生图,回到绘制界面

 6.在controlNet处启用

在controlNet处点击启用,否则无效,然后预处理选择无,模型选择openpose即可,下面也有一个调节宽高的,依旧和之前一样保持画布一样即可,例如我是600 800,总之涉及到宽高的都统一一个就好了,不如容易发生错乱

 7.生成图片以及细节微调

完成上述步骤后,点击生成按钮即可生成图片了,如果发现有不对的地方就去做微调,比如在tag定义发型,AI绘图很难一次生成满意的图片

 通过左侧手动调节位置,或者右侧输入参数都能微调,左侧容易出现畸形,修改难度较大,如果右侧有的参数还是输出较好,然后继续生成,发送到controlNet,点击一下预处理预览一下,然后继续生成,直至满意图片产出即可。

 通过反复调节,最终生成了较为满意的图片,也可以根据图片进行局部重绘修改发型等等。

4.AI绘画局部优化:

1.先上图说明业务场景

        ai在边缘处理有着独到的笨蛋理解,总喜欢画蛇添足,不过这也不能怪他,或许是参数和其他参考图的干扰,所以我们能做的是尽可能将我们的需求说明白,如下,希望将原图修改背景和面容,但是在边缘部分有很多不理想的衍生,我们如何将这里按预期处理呢?

                                                                        原图 

                                            修改1.0

 2.实现方法:

        当有衍生部分,想要通过涂鸦重绘将其改变颜色,最好选用如下参数,尤其是蒙版模糊是2,太低界限感太强,太高影响过大,重绘幅度选择0.3,然后选择蒙版区域内容处理的原图模式,能够最佳还原需要效果。

        具体参数如下:

3.具体实现:

        ①使用FastStone Capture(如果没有百度名字就能下载)取色笔对牛仔裤颜色进行取色,对衍生部分进行涂改成需要修改的颜色,然后选择重绘幅度0.3,蒙版模糊 2 蒙版区域内容处理 原图 这三个参数非常重要,然后就是通过openpose+canyan进行姿势和内容的限制(openpose和canyan默认大家都会没什么难度,b站都有教学)。

 4.结果展示:

                                                修改2.0

5.总结:

       如此已经较为接近需求了,AI绘图其实并不难,我们只是使用层级的,如果有不符合需求的继续微调即可,其实在成图的步骤并没有我以上提的那么简单,出一个稍微满意的图难免花时间,AI绘图的痛点就是:调参占用10%时间 出图占用80%,10%调节测试脚本。目前也在学习阶段有更好的方法也希望能够告诉我哈。

更新时间 2023-12-29