使用StableDiffusion进行图片Inpainting原理

news2025/5/25 21:45:19

在这里插入图片描述

  • 论文链接:RePaint: Inpainting using Denoising Diffusion Probabilistic Models
  • 代码链接:RePaint

Inpainting任务是指在任意一个二进制的掩码指定的图片区域上重新生成新的内容,且新生成的内容需要和周围内容保持协调。当前SOTA模型用单一类型的 mask 训练限制了模型的泛化能力,此外 pixel-wise 和 perceptual loss 会导致生成模型朝着纹理填充而不是语义修复方向更新。
本文提出了基于去噪扩散概率模型的图像修复方法Repaint,该方法甚至对于极端的 mask 情况(如mask 面积很大,几乎遮挡了整幅图像)都适用。本文利用一个预训练的 Unconditional DDPM 作为先验模型。为了调节生成过程,我们使用给定的图像信息仅对未屏蔽区域进行采样来改变反向扩散迭代。由于该技术不修改原始 DDPM 网络本身,因此该模型可以为任何修复形式生成高质量的图像。

1. 预备知识

本章节将介绍几个后面要用到的DDPM的结论,关于这些结论是如何得到的以及DDPM的相关知识可以移步至 通俗理解DDPM到Stable Diffusion原理。

扩散的前向过程:
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) (1) q(x_t|x_{t-1})=\mathcal{N}(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_t\text{I})\quad\text{(1)} q(xtxt1)=N(xt;1βt xt1,βtI)(1)
进一步可以直接从 x 0 x_0 x0推到出加噪后的 x t x_t xt:
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) ( 2 ) q(x_t|x_0)=\mathcal{N}(x_t;\sqrt{\bar{\alpha}_t}x_0,(1-\bar{\alpha}_t)\mathbf{I})\quad(2) q(xtx0)=N(xt;αˉt x0,(1αˉt)I)(2)
反向降噪过程:
p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) ( 3 ) p_\theta(x_{t-1}|x_t)=\mathcal{N}(x_{t-1};\mu_\theta(x_t,t),\Sigma_\theta(x_t,t))\quad(3) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))(3)
降噪过程就是通过神经网络来预测高斯分布的参数 μ θ ( x t , t ) \mu_\theta(x_t,t) μθ(xt,t) Σ θ ( x t , t ) ) \Sigma_\theta(x_t,t)) Σθ(xt,t))

2. 方法

使用 x x x 表示 ground truth 图像,那么 m ⊙ x m\odot x mx 表示图像中被mask掉的未知区域, ( 1 − m ) ⊙ x (1-m)\odot x (1m)x 表示剩余已知区域。那么根据(2)式的加噪过程,可以在任意时间点采样得到 t t t 时刻的已知区域 m ⊙ x t m\odot x_t mxt,如下图所示:
在这里插入图片描述
即:
x t − 1 known ∼ N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) x_{t-1}^\text{known}\sim\mathcal{N}(\sqrt{\bar{\alpha}_t}x_0,(1-\bar{\alpha}_t)\mathbf{I}) xt1knownN(αˉt x0,(1αˉt)I)
根据(3)式的降噪过程生成 t t t 时刻的未知区域 ( 1 − m ) ⊙ x t (1-m)\odot x_t (1m)xt,如下图所示:
在这里插入图片描述
即:
x t − 1 unknown ∼ N ( μ θ ( x t , t ) , Σ θ ( x t , t ) ) x_{t-1}^\text{unknown}\sim\mathcal{N}(\mu_\theta(x_t,t),\Sigma_\theta(x_t,t)) xt1unknownN(μθ(xt,t),Σθ(xt,t))
将以上两部分的结果相加即可得到 t t t 时刻的修复结果,如下图所示:
在这里插入图片描述
即:
x t − 1 = m ⊙ x t − 1 known + ( 1 − m ) ⊙ x t − 1 unknown x_{t-1}=m\odot x_{t-1}^\text{known}+(1-m)\odot x_{t-1}^\text{unknown} xt1=mxt1known+(1m)xt1unknown
然后不断迭代下去,直到得到 x 0 x_0 x0.

