Stable Diffusion 使用详解(2)---- 图生图原理,操作,参数

目录

背景

图生图原理

基本原理

1. 扩散模型基础

2. 图生图的具体流程

3. 关键技术点

4. 应用实例

CLIP 原理

1.基本概念

2. 核心特点

使用及参数

随机种子

重绘幅度

图像宽高

采样方法

1. DPM(扩散概率模型)

2. SDE(随机微分方程)

3. Karras等人的优化策略

4. DPM + SDE Karas的特点

5. 应用场景

prompt的书写

小结

正向提示词

反向提示词

其他设置

底模


背景

图生图,应该说应用非常广泛。因为文生图,AI绘画只能根据你描述的语言进行绘制,可能执行100次,100次的结果都不同。但是图生图的机制不太一样。当使用图生图机制时,AI首先会分析原画的一些特征,有一些语言很难表达,比较晦涩的特征会被AI 通过原画的方式进行捕捉。因为如果说你大脑中所想,经过人类语言描述AI可能不大能很好的把握,通过提示词的技巧可以使得你想表达的东西距离AI越近(如果你还不会提示词技巧,看下上一篇文章 Stable Diffusion 详解(1)---- 提示词及相关参数-CSDN博客),那么直接用图的方式让AI自己图提取特征就更为直接。如果熟悉神经网络和卷积的朋友都应该清楚,AI 正是通过无数个卷积神经网络提取不同图片的特征,当然著名的model 也很多,比如ResNet-50 等,当然这不是这次讲的重点,重点是你需要知道通过原图提取图片特征是一种更为直接的手段,不要让AI作画范围跑的太偏了。他与prompt 结合,可能会产生一些更好的结果。比如将你的头像转为二次元头像等。

图生图原理

基本原理

其实第一次介绍stable diffusion,大致说了下VAE的基本原理。这次仔细阐述下。实际上图生图的原理所用到的基本模型思想和在另一个专栏里写的 Milvus 实践(1) --- 文本-图片交互式search搭建及原理-CSDN博客有异曲同工之处,AI在输入上接受两个维度的输入信息,一个维度是图片本身的,你可以用诸如ResNet-50 提取。只不过对于stable diffusion 来说,采用了一种称之为 diffusion的encoder方式完成隐空间特征。另一维度,来自文本,一般可以采用诸多LLM embedding coding 中的一种就行,stable diffusion也不例外,只不过采用了一种与图片diffusion encoder相匹配的 embedding coding的方式完成。就像在文本搜索中,CLIP的做法总是将图片与文本的两个维度信息转换为相同向量的维度进行合成一样。

图生图原理主要基于扩散模型(Diffusion Model)的框架,该模型通过模仿物理过程中的分子扩散现象,将图像从纯噪声逐渐演化为清晰图像。在图生图场景中,Stable Diffusion不仅接受文字提示,还接受一张源图片作为额外条件,从而生成与源图相关联且符合提示要求的新图像。以下是Stable Diffusion图生图原理的详细解释:

1. 扩散模型基础

  • 定义:扩散模型是一种深度学习模型,它通过逐步添加噪声来“扩散”图像,然后将图像从完全噪声中逐步恢复出原始图像或生成新图像。
  • 过程:扩散过程分为两个相反的阶段:扩散(增加噪声)和逆扩散(去除噪声并恢复结构)。在图生图场景中,逆扩散阶段被用来根据用户提供的输入图片和提示词,逐步生成目标图像。

2. 图生图的具体流程

  • 输入:用户需要提供一张源图片和相应的提示词。源图片的信息被编码为隐空间中的向量表示,与文字提示共同作为逆扩散过程的起点。
  • 编码:源图片通过图像编码器(如VAE Encoder)生成隐空间特征(Latent Feature),同时提示词通过CLIP Text Encoder编码为文本特征。
  • 逆扩散:在逆扩散过程中,模型使用噪声预测器(如U-Net结构)来逐步去除隐空间中的噪声,同时根据提示词的语义信息指导生成过程。这个过程中,模型会同时参考源图片的结构特征和提示词的语义信息,从而生成新的图像。
  • 解码:经过逆扩散过程后,得到的隐空间特征通过图像解码器(如VAE Decoder)转换回像素空间,生成最终的图像。

