AI稳定生成图工业链路打造

news2025/1/22 15:53:58

前沿

这篇文章会以比较轻松的方式,跟大家交流下如何控制文本生成图片的质量。

要知道如何控制文本生成质量,那么我们首先需要知道我们有哪些可以控制的参数和模块。要知道我们有哪些控制的参数和模块,我们就得知道我们文本生成图片的这架机器或者这个系统,包括了哪些部件和模块。同时需要知道这些部件和模块会如何影响生成的图片质量,如此我们才能更好的去协调和控制生成图片质量。

有了图片生成机器或系统,这就相当于有了一架很牛逼的生产引擎。围绕着生产引擎必然可以配置更多的转化部件,才能让这台机器更加牛逼。但是增加哪些部件呢,又为什么要增加这些部件呢,这必然是和生产的piepleline关联的,我们的生产工序和生产工艺决定了我们该如何假设我们的piepleline。

如此我们会从以上三个层次去介绍可以如何控制图片生成。

1.该如何工业化的稳定的设计我们生产工艺和链路

2.围绕生产工艺和链路该配备哪些生产组件和部件配合我们强大生产引擎组合出牛逼生产系统

3.改如何设置好参数让我们生成引擎达到产出图质量稳定,性能优良

生产引擎——stablediffusion

如上图所示,我们的生产引擎stablediffusion引擎,主要有4大部分:

1.图输入

2.文字输入

3.生成模型

4.输出部分

图输入部分又包括两部分:图片(随机噪声、约束图片)、图片编码器(vae encode)

文字输入部分包括两部分:描述文字(prompt优化)、文字编码器(clip)

生成模型:把图编码、文编码作为原料,经过不同生成模型(生产步数、生成器ddim、sde、euler...)

输出部分:经过生成模型产出图,可以是单步也可以是多步

生产集成车间——stablediffusion_webui

webui看起来就是一张皮,或者是把各个模块串接起来的链路,感觉没什么高科技;然而这东西像插线板一样的把各个模块连接自由组合的东西,却让stablediffusion产生出强大的生成力和可能的创造力。

这东西就像是一个生产集成车间,把各种的机器设备放到了一起,并且把各组件可能需要的连接组合都预先提供转接工具。从虚线来讲就是让各种生产工序可能的串接方式和组合排序方式产生可能。

image2image是个很好工序的转接头,可以让生成的图转入到其它风格的sd模型做进一步生成,也可以转到lora控制的光照、纹理、色彩层做进一步生成。

lora也是一个很好的转接头,每个lora层可以训练控制模型的小风格:光照、色系、质感、纹理;sd基底模型不变,上面换lora层让图片经过一道一道的lora加工达到最后要的效果。

现有的生产工艺

辅助工序

编辑、修改、mask、outpaint、inpaint

Embbeding

这改变的输入部分

1.文本输入,让输入的prompt更优化,是否可能通过把人输入prompt转换成这个训练数据集的标注数据

2.文本转embbeding,是否可以用自己图文数据集合来finetune clip编码器

3.图编码,是否可以选用更适合自己数据集合的编码器vae

4.图约束,是否可以输入图结构

5.图文输入,用Dreambooth方式生成指代符代表输入embbeding,保证生成图片一致

textual investor

在大多数文本到图像模型的文本编码阶段,第一阶段涉及将提示转换为数字表示。这通常是通过将单词转换为标记来完成的,每个标记相当于模型字典中的一个条目。然后将这些条目转换为“嵌入”——特定标记的连续向量表示。这些嵌入通常作为训练过程的一部分进行学习。在我们的工作中,我们发现了代表特定的、用户提供的视觉概念的新嵌入。然后将这些嵌入链接到新的伪词,这些伪词可以像任何其他词一样合并到新句子中。从某种意义上说,正在对冻结模型的文本嵌入空间进行反演,称这个过程为“文本倒置”。

