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

发布时间:2024年01月14日


一、背景知识

(一)inpaint概念

  1. inpaint是Stable Diffusion仅重绘图像部分的技术,将画面中被手工遮罩的部分重新绘制;

  2. Inpaint是一项图片修复技术,大体可以理解为两步:

    • 提供一个图像,绘制一个遮罩(mask),告诉软件想要重画哪个区域,并提供图像提示词用于重画;
    • “Stable Diffusion”将根据提示词重新绘制遮罩区域。
  3. 修复实际上只是图像到图像的一个特殊情况。杂色将添加到要上色的图像部分。噪声量同样由降噪强度控制。

(二)图生图(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修复图片为例

文章来源:https://blog.csdn.net/weixin_47748259/article/details/135513882
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。