浅析扩散模型与图像生成【应用篇】(十二)——DiffI2I

news2024/11/16 13:29:26

12. DiffI2I: Efficient Diffusion Model for Image-to-Image Translation

  该文提出一种基于扩散模型的图像到图像的转换算法(DiffI2I),可用于图像修复、超分辨率提升、图像去模糊、语义分割等任务。作者指出一般的扩散模型,虽然在图像生成任务中表现很好,但是在图像转换任务表现不佳,因为许多图像转换任务都包含一个约束条件,要求生成结果要能与GroundTruth保持一致,而图像生成任务中并没有此类要求。为此,作者提出一个图像转换先验信息表征(I2I Prior Representation, IPR)的概念,用于引导一个动态的I2IFormer模型(DI2Iformer)来完成图像转换。此外,由于很多扩散模型是直接对图像进行扩散和去噪的,这就导致模型的维度很大,计算量很高,这也导致很多扩散模型不能处理高分辨率的图像,且生成速度很慢。作者采用类似LDM的思想,不对图像直接进行扩散和生成,而是对压缩过的特征信息IPR进行扩散和生成,这就极大的提升了图像转换的效率。在多个任务中的转换效果和效率与其他算法的对比如下图所示
在这里插入图片描述
  那么作者是怎么实现这样一个又好又快的方法的呢?在DiffI2I中包含三个关键的部分:1. 紧凑的图像转换先验提取网络(CPEN)用于根据输入图像和GT生成对应的IPR;2.动态图像转换Former(DI2Iformer)在IPR的引导下根据输入图像生成输出图像;3. 扩散和去噪网络,用于根据输入的IPR Z Z Z生成估计的 Z ^ \hat{Z} Z^。整个算法的流程如下图所示