这个应该是在文本输入端编码器上做文章。Textual Inversion 训练为了 embeddings,embeddings 为 Ai 提供处理过的输入数据,告诉这个角色“具体是什么”,训练特殊的人物,角色会更好

Dreambooth

用Dreambooth方式生成指代符代表输入embbeding,保证生成图片一致,做角色、单物体多样化很有效果。

AI生图已经进入商用落地阶段,ChatGPT也实现了通用智能对话能力,未来一段时间AI将是新一轮淘金热潮的风口。而且不像区块链比特币,AI目前国内还是十分宽松,短期内也没有一刀切的风险,合法合规赚钱相对国外还更简单。

1. 生成漂亮头像

Dreambooth模型算法生成漂亮头像

2. 角色扮演

Dreambooth模型算法角色扮演

3. 动物创意图

Dreambooth模型算法动物创意图

4. 动漫二次创作

Dreambooth模型算法动漫二次创作

5. 商品展示图

Dreambooth模型算法 商品展示图

6. 风格化模型

Dreambooth模型算法风格化模型

以上是Dreambooth的能力示范,每个能力都可以落地成不同的商业服务场景。

vae

VAE (Variational Auto-Encoder 变分自动编码器)模型有两部分,分别是一个编码器和一个解码器,常用于AI图像生成

在潜在扩散模型(Latent Diffusion Models)组成中就有VAE模型的身影。

其中编码器(encoder)被用于把图片转换成低维度的潜在表征,转换完成后的潜在表征将作为U- Net 模型的输入.

反之,解码器(decoder)将把潜在表征重新转回图片形式.

在潜在扩散模型的训练过程中,编码器被用于取得图片训练集的潜在表征(latents),这些潜在表征被用于前向扩散过程(每一步都会往潜在表征中增加更多噪声).

在推理生成时,由反向扩散过程生成的 denoised latents 被VAE 的解码器部分转换回图像格式.

所以说 ,在潜在扩散模型的推理生成过程中我们只需用到VAE的解码器部分.

WebUI中的VAE

那些比较流行预训练的模型一般都是内置了训练好的VAE模型的,不用我们再额外挂载也能做正常的推理生成(挂载后生成图像的效果会有一点点细微的区别),此时VAE pt文件的作用就像HDR ,增加一点点图片色彩空间之类的一些自定义模型

可如果一些预训练模型文件不内置VAE(或训练他们自己的VAE,此时通常会在他们的模型发布说明中告诉你从哪得到他们的VAE)。我们就必须给它找一个VAE挂载上去,用来将推理时反向扩散最后生成的 denoised latents 转换回图像格式,否则webui里最后生成输出给我们的就是类似彩噪的潜在表征(latents),此时VAE pt文件的作用就像解压软件 ,为我们解压出肉眼友好可接受的图像.

做了张图来直观地说明展示下

网络模型

hypernetwork

Hypernetworks 会对超网络的改动,与 embeddings 不同,Hypernetworks 会对模型进行微调,所以泛化效果更加好,训练画风会更好。

网络merge fix

有多个风格的网络,是否可以通过权重方式组合出介于a、b风格之间的风格

分层融合

如--input_blocks "0:0.3",0是input层序号,0.3是第二个权重的占比,多层描述之间以英文逗号分隔,层内以英文冒号分隔。

这里的权重比例指的是第二个权重的占比。

如果不需要融合middle_blocks,可以直接删除--middle_blocks这一行。

支持safetensors格式和ckpt格式权重的融合与保存(根据文件格式自动判断)。

!python tools/merge_unet_blocks.py ./ckpt_models/xxx1.safetensors ./ckpt_models/xxx2.safetensors \

--input_blocks "0:0.5, 1:0.5, 2:0.5, 3:0.6, 4:0.5, 5:0.5, 6:0.5, 7:0.5, 8:0.5, 9:0.5, 10:0.5, 11:0.5" \

--middle_blocks "0:0.5, 1:0.5, 2:0.6" \