3. 关键技术点

  • 隐空间表示:源图片的信息被编码为隐空间中的向量表示,这使得模型能够处理高维的图像数据并降低计算复杂性。
  • 噪声预测器:U-Net结构的噪声预测器负责预测并去除隐空间中的噪声,同时注入文本语义信息以指导生成过程。
  • 语义信息融合:通过CLIP Text Encoder将提示词转换为文本特征,并以Cross Attention的形式与U-Net结构耦合,实现文本和图像的语义信息融合。
  • 采样器和重绘幅度:采样器负责协调整个去噪过程,并根据设计模式在动态调整U-Net去噪强度。重绘幅度决定了新生成的图片在多大程度上改变参考图片。

4. 应用实例

在图生图任务中,Stable Diffusion可以应用于多种场景,如将真人照片转换为二次元风格、对图片进行局部修改(如修改颜色、添加元素等)等。用户可以通过调整提示词、重绘幅度等参数来控制生成结果的效果。

综上所述,Stable Diffusion的图生图原理是基于扩散模型的框架,通过编码源图片和提示词、逆扩散过程以及解码过程来生成新的图像。这一过程中涉及了隐空间表示、噪声预测器、语义信息融合等关键技术点,使得Stable Diffusion能够生成出与源图相关联且符合提示要求的新图像。

CLIP 原理

如果你已经是AI 高手了,CLIP 不用我多解释,如果你不是很明白,我还是解释下CLIP的前世今生。

“Contrastive Language-Image Pre-training”,是由OpenAI开发的一种能够同时理解文本和图像的人工智能模型。以下是对CLIP的详细解释:

1.基本概念

  • 定义:CLIP是一个基于对比学习的多模态学习模型,旨在通过同时学习图像和文本特征,使得模型能够理解并关联不同模态的信息。不得不提一下,最初这个概念是OpenAI 提出的,虽然我们被禁止调用了,但是这个思想还是很不错的。

2. 核心特点

  1. 多模态能力
    • CLIP能够同时处理文本和图像两种不同类型的输入,这是其最显著的特点之一。传统的AI模型通常只处理单一类型的输入,如只理解文字(如GPT-3)或只理解图像(如ResNet)。
    • 这种多模态能力使得CLIP特别适合于需要将文字和图像关联起来的任务,如图像搜索、图像生成等。
  2. 对比学习方法
    • CLIP的名字中的“Contrastive”指的是一种学习方法,即对比学习。在这种学习方法中,模型通过比较不同样本之间的相似性和差异性来学习数据特征。
    • 在CLIP中,对比学习被用来训练模型理解图像和文本之间的对应关系。具体来说,模型会学习将相关的图像和文本对映射到相似的特征空间中,而将不相关的图像和文本对映射到不同的特征空间中。
  3. 强大的关联能力
    • 通过学习图像和文本之间的映射关系,CLIP能够准确地生成符合文本描述的图像,或者根据图像内容找到合适的文本标签。
    • 这种关联能力使得CLIP在图像生成、图像识别、内容创建等任务中具有巨大的潜力。

使用及参数

随机种子

这个参数要说一下,在上一节中,有人问,根据相同提示词,AI绘制出的东西总是不同的,确实是这样,因为AI 绘画有随机性,他只需要满足你描述的prompt即可。但是我们有时候只是想改变背景,保留住主元素,比如上一节的哪个快艇,我们想保留住,只是想改变背景蓝色的大海怎么办?