Resampling技巧

当直接使用上述的方式进行Inpainting时,可以发现结果仅仅是修复的内容与已知区域匹配,但是语义并不正确。如下图所示,在 n = 1 n=1 n=1时,修复的区域是比较粗糙的纹理和够的毛相匹配,但是语义并不正确。
在这里插入图片描述
造成上述问题的原因是模型在用DDPM输出的结果和已知区域的采样结果从 x t x_t xt预测 x t − 1 x_{t-1} xt1时,使用(2)式对已知区域进行采样时并没有考虑到生成的部分。尽管模型尝试在降噪的每一步来协调图片,但是由于在每一步中都有上述相同问题,因此从来没有完全收敛。此外,在降噪的每一步中,由于方差策略 β t \beta_t βt的减小,图片的改变也随着减小,因此模型在后续迭代中无法纠正错误。

针对上述分析的问题,作者提出 resampliing 的方法,即对模型的输出 x t x_t xt 重新根据(1)式将其扩散回到 x t x_t xt,并把重采样操作的次数称为 jump length,用 j j j 表示, j = 1 j=1 j=1 表示不进行重采样。

如下所示,展示了Repaint的伪代码
在这里插入图片描述

3. 实验结果

(1)定性结果
在这里插入图片描述
(2)定性结果2
在这里插入图片描述
(3)定量结果
在这里插入图片描述
(3)降噪步数 T T T 和resampling步数 r r r 的关系
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

天文与计算机:技术的星辰大海

天文与计算机:技术的星辰大海 一、引言 在人类的历史长河中,天文学与计算机技术这两个领域似乎相隔甚远,然而在科技的推动下,它们却逐渐走到了一起,为人类对宇宙的探索开辟了新的道路。天文观测的复杂度与数据量随着…

C++初阶——类和对象

呀哈喽,我是结衣 C入门之后,我们就进入了C的初阶的学习了,在了解类和对象之前,我们还是先了解,面向过程和面向对象的初步认识。 在本篇博客中,我们要讲的内容有 1.面向过程和面向对象初步认识 2.类的引入 3…

数据流图_DFD图_精简易上手

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输人移动到输出的过程中所经受的变换。 首先给出一个数据流图样例 基本的四种图形 直角矩形:代表源点或终点,一般来说,是人,如例图的仓库管理员和采购员圆形(也可以画成圆角矩形):是处理,一般来说,是动作,是动词名词的形式…

攻防世界——game 游戏