--output_blocks "0:0.5, 1:0.5, 2:0.5, 3:0.6, 4:0.5, 5:0.5, 6:0.5, 7:0.5, 8:0.5, 9:0.5, 10:0.5, 11:0.5" \

--out "0:0.5, 2:0.3" \

--time_embed "0:0.5, 2:0.3" \

--dump_path ./ckpt_models/merged.ckpt

以上这段等价于:(即只为特别层指定融合时的比例,其他层融合时共用基础比例--base_alpha 0.5)

!python tools/merge_unet_blocks.py ./ckpt_models/xxx1.safetensors ./ckpt_models/xxx2.ckpt \

--base_alpha 0.5 \

--dump_path ./ckpt_models/merged.safetensors

你也可以,以相同的比例合并整个unet层:

链路

instruct pix2pix

instruct-pix2pix作者团队提出了一种通过人类自然语言指令编辑图像的方法。他们的模型能够接受一张图像和相应的文字指令(也就是prompt),根据指令来编辑图像。作者团队使用两个预训练模型(一个是语言模型GPT-3, 另一个是文本到图像模型Stable Diffusion) 生成大量编辑图像的样例数据,然后基于这些数据训练出InstructPix2Pix模型,能够在推理过程中适用于真实图像和用户提供的指令。由于它在前向传播中执行编辑并且不需要对每个示例进行fine-tine或 inversion,模型仅需几秒钟就可快速完成图片的编辑。

Lora

LoRA: Low-Rank Adaptation of Large Language Models 是微软研究员引入的一项新技术,主要用于处理大模型微调的问题。目前超过数十亿以上参数的具有强能力的大模型 (例如 GPT-3) 通常在为了适应其下游任务的微调中会呈现出巨大开销。 LoRA 建议冻结预训练模型的权重并在每个 Transformer 块中注入可训练层 (秩-分解矩阵)。因为不需要为大多数模型权重计算梯度,所以大大减少了需要训练参数的数量并且降低了 GPU 的内存要求。研究人员发现,通过聚焦大模型的 Transformer 注意力块,使用 LoRA 进行的微调质量与全模型微调相当,同时速度更快且需要更少的计算。

用于 Diffusers 的 LoRA

尽管 LoRA 最初是为大模型提出的,并在 transformer 块上进行了演示,但该技术也可以应用于其他地方。在微调 Stable Diffusion 的情况下,LoRA 可以应用于将图像表示与描述它们的提示相关联的交叉注意层。下图的细节 (摘自 Stable Diffusion 论文) 并不重要,只需要注意黄色块是负责建立图文之间的关系表示就行。

潜在扩散架构

Lora用作模型增量风格实例

2d风格图

lora做了光照、3d风格把2d转3d风格

生产工序

图片输入前前置处理工序(图片对齐、图片打标)

图片打标
  • CodeFormer(pth权重文件)(图片&脸部修复)

  • 下载pth到对应文件夹下

  • torch_deepdanbooru(现在deepdanbooru的模型读取路径)

  • 把pt权重文件下到该路径即可

  • deepbooru( 老黄历现在不需要了 只需准备上面torch_deepdanbooru的权重文件 deepbooru 分析图片的tag&自训练前对数据集的文本分析)

  • 安装相应依赖 (注意依赖中包含tensorflow及tensorflow-io)

  • github 上下载 https://github.com/KichangKim/DeepDanbooru/releases/tag/v3-20211112-sgd-e28

  • 解压后放到models/deepbooru目录下即可

  • ESRGAN(图片修复)

  • 下载pth到对应文件夹下

  • GFPGAN(用于三次元脸部修复的GAN)

  • 下载pth到对应文件夹下

  • LDSR(用LDM来提升分辨率)

  • 下载pth到对应文件夹下并改名为model.ckpt

  • SwinIR(另一种提升分辨率的模型)

  • 下载pth到对应文件夹下

  • mmdet (yolo实现的自动生成蒙版的插件的依赖存放路径)