那这时,就需要看下当时的随机数是多少,用当时的随机数即可。比如上一节的例子中,最后绘制出来的图片是这样的:

我们想保留之前的那个快艇:

将随机种子找到,hold 住。再生成图:

就回来了。

重绘幅度

就是希望AI重新绘制的力度是多少,太大容易走样,太小没有什么新意。根据我的经验,设置在6-8之间比较合适。

图像宽高

建议是生成的图片与原图片等比例,不然容易出问题,哪怕是以后重新扩图也行。今天绘制一个stable diffusion 生成的美女,看看把她变为 二次元风格会是怎样。

原图信息

 

采样方法

其实采用方法很多,主要用来描述怎么解析原图和怎么与之生成配对的新图的方案。我比较喜欢采用DPM + Karas 的方式,但是我还是解释下原理,没听明白,可以跳过,其实数学的东西比较多。先泛泛解释下。

采样方法DPM + SDE Karas(或DPM++ SDE Karras)是Stable Diffusion等图像生成模型中的一种采样策略,它结合了DPM(Diffusion Probabilistic Models,扩散概率模型)和SDE(Stochastic Differential Equation,随机微分方程)以及Karras等人的优化策略。以下是对该采样方法的详细解析:

1. DPM(扩散概率模型)

DPM是一种通过逐步添加噪声到数据中,然后学习如何逐步去除噪声以恢复原始数据的生成模型。这种方法在图像生成领域取得了显著成果,因为它能够生成高质量的图像,并且具有较好的可解释性和可控性。

2. SDE(随机微分方程)

SDE是一种描述系统随时间变化的随机过程的数学工具。在图像生成中,SDE被用来模拟图像数据的扩散过程,即图像数据逐渐添加噪声的过程。通过求解SDE的逆过程,可以生成去噪后的图像,即原始图像。

3. Karras等人的优化策略

Karras等人提出了一种高效的随机数生成方法和优化策略,这些策略被应用于DPM + SDE Karas中,以减少计算量和内存消耗,同时提高生成图像的质量和效率。

4. DPM + SDE Karas的特点

  1. 高效性:结合了DPM和SDE的优点,能够在较少的采样步数下生成高质量的图像。
  2. 可控性:通过调整SDE的参数和Karras等人的优化策略,可以实现对生成图像过程的精细控制。
  3. 多样性:由于SDE的随机性,DPM + SDE Karas能够生成具有多样性的图像样本。

5. 应用场景

DPM + SDE Karas适用于需要高质量、高效率图像生成的场景,如艺术创作、游戏开发、虚拟现实等。此外,它还可以用于图像编辑、图像超分辨率等图像处理任务。

prompt的书写

上一篇已经解释过了,就是 内容prompt + 通用prompt。内容很简单,我就写 1 girl。 通用 prompt 基本就是那些套路,这个需要多练,直接上那些固定讨论写法就好。 

小结

看下最终的设置如下:

正向提示词

a girl,
(masterpiece:1,2),best quality,masterpiece,highres,original,extremely detailed wallpaper,

反向提示词

NSFW,(worst quality:2),(low quality:2),(normal quality:2),lowres,normal quality,((monochrome)),((grayscale)),skin spots,acnes,skin blemishes,age spot,(ugly:1.331),(duplicate:1.331),(morbid:1.21),(mutilated:1.21),(tranny:1.331),mutated hands,(poorly drawn hands:1.5),blurry,(bad anatomy:1.21),(bad proportions:1.331),extra limbs,(disfigured:1.331),(missing arms:1.331),(extra legs:1.331),(fused fingers:1.61051),(too many fingers:1.61051),(unclear eyes:1.331),lowers,bad hands,missing fingers,extra digit,bad hands,missing fingers,(((extra arms and legs))),

其他设置

底模