在这里插入图片描述
  整个DiffI2I的训练过程分成两个阶段,第一阶段是对CPEN和DI2Iformer进行预训练,第二阶段是对去噪模型以及DI2Iformer进行联合训练。首先看第一阶段,将输入图像和对应的GT级联起来,经过PixelUnshuffle算子进行下采样后,输入到CPEN网络中提取IPR 。CPEN网络结构如图中黄色方框内所示,主要由卷积层、残差块、平均池化层、线性层和激活层等结构组成,输出的是一个经过紧凑的带有先验信息的特征图 Z Z Z。然后,在 Z Z Z的引导下,DI2Iformer根据输入图像 I i n p u t I_{input} Iinput输出目标图像 I o u t p u t I_{output} Ioutput。DI2Iformer是一个由多个动态Transformer块组成的UNet结构网络,如图中灰色的方框中所示。每个动态Transformer块由动态注意力模块(DA)和动态前向传播网络(DFFN)构成,DA和DFFN模块的结构分别如图中绿色和蓝色方框内所示。对于DA而言,输入特征 F F F经过规则化层, 1 ∗ 1 1*1 11卷积和 3 ∗ 3 3*3 33的深度维度卷积得到 F ′ F' F F ′ = W d W c Norm ⁡ ( F ) \mathbf{F}^{\prime}=W_{d} W_{c} \operatorname{Norm}(\mathbf{F}) F=WdWcNorm(F)然后经过一个SimpleGate (SG)激活操作得到 F S G ′ F'_{SG} FSG F S G ′ = S G ( F 1 ′ , F 2 ′ ) = F 1 ′ ⊙ F 2 ′ \mathbf{F}_{S G}^{\prime}=\mathrm{SG}\left(\mathbf{F}_{1}^{\prime}, \mathbf{F}_{2}^{\prime}\right)=\mathbf{F}_{1}^{\prime} \odot \mathbf{F}_{2}^{\prime} FSG=SG(F1,F2)=F1F2采用通道注意力机制对 F S G ′ F'_{SG} FSG的各个通道进行加权求和得到 F C A ′ F'_{CA} FCA F C A ′ = F S G ′ ⊙ ϕ ( F S G ′ ) \mathbf{F}_{C A}^{\prime}=\mathbf{F}_{S G}^{\prime} \odot \phi\left(\mathbf{F}_{S G}^{\prime}\right) FCA=FSGϕ(FSG)其中 ϕ \phi ϕ表示全局平均池化操作,最后 F C A ′ F'_{CA} FCA再次经过 3 ∗ 3 3*3 33的深度维度卷积,并与经过线性映射层的先验信息 Z Z Z和最初输入的特征 F F F求和,得到DA模块的输出 F ^ \hat{F} F^ F ^ = W d F C A ′ + W l Z + F \hat{\mathbf{F}}=W_{d} \mathbf{F}_{C A}^{\prime}+W_{l} \mathbf{Z}+\mathbf{F} F^=WdFCA+WlZ+FDFFN模块的结构与DA模块非常类似,只是缺少计算全局平均池化和进行通道注意力加权的部分,计算方式如下 F ^ = W d 2 S G ( W d 1 W c Norm ⁡ ( F ) ) + W l Z + F \hat{\mathbf{F}}=W_{d}^{2} \mathrm{SG}\left(W_{d}^{1} W_{c} \operatorname{Norm}(\mathbf{F})\right)+W_{l} \mathbf{Z}+\mathbf{F} F^=Wd2SG(Wd1WcNorm(F))+WlZ+F关于DA模块和DFFN模块的输出是怎么进行融合的,原文中我没看到,但是图中可以看出来动态Transformer块的输入和输出维度不变,那么大概率是做了一个相加的操作。经过多个级联的动态Transformer块处理后,输出第一阶段的生成结果 I o u t p u t I_{output} Ioutput,用于计算损失,对CPEN和DI2Iforme进行预训练。
  完成预训练后,我们进入第二阶段对去噪模型以及DI2Iformer进行联合训练。首先,在扩散阶段输入图像和GT级联起来,并经过PixelUnshuffle算子进行下采样后,使用预训练得到的CPEN模块进行处理得到IPR Z Z Z,然后经过一系列的扩散过程得到噪声 Z T Z_{T} ZT,接着以 Z T Z_{T} ZT作为起点进行反向去噪,去噪网络 ϵ θ ( Concat ⁡ ( Z ^ t , t , D ) ) \epsilon_{\theta}\left(\operatorname{Concat}\left(\hat{\mathbf{Z}}_{t}, t, \mathbf{D}\right)\right) ϵθ(Concat(Z^t,t,D))包含三个输入, Z ^ t \hat{\mathbf{Z}}_{t} Z^t是前一时刻 t t t的输出结果,初始时刻 Z ^ T = Z T \hat{\mathbf{Z}}_{T}=\mathbf{Z}_{T} Z^T=ZT t t t表示前一时刻, D \mathbf{D} D表示IPR。要注意的是,这里的IPR也就是 D \mathbf{D} D是用一个全新的CPEN模型仅对输入图像进行处理得到的,如下 D = C P E N S 2 (  PixelUnshuffle  ( I input  ) ) \mathbf{D}=\mathrm{CPEN}_{\mathrm{S} 2}\left(\text { PixelUnshuffle }\left(I_{\text {input }}\right)\right) D=CPENS2( PixelUnshuffle (Iinput ))最后,经过生成过程得到的 Z ^ \hat{\mathbf{Z}} Z^将于输入图像 I i n p u t I_{input} Iinput一起输入到DI2Iformer中得到输出结果。 C P E N S 2 \mathrm{CPEN}_{\mathrm{S} 2} CPENS2,去噪模型 ϵ θ \epsilon_{\theta} ϵθ和DI2Iformer一起进行训练,损失函数如下 L diff  = 1 4 C ′ ∑ i = 1 4 C ′ ∣ Z ^ ( i ) − Z ( i ) ∣ , L all  = L task  + L diff  \mathcal{L}_{\text {diff }}=\frac{1}{4 C^{\prime}} \sum_{i=1}^{4 C^{\prime}}|\hat{\mathbf{Z}}(i)-\mathbf{Z}(i)|, \mathcal{L}_{\text {all }}=\mathcal{L}_{\text {task }}+\mathcal{L}_{\text {diff }} Ldiff =4C1i=14CZ^(i)Z(i),Lall =Ltask +Ldiff 其中 L task  \mathcal{L}_{\text {task }} Ltask 与具体任务有关,比如去噪任务就是用GT和输出结果之间的L1距离,语义分割任务就用交叉熵损失。
  在预测时,输入图像经过 C P E N S 2 \mathrm{CPEN}_{\mathrm{S} 2} CPENS2处理得到 D \mathbf{D} D,然后与采样得到的高斯噪声 Z ^ T \hat{\mathbf{Z}}_{T} Z^T一起经过反向去噪过程得到IPR Z ^ \hat{\mathbf{Z}} Z^,将其与输入图像一起输入到DI2Iformer模块中得到预测结果。训练和预测过程如下