outpaint

当数据集比例不一时、可以通过outpaint外绘来统一、避免裁掉很多细节

示例:9:16 -> 1:1

图片经过几道引擎生产

图片后处理工序(图片质量打分、图片修改、)
aesthetic-gradients(根据美学权重优化图片)

插件项目地址

图片修改-loopback 迭代草图

(loopback还可配合inpaint进行修图、类似ps 美图秀秀里的修补功能)

工艺组合成piepleline

例子跟进,1周内更新一个版本

例子

https://github.com/idpen/finetune-stable-diffusion

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新手福利——x64逆向基础

一、x64程序的内存和通用寄存器 随着游戏行业的发展,x32位的程序已经很难满足一些新兴游戏的需求了,因为32位内存的最大值为0xFFFFFFFF,这个值看似足够,但是当游戏对资源需求非常大,那么真正可以分配的内存就显得捉襟…

测试人员如何运用好OKR

在软件测试工作中是不是还不知道OKR是什么?又或者每次都很害怕写OKR?或者总觉得很迷茫,不知道目标是什么? OKR 与 KPI 的区别 去年公司从KPI换OKR之后,我也有一段抓瞎的过程,然后自己找了两本书看,一本是《OKR工作法》&#xf…

WPF_ObservableCollection基本使用及其注意项

文章目录一、引言二、ObservableCollection三、结语一、引言 在GUI编程中经常会用到条目控件,常见的如ComboBox(下拉列表框),它内部往往有多个项。 在使用一些图形框架(Qt、WinForm)上进行原始开发时&…

安卓mvvm

AndroidX的意思是android extension libraries, 也就是安卓扩展包 AndroidX其实是Jetpack类库的命名空间 (190条消息) AndroidX初识_Neda Wang的博客-CSDN博客https://blog.csdn.net/weixin_38261570/article/details/111500044 viewmodel ViewModel类旨在以注重生命周期的方…

【机器学习】决策树-C4.5算法

1.C4.5算法 C4.5算法与ID3相似,在ID3的基础上进行了改进,采用信息增益比来选择属性。ID3选择属性用的是子树的信息增益,ID3使用的是熵(entropy, 熵是一种不纯度度量准则),也就是熵的变化值&…

回溯算法理论基础及组合问题

文章目录回溯算法理论基础什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板组合问题回溯算法理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中&…

LPWAN及高效弹性工业物联网核心技术方案

20多年前的一辆拖拉机就是一个纯机械的产品,里面可能并没有电子或者软件的构成;而随后随着软件的发展,拖拉机中嵌入了软件,它能控制发动机的功率及拖拉机防抱死系统;接下来,通过融入各种软件,拖…

js逆向基础篇-某房地产网站-登录

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除! 网站链接:aHR0cHM6Ly9tLmZhbmcuY29tL215Lz9jPW15Y2VudGVyJmE9aW5kZXgmY2l0eT1iag== 案例分析: 本篇文章分析的是登录逻辑。话不多说,先看看登录中有哪些加密参数,在登录页面随便输入…

K8S DNS解析过程和延迟问题

一、Linux DNS查询解析原理(对于调用glibc库函数gethostbyname的程序)我们在浏览器访问www.baidu.com这个域名,dns怎么查询到这台主机呢?  1、在浏览器中输入www.baidu.com域名,操作系统会先查找本地DNS解析器缓存&a…

实例2:树莓派GPIO控制外部LED灯闪烁

实例2:树莓派GPIO控制外部LED灯闪烁 实验目的 通过背景知识学习,了解四足机器人mini pupper搭载的微型控制计算机:树莓派。通过树莓派GPIO操作的学习,熟悉GPIO的读写控制。通过外部LED灯的亮灭控制,熟悉树莓派对外界…

vue3 + vite 使用 svg 可改变颜色