下载下来是一个exe文件,可以用IDA打开 我们先运行一下 这是属于第二种类型,完成一个操作后给你flag 这种题我更倾向于动调直接得到flag 我们查壳 没有保护壳,直接32打开 进入字符串界面,找到显示的那部分 int __cdecl main_0(…

传感器原理及工程应用(2)---传感器

文章目录 1. 传感器概述1.1 传感器的组成1.2 传感器的分类 2. 传感器的静态特性2.1 灵敏度2.2 线性度2.3 迟滞2.4 重复性2.5 漂移 1. 传感器概述 1.1 传感器的组成 1. 传感器能感受(或响应)规定的被测量并按照一定的规律转换成可用输出信号的器件或装置…

B041-SSM集成_拦截器

目录 SSM整合简介整合步骤先准备spring环境核心配置文件 Spring整合Mybatis准备数据库和表Spring管理数据库连接属性文件Spring管理连接池实体类、mapper接口和映射文件Spring管理SqlSessionFactorySpring管理Mapper接口Spring管理Servive层 Spring整合SpringMVC准备web.xml准备…

PromptNER: Prompt Locating and Typing for Named Entity Recognition

原文链接: https://aclanthology.org/2023.acl-long.698.pdf ACL 2023 介绍 问题 目前将prompt方法应用在ner中主要有两种方法:对枚举的span类型进行预测,或者通过构建特殊的prompt来对实体进行定位。但作者认为这些方法存在以下问题&#xf…

最小二乘法简介

最小二乘法简介 1、背景描述2、最小二乘法2.1、最小二乘准则2.2、最小二乘法 3、最小二乘法与线性回归3.1、最小二乘法与线性回归3.2、最小二乘法与最大似然估计 4、正态分布(高斯分布) 1、背景描述 在工程应用中,我们通常会用一组观测数据去…

(Mac上)使用Python进行matplotlib 画图时,中文显示不出来

【问题描述】 ①报错确缺失字体: ②使用matplotlib画图,中文字体显示不出来 【问题思考】 在网上搜了好多,关于使用python进行matplotlib画图字体显示不出来的,但是我试用了下,对我来说都没有。有些仅使用于windows系…

中心性算法归纳

中心性算法不仅是在我所学习的计算机网络当中起很重要的作用,在交通网络、社交网络、信息网络、神经网络当中也有很多的应用例子。今天我在这里总结一下场景的几种中心性算法。 参考文献 Python NetworkX库 偏心中心性(Eccentricity Centrality&#x…

在Linux下探索MinIO存储服务如何远程上传文件

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 创建Buckets和Access Keys二. Linux 安装Cpolar三. 创建连接MinIO服务公网地…

python时间处理方法和模块

在 Python 中,有一些内置的模块和库,可以帮助我们处理日期和时间的表示、计算和转换。 1. 时间模块(time) Python 的 time 模块提供了一系列函数来处理时间相关的操作。通过这个模块,可以获取当前时间、睡眠指定时间…

BIT-6-指针(C语言初阶学习)

1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 1. 指针是什么? 指针是什么? 指针理解的2个要点: 指针是内存中一个最小单元的编号,也就是地址平时口语中说的指针,通常…

向量投影:如何将一个向量投影到矩阵的行向量生成子空间?

向量投影:如何将一个向量投影到矩阵的行向量生成子空间? 前言 本问题是在学习Rosen梯度投影优化方法的时候遇到的问题,主要是对于正交投影矩阵(NT(NNT)-1N)的不理解,因此经过查阅资料,学习了关于向量投影的知识&…

MySQL——复合查询

目录 一.基本查询回顾 二. 多表查询 三.自连接 四.子查询 1.单行子查询 2.多行子查询 3.多列子查询 4.在from子句中使用子查询 5.合并查询 一.基本查询回顾 准备数据库: 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为…

欠采样对二维相位展开的影响

1.前言 如前所述,相位展开器通过计算两个连续样本之间的差来检测图像中包裹的存在。如果这个差值大于π或小于-π,则相位展开器认为在这个位置存在包裹。这可能是真正的相位包络,也可能是由噪声或采样不足引起的伪包络。 对欠采样的相位图像…

Flink面试题与详解

Flink面试题目合集 从牛客网上找到的一些面试题,如果还有其他的,欢迎大家补充。 1、能否详细描述下Apache Flink的架构组件和其工作原理?请介绍一下Flink on YARN部署模式的工作原理。 官网图: 由两个部分组成,JM&am…

使用Velero备份、恢复k8s集群上的资源

一、Velero简介 Velero提供备份和恢复 Kubernetes 集群资源和持久卷的工具。 Velero功能: 对群集进行备份,并在丢失时进行还原。将集群资源迁移到其他集群。 Velero 包括: 在群集上运行的服务器在本地运行的命令行客户端 开源地址&…

CAD制图

CAD制图 二维到三维 文章目录 CAD制图前言一、CAD制图二、机械设计三、二维图纸四、三维图纸总结前言 CAD制图可以提高设计效率和准确性,并方便文档的存档和交流,是现代工程设计中不可或缺的一部分。 一、CAD制图 CAD(Computer-Aided Design)是利用计算机技术辅助进行设计…

DoIP学习笔记系列:(七)doipclient测试工具安装使用说明

文章目录 优点doipclient简介安装部署环境准备安装doipclient安装python-uds测试传送门 DoIP学习笔记系列:导航篇 在DoIP的开发测试过程中,一般是用CANoe+VN5620+cdd的方式测试,此种方式对熟悉CANoe使用的小伙伴非常友好,调试方便,稳定性也不错,那有没有其他的方式呢?比…