在这里插入图片描述
在这里插入图片描述
  由于扩散和生成阶段是对紧凑的先验信息IPR进行处理的,因此扩散和生成阶段计算复杂度较小,只需要迭代4次( T = 4 T=4 T=4)就可以生成较好的结果。在图像修复任务中与其他方法的结果对比如下
在这里插入图片描述
运动去模糊任务
在这里插入图片描述
超分辨率提升任务
在这里插入图片描述

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

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

相关文章

C++STL学习之unordered_map与unordered_set(底层Hash)

前言:我们前面已经学习论map和set,现在又冒出来一个unordered_map和unordered_set,这两个有啥差别吗?前面我们已经说过,map和set的底层是红黑树,那unordered_map和unordered_set的底层是什么呢?…

基于nodejs+vue“共享书角”图书借还管理系统python-flask-django-php

同时还能为借阅者提供一个方便实用的“共享书角”图书借还管理系统,使得借阅者能够及时地找到合适自己的图书借还信息。管理员在使用本系统时,可以通过后台管理员界面管理借阅者的信息,也可以发布系统公告,让借阅者及时了解图书借…

免杀对抗-C2远控篇CC++SC转换格式UUID标识MAC物理IPV4地址减少熵值

参考文章: https://github.com/INotGreen/Bypass-AMSI https://mp.weixin.qq.com/s/oJ8eHdX8HGuk6dZv0kmFxg https://kyxiaxiang.github.io/2022/12/14/AMSIandEtw https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell 文章参考: https://www.…

Go——结构体

Go语言中没有类的概念,也不支持类的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 一. 类型别名和自定义类型 1.1 自定义类型 在Go语言中有一些基本的数据类型,如string,整型,…

YOLOv9改进策略:block优化 | SEAM提升小目标遮挡物性能

💡💡💡本文改进内容:SEAM提升小目标遮挡物性能,在多个数据集得到很好的验证 改进结构图如下: YOLOv9魔术师专栏 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️…

docker学习笔记 四-----docker基本使用方法

基础命令奉上: 1、docker命令查询方法 docker --help 获取docker命令帮助 docker search --help 查询docker 子命令search的帮助 2、查询镜像 查询镜像 docker search 192.168.206.100:5000/mysql 查询指定服务器指定镜像 docker search mysql …

Qt Design Studio各个组件怎么用?【长期更新】

写在前面:本文长期更新,建议点赞/收藏/关注~ 在Qt Design Studio中,组件类别有: 每一种,都有其特定的用途和适用场景: 1.My Components 使用时机:当你需要重用自定义的设计元素或者特殊功能…

【wallabag】数字化阅读时代的救星——wallabag来了!

为什么需要 ✨在海量信息涌动的时代,一篇好文章却总是在最不恰当的时候出现。想要留住精彩内容,却苦于当下分身乏术?墙裂推荐你试试wallabag,这款智能稍后阅读神器,让你随时随地畅享深度阅读的乐趣! Walla…

2024第六届环境科学与可再生能源国际会议能源 (ESRE 2024) 即将召开!

2024第六届环境科学与可再生能源国际会议 能源 (ESRE 2024) 即将举行 2024 年 6 月 28 日至 30 日在德国法兰克福举行。ESRE 2024 年 旨在为研究人员、从业人员和专业人士提供一个论坛 从工业界、学术界和政府到研究和 发展,环境科学领域的专…

Altair(澳汰尔) Radioss® 评估和优化动态载荷下的高度非线性问题