文章目录vue3 vite 使用 svg安装插件2、配置插件 vite.config.js3、根据vite配置的svg图标文件夹,建好文件夹,把svg图标放入4、在 src/main.js内引入注册脚本5、创建一个公共SvgIcon.vue组件6.1 全局注册SvgIcon.vue组件6.2、在想要引入svg的vue组件中引…

Boom 3D最新版本下载电脑音频增强应用工具

为了更好地感受音乐的魅力,Boom 3D 可以让你对音效进行个性化增强,并集成 3D 环绕立体声效果,可以让你在使用任何耳机时,都拥有纯正、优质的音乐体验。Boom 3D是一款充满神奇魅力的3D环绕音效升级版,BOOM 3D是一个全新…

MyBatis 之四(动态SQL之 if、trim、where、set、foreach 标签)

文章目录动态 SQL1. if 标签2. trim 标签3. where 标签4. set 标签5. foreach 标签回顾一下,在上一篇 MyBatis 之三(查询操作 占位符#{} 与 ${}、like查询、resultMap、association、collection)中,学习了针对查询操作的相关知识点…

【C++】map和set的封装

文章目录一、前情回顾二、简化源码三、仿函数四、迭代器五、set的实现六、map的实现七、红黑树代码一、前情回顾 set 参数只有 key&#xff0c;但是map除了key还有value。我们还是需要KV模型的红黑树的&#xff1a; #pragma once #include <iostream> #include <ass…

游戏服务器算法-AOI基本介绍

一、直接比较所有对象 最直观也是最效率最低的一种方法。当一个事件发生&#xff0c;我们需要获得AOI范围以内的物体时&#xff0c;直接遍历游戏中所有的对象&#xff0c;并且进行坐标判断&#xff0c;如果小于或者等于AOI的范围&#xff0c;则为需要的游戏对象。 这种方法实…

零基础小白如何学会云计算?

云计算作为新兴互联网技术&#xff0c;也是IT服务的集大成者&#xff0c;包括了基础硬件服务、平台服务、应用程序开发、系统架构等服务内容。云计算的出现承接了众多IT技术和其他行业的发展&#xff0c;比如大数据、人工智能以及工业、金融、医疗、物流等&#xff0c;是经济社…

VBA提高篇_26 Textbox多行_ListBox_ComboBox

文章目录1. 文本框多行换行2. ListBox: 列表框2.1 列表框中添加条目的三种方法:3. ComboBox 组合框: 属性方法等同于以上ListBox1. 文本框多行换行 MultiLine: 控制文本框多行自动换行() Enterkeybehevior: True 代表允许在文本框中使用回车键换行 WordWrap: True 代表自动换…

/etc/fstab文件

文件/etc/fstab存放的是系统中的文件系统信息&#xff0c;当系统启动的时候&#xff0c;系统会自动地从这个文件读取信息&#xff0c;并且会自动将此文件中指定的文件系统挂载到指定的目录。当正确的设置了该文件&#xff0c;则可以通过mount /directoryname命令来加载一个文件…

Tapdata Connector 实用指南:数据入仓场景之数据实时同步到 BigQuery

【前言】作为中国的 “Fivetran/Airbyte”, Tapdata 是一个以低延迟数据移动为核心优势构建的现代数据平台&#xff0c;内置 60 数据连接器&#xff0c;拥有稳定的实时采集和传输能力、秒级响应的数据实时计算能力、稳定易用的数据实时服务能力&#xff0c;以及低代码可视化操作…

恢复 iPhone 和 iPad 数据的 10 种简单工具

它发生了.. 有时您需要从您的手机或平板设备恢复重要数据。 许多人已经开始将重要文件存储在手机上&#xff0c;因为他们几乎可以在任何情况下随时随地轻松访问数据。 从技术上讲&#xff0c;您会在几分之一秒内丢失所有存储的信息、照片、视频、音乐、文档等。因此&#xff…