其实已经有很多人上传了各种你你可能需要的底膜,所谓底膜,如果你懂AI原理,其实就是 以前的checkpoint,说直白点就是AI 绘画大模型针对当下你需要的这个场景提前训练好的模型参数。不过现在用safetensor 的方式比较流行,以前是 kpt 文件的方式存储,有安全问题,可能引入其他可执行代码。相对来说 safetensor 就是存储的模型layer 张量数据,很单纯,安全性高。不扯远了,你可以选择一个已经有的成熟底膜。我这里选择的是

好了,设置完成,看看出图效果。

第一幅是原图,后面三张是二次元生成的动漫效果。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G mmWave PAAM 开发平台

Avnet-Fujikura-AMD 5G 毫米波相控阵天线模块开发平台 Avnet 和 Fujikura 为毫米波频段创建了一个领先的 5G FR2 相控阵天线开发平台。该平台使开发人员能够使用 AMD Xilinx 的 Zynq UltraScale™ RFSoC Gen3 和 Fujikura 的 FutureAcess™ 相控阵天线模块 (PAAM) 快速创建和制…

【项目】星辰博客介绍

目录 一、项目背景 二、项目功能 1. 登录功能: 2. 列表页面: 3. 详情页面: 4. 写博客: 三、技术实现 四、功能页面展示 1. 用户登录 2. 博客列表页 3. 博客编辑更新页 4.博客发表页 5. 博客详情页 五.系统亮点 1.强…

【AI学习】LLaMA 系列模型的进化(二)

在前面LLaMA 系列模型的进化(一)中学习了LLama模型的总体进化发展,再来看看其中涉及的一些重要技术。 PreLayerNorm Layer Norm有Pre-LN和Post-LN两种。Layer Normalization(LN)在Transformer架构中的放置位置对模型…

使用Java -jar运行就jar包时报异常:org.yaml.snakeyaml.error.YAMLException异常

Java运行就 .jar包时出现的 YAMLException 异常 我在本地环境测试时,使用 java -jar 命令运行 Java 可执行 .jar 包时,遇到了 org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 异常;这…

windows USB 设备驱动开发-开发Type C接口的驱动程序(一)

如果 USB Type-C 系统未实现 PD 状态机,或者它实现了状态机,但不支持通过非 ACPI 传输 UCSI,则需要为连接器编写驱动程序。 如果存在,可以加载 Microsoft 提供的 UCSI 驱动程序。 建议的解决方案 下表建议基于硬件或固件功能的解…

在vs code中用npm run serve运行项目报错

在vs code中用npm run serve运行项目报错 报错为: npm ERR! code ENOENT npm ERR! syscall open npm ERR! path C:\Users\Administrator\Desktop\project_shop/package.json npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file or directory, open ‘C:\Us…

sourcetree中常用功能使用方法及gitlab冲突解决

添加至缓存:等于git add 提交:等于git commit 拉取/获取:等于git pull ,在每次要新增代码或者提交代码前需要先拉取一遍服务器中最新的代码,防止服务器有其他人更新了代码,但我们自己本地的代码在我们更新前跟服务器不…

docker应用:搭建云手机

简介:近来慵懒,身体懈怠良多,思来想去随手看点小攻略以宽慰不懈怠的心。云手机Cloudphone,就是将云计算技术运用于网络终端服务,通过云服务器实现云服务的手机。其实就是深度结合了网络服务的智能手机,这类…

使用Python的Turtle库绘制太极,用turtle演绎中国风!

引言 在编程领域,图形绘制是一项既实用又有趣的技能。Python的turtle模块以其易用性和可视化特性成为了入门级图形编程的理想选择。本文将介绍如何使用turtle模块结合多线程技术,同时绘制一个太极,以此来探索图形绘制和并发编程的概念。 Tu…

Java实战中如何使用多线程(线程池)及其为什么使用?

这个话题在入行之前就想过很多次,很多8古文或者你搜索的结果都是告诉你什么提高高并发或者是一些很高大上的话,既没有案例也没有什么公式去证明,但是面试中总是被问到,也没有实战经历,所以面试时一问到多线程的东西就无…