Altair(澳汰尔) Radioss 评估和优化动态载荷下的高度非线性问题 Radioss 是一款超前的分析解决方案,可评估和优化动态载荷下的高度非线性问题。它广泛应用于全球各行各业,能有效提高复杂设计的耐撞性、安全性和可制造性。 30 多…

VRAY渲染设置大神参数(建议收藏)

3dmax效果图云渲染平台——渲染100以3ds Max 2024、VR 6.2、CR 11.2等最新版本为基础,兼容fp、acescg等常用插件,同时LUT滤镜等参数也得到了同步支持。注册填邀请码【7788】可领30元礼包和免费渲染券哦~ 公用:输出大小:一般小图50…

数据结构-----栈、顺序栈、链栈

在软件应用中,栈这种后进先出数据结构的应用是非常普遍的。比如用浏览器上网时,不管什么浏览器都有一个“后退”键,你点击后可以按访问顺序的逆序加载浏览过的网页。即使从一个网页开始,连续点了几十个链接跳转,你点“…

纳斯达克大屏媒体尺寸与投放费用:一次投放需要多少钱?

纳斯达克大屏媒体尺寸与投放费用:一次投放需要多少钱? 1. 纳斯达克图片要求 1.1 像素要求 高度:2336 像素宽度:1832 像素 1.2 分辨率要求 像素比率:1.0 px 72 dpi 1.3 文件格式要求 静态图片格式:.…

vue2 export default写法,computed、methods的使用

<template><div><h2>{{nameAll}}</h2><h2>{{method}}</h2><h2>{{tt()}}</h2><h2>{{firstName}}</h2><h2>更新后赋值数据&#xff1a;{{lastName}}</h2><h2>赋值数据:{{writeValue}}</h2>…

第十三届蓝桥杯省赛C++ A组 Java A组/研究生组《推导部分和》(C++)

【题目描述】 【输入格式】 【输出格式】 【数据范围】 【输入样例】 5 3 3 1 5 15 4 5 9 2 3 5 1 5 1 3 1 2 【输出样例】 15 6 UNKNOWN 【思路】 题解来源&#xff1a;AcWing 4651. $\Huge\color{gold}{推导部分和}$ - AcWing 【代码】 #include<bits/stdc.h> #define…

基于ssm的线上旅行信息管理系统论文

摘 要 随着旅游业的迅速发展&#xff0c;传统的旅行信息查询管理方式&#xff0c;已经无法满足用户需求&#xff0c;因此&#xff0c;结合计算机技术的优势和普及&#xff0c;特开发了本线上旅行信息管理系统。 本论文首先对线上旅行信息管理系统进行需求分析&#xff0c;从系…

git提交和回退

目录 一. git 提交二. git commit 后准备回退&#xff0c;尚未 git push三. git add 添加多余文件 撤销操作四. 更改 Git commit 的默认编辑器五. 撤销某个commit的变更六. 回退到之前的commit状态总结&#xff1a; 一. git 提交 git pull # 更新代码 git status # 查看代码状…

2G-3G-4G-5G 语音方案

1.2G、3G时代&#xff0c;语音业务采用CS&#xff08;Circuited Switched&#xff0c;电路交换&#xff09;技术&#xff0c;即手机在通话前需在网络中建立一条独占资源的线路&#xff0c;直到通话结束才拆除。这种古老的技术存在耗资源、组网复杂、效率低等缺点。 2. 进入4…

Codeup_1132:问题 A: 最长公共子序列

目录 Problem DescriptionInputOutputSample InputSample Output原题链接解题思路代码实现&#xff08;C&#xff09; Problem Description 给你一个序列X和另一个序列Z&#xff0c;当Z中的所有元素都在X中存在&#xff0c;并且在X中的下标顺序是严格递增的&#xff0c;那么就…

如何使用CHAT-AI?

伴随着CHAT-GPT的出现&#xff0c;人们都喜欢上了CHAT-AI。嗯&#xff1f;你还不会用&#xff1f;&#xff01; 教程来喽&#xff01; 首先点这里的 … 点击扩展 接着选择“管理扩展” 点击之后搜索“wetab” 最后你需要注册一个号&#xff0c;然后就可以使用CHAT-AI啦&#x…