一、背景知识
(一)inpaint概念
-
inpaint是Stable Diffusion仅重绘图像部分的技术,将画面中被手工遮罩的部分重新绘制;
-
Inpaint是一项图片修复技术,大体可以理解为两步:
- 提供一个图像,绘制一个遮罩(mask),告诉软件想要重画哪个区域,并提供图像提示词用于重画;
- “Stable Diffusion”将根据提示词重新绘制遮罩区域。
-
修复实际上只是图像到图像的一个特殊情况。杂色将添加到要上色的图像部分。噪声量同样由降噪强度控制。
(二)图生图(img2img)任务
图生图任务在输入本文的基础上,再输入一张图片,SD模型将根据文本的提示,将输入图片进行重绘以更加符合文本的描述。
- 步骤一: 在输入文本信息进行编码的同时,将原图片通过图像编码器(VAE Encoder) 生成Latent Feature(隐空间特征)作为输入;
- 步骤二: 将上述信息输入到SD模型的 “图像优化模块” 中;
- 步骤三: 将图像优化模块进行优化迭代后的Latent Feature输入到 图像解码器 (VAE Decoder) 中,将Latent Feature重建成像素级图。
二、Stable Diffusion中inpaint的两种实现形式
(一)开源的inpaint模型:这种方式必须基于一个已经训练好的unet模型
- 步骤一: 在输入文本信息进行编码的同时,将被mask后的图像和mask图像分别通过图像编码器(VAE Encoder) 生成对应的隐含层特征;
- 步骤二: 将隐含层中的被mask图像特征、mask图像特征与随机初始化的高斯噪声进行堆叠;
- 步骤三: 将上述信息输入到SD模型的 “图像优化模块” 中;
- 步骤四: 将图像优化模块进行优化迭代后的Latent Feature输入到 图像解码器 (VAE Decoder) 中,将Latent Feature重建成像素级图。
(二)基于base模型inpaint
- 步骤一: 在输入文本信息进行编码的同时,将原图片通过图像编码器(VAE Encoder) 生成隐含层特征作为输入;
- 步骤二: 将上述信息输入到SD模型的 “图像优化模块” 中,这里图像优化模块融入了mask信息;
- 步骤三: 将图像优化模块进行优化迭代后的Latent Feature输入到 图像解码器 (VAE Decoder) 中,将Latent Feature重建成像素级图。
mask信息的融入方式:
对于每个时间步:文章来源:https://www.toymoban.com/news/detail-789341.html
- img_orig:基于原图得到的img_orig
- img:基于上个时间步降噪后得到的img
- 将噪声图中的mask区域和原图中的非mask区域融合,得到新的噪声图,公式呈现如下:
i m g = i m g _ o r i g ∗ m a s k + ( 1 − m a s k ) ∗ i m g img=img\_orig * mask +(1-mask) * img img=img_orig∗mask+(1−mask)∗img - 然后继续去噪声
参考:
AIGC专栏4——Stable Diffusion原理解析-inpaint修复图片为例文章来源地址https://www.toymoban.com/news/detail-789341.html
到了这里,关于Stable Diffusion原理解析-inpaint修复图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!