PACS-医学影像信息管理系统,全影像科室PACS源码,内置包括MPR、CMPR、VR等三维处理功能

PACS系统可以覆盖医院现有放射、CT、MR、核医学、超声、内镜、病理、心电等绝大部分DICOM和非DICOM检查设备,支持从科室级、全院机、集团医院级乃至到区域PACS的平滑扩展,能够与医院HIS、集成平台的有效集成和融合,帮助医院实现了全院医学影像…

分布式 I/O 系统 BL200 Modbus TCP 耦合器

BL200 耦合器是一个数据采集和控制系统,基于强大的 32 位微处理器设计,采用 Linux 操作系统,支持 Modbus 协议,可以快速接入现场 PLC、SCADA 以及 ERP 系统, 内置逻辑控制、边缘计算应用,适用于 IIoT 和工业…

Github 2024-07-20 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10TypeScript项目1Rust: 构建可靠高效软件的开源项目 创建周期:5064 天开发语言:Rust协议类型:OtherStar数量:92978 个Fork数量:1…

【漏洞复现】Next.js框架存在SSRF漏洞(CVE-2024-34351)

0x01 产品简介 ZEIT Next.js是ZEIT公司的一款基于Vue.js、Node.js、Webpack和Babel.js的开源Web应用框架。 0x02 漏洞概述 ZEIT Next.js 13.4版本至14.1.1之前版本存在代码问题漏洞,该漏洞源于存在服务器端请求伪造 (SSRF) 漏洞 0x03 搜索引擎 body"/_nex…

【BUG】已解决:xlrd.biffh.XLRDError: Excel xlsx file; not supported

已解决:xlrd.biffh.XLRDError: Excel xlsx file; not supported 目录 已解决:xlrd.biffh.XLRDError: Excel xlsx file; not supported 【常见模块错误】 错误原因 解决办法: 欢迎来到英杰社区https://bbs.csdn.net/…

MyBatis框架学习笔记(四):动态SQL语句、映射关系和缓存

1 动态 SQL 语句-更复杂的查询业务需求 1.1 动态 SQL-官方文档 (1)文档地址: mybatis – MyBatis 3 | 动态 SQL (2)为什么需要动态 SQL 动态 SQL 是 MyBatis 的强大特性之一 使用 JDBC 或其它类似的框架,根据不同条…

【瑞吉外卖 | day07】移动端菜品展示、购物车、下单

文章目录 瑞吉外卖 — day71. 导入用户地址簿相关功能代码1.1 需求分析1.2 数据模型1.3 代码开发 2. 菜品展示2.1 需求分析2.2 代码开发 3. 购物车3.1 需求分析3.2 数据模型3.3 代码开发 4. 下单4.1 需求分析4.2 数据模型4.3 代码开发 瑞吉外卖 — day7 移动端相关业务功能 —…

华为USG6000V防火墙NAT智能选举

目录 一、拓扑图 二、要求 三、配置思路及方法 要求1:通过多对多的NAT实现上网功能 思路:基础IP地址配置按照之前的进行配置,接着在策略里配置多对多的NAT 要求2:分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的…

uniapp中给data中的变量赋值报错

排查了一上午,原本以为是赋值的这个变量有一个键名是空字符串的问题,后来发现是因为在data中定义变量是写的是{},如果写成null就不会报错了,具体原因不清楚为什么

Spark中的JOIN机制

Spark中的JOIN机制 1、Hash Join概述2、影响JOIN的因素3、Spark中的JOIN机制3.1、Shuffle Hash Join3.2、Broadcast Hash Join3.3、Sort Merge Join3.4、Cartesian Product Join3.5、Broadcast Nested Loop Join4、Spark中的JOIN策略5、Spark JOIN机制与策略总结5.1、Spark中的…