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

Stable Diffusion原理解析-inpaint修复图片

文章目录

一、背景知识 (一)inpaint概念 (二)图生图(img2img)任务 二、Stable Diffusion中inpaint的两种实现形式 (一)开源的inpaint模型:这种方式必须基于一个已经训练好的unet模型 (二)基于base模型inpaint

一、背景知识

(一)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信息的融入方式:
对于每个时间步:

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修复图片为例

更新时间 2024-03-05