草庐IT

【达摩院OpenVI】AIGC技术在图像超分上的创新应用

AI记忆 2023-05-18 原文

团队模型、论文、博文、直播合集,点击此处浏览

一、背景

近10年来,深度学习技术得到了长足进步,在图像增强领域取得了显著的成果,尤其是以GAN为代表的生成式模型在图像复原、老片修复,图像超分辨率等方面大放异彩。图像超分辨率是视频增强方面,用于提升画质的典型应用。生成对抗网络GAN使得在图像分辨率增加的同时,保持细节特征,补充生成真实的纹理,其中应用广泛的工作是Real-ESRGAN。

不过随着扩散模型DiffusionModel在理论和实践中的有效性得到越来越多的验证,在大数据、大模型的加持下,多模态学习发展如火如荼,促成了当今AIGC的火爆。同时以此为基础的视觉增强底层任务,也带来了一些突破性成果。今天重点给大家展示下,扩散模型在图像超分辨率这方面的新的应用,展现出其超过GAN的生成多样性和真实性。看完后,你会发现,还在用GAN做图像超分辨率吗?已经OUT了,快来试试DiffusionModel吧!

二、方法

1.)经典算法Real-ESRGAN

先来看下GAN来应用到图像超分辨率的经典方法Real-ESRGAN,如图1基本流程。

图1: 来源Real-ESRGAN: Training Real-World Blind Super-Resolutionwith Pure Synthetic Data

生成网络是ESRGAN的生成网络,保持不变,首先用L1 loss,训练以PSRN为导向的网络,获得的模型称为Real-ESRNet,然后Real-ESRNet的网络参数进行网络初始化,同时使用 L1 loss、perceptual loss、 GAN loss损失函数,训练最终的网络Real-ESRGAN。

训练数据可以自己收集,使用退化方法,构建样本对。细节的生成能力依托GAN的作用,GAN的生成能力的发展进化已经经历了多年,在此不做赘述,但从实际应用中看,对于图片生成的真实性和多样性仍然有待提升。

2.)扩散模型简介

扩散模型(DiffusionModel)近几年开始受到广泛的关注,下面可以通俗地以denoising diffusion probabilistic models(DDPM)为基础的扩散模型的基本原理。

图2: 来源Score-Based Generative Modeling through StochasticDifferential Equations

扩散模型的前向过程:不断给图片加噪声的过程。

扩散模型的逆向过程:一步步去除图片噪声的过程。

图3:来源 Denoising Diffusion ProbabilisticModels

DiffusionMolde的训练大致可以概括为,通过构建一个Unet网络,预测每一步加噪声的强度,通过理论推导,可以得知这个训练只需要使用L2loss监督。训练完成后,就可以从高斯噪声开始,根据逆向过程的采样方式,恢复出清晰图像。

近两年,越来越多的工作验证了扩散模型在真实性和多样性的生成能力上超过GAN。很快扩散模型被应用到各个领域。

3.)扩散模型在图像超分上的应用

下面重点看下在图像超分辨率方向上扩散模型的应用。

a.)SR3 (Image Super-Resolution via Iterative Refinement )

这个是最早应用扩散模型做图像超分辨率任务的方案。该方法的思路很简单,直接将低分辨率图像LR简单的上采样后作为条件一起输入Unet。这样扩散模型的生成结果受LR引导,得到对应的高分辨率图像SR。

图4: 来源Image Super-Resolution via Iterative Refinement

b.)LatentDiffusion(High-Resolution Image Synthesis with Latent DiffusionModels )

接下来重点介绍这个工作,LatentDiffusion借助AutoEncode将扩散过程压缩到潜空间,减少了计算量,增加了扩散模型生成的鲁棒性。潜空间上的对生成效果的rate-distortion trade-off如下图示意:

图5:来源 High-ResolutionImage Synthesis with Latent Diffusion Models

LatentDiffusion也就是如今大火的StableDiffusion的基本方案,技术框架大致如下图所示:

图6:来源 High-ResolutionImage Synthesis with Latent Diffusion Models

基于latentdiffusion model的图像超分辨率方案,我们称做LDM-SR,和SR3的做法相似,这里直接将LR和Latenspace 噪声合并一起,输入到Unet,后面通过Decoder4倍上采样,生成对应的超分辨率图像。相比SR3 在生成结果上取得更低的FID值,并且视觉效果上更自然细腻。

图7:来源 High-ResolutionImage Synthesis with Latent Diffusion Models

总体来说,基于扩散模型的超分辨率方案相比GAN,取得了长足的进步,在细节和纹理生成能力上上了一个大台阶。

4.)ours方法

达摩院开放视觉团队,在图像超分辨率技术上演进上,应用最新的Diffusion Model,搜集了大量几十万张高清图像数据集,训练了新的基于扩散模型的图像超分辨率模型,已经上线了,可以来试试效果吧。

体验地址:

生成式超分服务官网

达摩院视觉开放平台

下面给出几组,基于LDM-SR和Real-ESRGAN的效果对比,直观感受下吧!

原图

Real-ESRGANx4

LDM_SR x4

原图

Real-ESRGANx4

LDM_SR x4

三、总结与展望

LDM是Stable V1的基本构成,最新的工作StableDiffusion V2 ,将多模态技术引入了图像超分辨率方案中。文本信息的引导,使得扩散模型 “更懂得要生成的目标细节特征”。基于多模态的超分辨率技术方案也即将上线,继续关注达摩院最新技术发布!

有关【达摩院OpenVI】AIGC技术在图像超分上的创新应用的更多相关文章

  1. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  2. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  3. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  4. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  5. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  6. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  7. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  8. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  9. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  10. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

随机推荐