文章目录
一、背景知识 (一)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信息的融入方式:
对于每个时间步:
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修复图片为例