👈👈👈 欢迎点赞收藏关注哟
首先分享之前的所有文章 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164…
Github : 👉 github.com/black-ant
CASE 备份 : 👉 gitee.com/antblack/ca…
一. 前言
在之前的文章里面 ,我们探讨了 AIGC 的使用 和 服务器部署 ,这一篇我们来探讨其工业化 :
对于普通的创业者来说 ,原理多牛,算法多深奥 ,都只是抽象概念 。 我们真正关心的是 ,这个技术能否变现。
而对于生成式 AI 工具来说 ,第一步就是 可控性
。 我们首先要让 AI 工具能按照我们的思想去生成资源 ,才能考虑通过这些资源实现变现。
二. 技术原理
2.1 初级 : 通过 Lora 控制风格
如果已经开始接触了 Stable Diffusion , 那么第一体验就是通过 Lora 对大模型进行微调 :
以 liblib 为例 ,一般会有两种模型可供下载 :
- CKPT 大模型 : 也就是 Checkpoint 模型 , 大小通常按 G 计算
- 作用 :经过训练的图片集合 ,体积较大
- Lora 模型 : 用于对图片进行调整 ,以 M 为级别 ,一般 几百M
- 作用 :微调图片 ,渲染风格, 不同于 VAE ,它对普通图片的影响很大 ,让
图片具有明显的特征
- 作用 :微调图片 ,渲染风格, 不同于 VAE ,它对普通图片的影响很大 ,让
- 其他模型 : 另外还有一些模型可以在生成图像的时候产生作用
- VAE 模型: 主要用于滤镜和微调 , 改变色彩和一些形状细节
- Embedding 模型 :用于整合提示词 ,
简单点说就是通过一个特定的词就可以描述一个特定的复杂场景
- 比如 : 迪士尼 =
一个有着城堡的乐园 , 里面有巴拉巴拉的动物... 省略几千字
- 比如 : 迪士尼 =
简单点说 , Embedding 是一个一句话描述。 而 Lora 则是在描述的同时 ,也把描述相关的资源文件一起给过来了。
Lora 模型效果图
- 左边是相同格式 ,相同环境下生成的图像
- 当我们使用这中间的 Lora 后 ,能明显感觉到鲜果更加逼真了
注意 : Lora 和 大模型是有关联的 ,配合不好就会有上述表情的不真实感
Lora 使用技巧 :
总结一下 ,在 Lora 使用时主要有以下几个参数需要关注 : @ 参考文档
- Lora 是基于大模型进行训练的 ,
想要好的效果
最好能使用其训练使用的大模型 注意 Lora 使用的权重
: 权重最好不要大于一 ,更接近 (0.8-0.9) , 带点效果 (0.3-0.4)- 注意 Lora 的触发词 (Trigger Word), 如果没有触发词 ,可能也不会有触发
2.2 进阶 : 通过 ControlNet 控制
虽然 Lora 真正模型可以调整生成的效果 ,但是整体的方向还是由算法自行决定的,永远达不到精细的效果。这个时候就要使用 ControlNet 了。
- ❓问 : ControlNet 是什么?
- 答 : ControlNet 即为控制网 ,辅助式神经网络模型结构 ,可以基于控制图像来控制图像的生成
- ❓问 : ControlNet 能做到什么?
- 答 : 特定构图 ,锁定角度 ,特定姿势 ,涂鸦 ,定义轮廓 ,深度 ,分割线
也就是说基本上能通过 ControlNet 让图像按照我们的意愿进行生成,这也意味着图片的可控性将会大大增强,从而让图像变得可控。
- ❓问 : Lora 也可以进行姿势的控制 ,为什么还要用 ControlNet ?
- 解答 :主要是基于成本和不同的角色性质
- Lora 用于确定整个图片的元素 (成员) ,如果要控制动作 ,需要专门的训练 ,成本过高
- 就算计算出了有明显特性的 Lora 模型 ,但是其生成图片还是和抽卡一样具有随机性
- 而 ControlNet 用来控制动作的成本就要低得多,只需要给一个线稿图即可
2.3 扩展 : 其他控制图像的小技巧
- 文生图的高分辨率修复 : 如果显卡性能足够的情况下 ,可以通过文生图里面的 进行扩展
- 图生图 : SD 中提供了一个图生图的功能 ,它可以让图片的细节和大小进行细化和扩展
- 使用脚本 : 可以在生成图片的过程中选择脚本 ,提高图片的效果
三. ControlNet 使用方式
其他的方式都属于小技巧 , ControlNet 才是工业化的主要手段
3.1 准备好 ControlNet
这些模型在相关的网站上也是能找到的 ,找到后将模型放在对应文件夹 : \models\ControlNet
3.2 准备好参考图
这一块还比较复杂 ,基于不同的案例可能会涉及到 CAD 或者蒙版等用法,现阶段还不太会玩 ,就采用最简单的用法 :
- 👉 第一步 : 当勾选启用后 ,就会有预处理 和 模型可以供选择
- 👉 第二步 : 当上传图片后 ,就可以通过预处理器 和 模型中间的按钮进行于处理
3.3 选择权重和类型
- 控制类型 : 针对不同的需求对图片进行特定的控制 ,下文有对应的模式
- 权重 : 控制生成图片和底图的相似度 (不可太高,效果会不理想)
- 引导介入时机 : 在图片绘制的哪个时期开始介入
- 引导终止时机 : 什么时候停止介入 , 设置的早可以让 SD 更加自由发挥
- 均衡/更偏向提示词/更偏向于ControlNet : 要根据实际结果进行调整
3.4 常见错误
在上一张的效果里面犯了几个明显的错误 :
-
- 提示词太强 ,导致整体的内容还是会按照提示词进行控制
-
- 提供的图片元素过多 ,无法从中解析出足够的元素进行控制
-
版本号没有生效 ,对应不上
(我也没解决,找不到几个可以用的,是我太菜)
-
- 注意 ,内存不够需要选择低显存模式哦
一般系统上的问题在控制台都能找到原因 :
3.5 效果展示
时间有限 ,尝试的时候一直出现奇奇怪怪的问题 ,没能完整的使用出来 ,所以只能看一下大佬做的图 :
四. 微观参数
4.1 ControlNet 各项参数的作用
👉 推荐 👉 这里只记录笔记 ,具体的教程可以查看 @ 参考文档
控制类型 : @ 参考文档
- 线稿轮廓类型 : 用于控制图片的线条
- Canny(硬边缘) :检测出原始图片中各对象的
边缘轮廓特征
,生成线稿 ,作为生成图片的条件 - MLSD(直线) : 分析图片的线条架构和集合机构来
构建外部框架
, 用于提取直线轮廓
- lineart(线稿) : 线稿处理 ,
提取图片的线稿信息
,和 Canny 类型 ,但是效果比 Canny 更好 - SoftEdge(软边缘) : 检测图像的
软边缘轮廓
, 让图像在有轮廓的同时更加灵活
- Scribble/Sketch(涂鸦/草图) : 提取
曝光对比度更加明显
的区域 ,不识别精细
的地方
- Canny(硬边缘) :检测出原始图片中各对象的
- 图像优化类 :
- 局部重绘 : 使用 mask 蒙版对需要重绘的部分进行遮盖 ,在那里进行
局部的变动
- InstructP2P : 基于
提升词
来修改图片
(修改衣服颜色等) - Tile(分块) : 增加图片的分辨率 ,
增加图片的细节
- 局部重绘 : 使用 mask 蒙版对需要重绘的部分进行遮盖 ,在那里进行
- 空间结构类 :
- Depth(深度) : 提取图片中的
深度信息
,从而生成一样的深度结构 - OpenPose(姿态): 人体关键点检测模型 ,检测人体关键点 ,从而精准
控制人物状态
- Segmentation(语义分割): 对图片内容进行语义分割,
分辨图片的语义后按照对应区域对应语义生成
- NormalMap(法线贴图) : 生成一张记录凹凸纹理信息的图, 用于控制
凹凸质感
- Depth(深度) : 提取图片中的
- 色彩调整类
- Shuffle(随机洗牌) : 基于参考图把图片
风格迁移
到新的图片上 , 相当于风格没变, 图片变了 - Recolor(重上色) : 对图片进行重新上色 ,例如给
黑白图片上色
- Shuffle(随机洗牌) : 基于参考图把图片
- 风格迁移类 :
- Reference (参考) : 基于
参考图
生成 画风相似的图片 ,控制大致风格和布局
- Revision : 输入一张图片当成提示词 ,他会根据新的模型完全按照提示生成新图 (区别上一个)
- IP-Adapter : 根据用户上传的图片进行创作 ,风格更加接近原图
- Reference (参考) : 基于
总结
虽然没有达到我的预期 ,尝试了一天总是出现各种各样的问题 ,很遗憾这一期没办法展示那些有趣的用法了。
不过 !! 下一期一定要尝试一下那些有趣的操作 !!