字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。

本文主要是介绍字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。

  • 支持将图像生成的分辨率提高至4096×4096,同时将图像生成速度提升1.5至6倍。

  • 支持所有 SD 模型同时也支持 SD 模型的下游模型,比如ControlNet,Inpainting,Playground等。

为什么选择 HiDiffusion

  • HiDiffusion是一种免训练方法,可提高预训练扩散模型的分辨率和速度。

  • 设计为即插即用实施。只需添加一行代码即可将其集成到扩散管道中!

支持的模型

  • Stable Diffusion XL

  • Stable Diffusion XL Turbo

  • Stable Diffusion v2

  • Stable Diffusion v1

支持的任务

  • Text-to-image

  • ControlNet

  • Inpainting

更快更好的图像细节

相关链接

Github:https://github.com/megvii-research/HiDiffusion

论文:https://arxiv.org/pdf/2311.17528

论文阅读

HiDiffusion:解锁更高的分辨率预训练扩散模型中的创造力和效率

摘要

扩散模型已成为高分辨率图像合成的主流方法。但是直接从预处理的扩散模型中生成高解决图像将遇到不合理的对象重复,并指数增加生成时间。

在本文中,我们发现对象重复是由U-NET深块的特征重复引起的。同时,我们将延长的生成时间指定为U-NET的顶部块中的自我发挥冗余。为了解决这些问题,我们提出了一个名为Hidiffusion的无调高分辨率框架。

具体而言,Hidiffusion包含分辨率感知的U-NET(RAU-NET),该分辨率可以动态调整特征映射大小以解决对象重复并参与修改后的移位窗口多头自我注意(MSW-MSA),该窗口使用优化的窗口注意力来减少计算。我们可以将Hidiffusion集成到各种预处理的扩散模型中,以将图像生成分辨率扩展到4096×4096,以1.5-6×以前方法的推理速度。 广泛的实验表明,我们的方法可以解决对象重复和重度计算问题,从而在高分辨率图像合成任务上实现最先进的性能。

方法

U-Net架构。

实现了U-Net作为稳定扩散神经主干,它包含几个Down Blocks, Up Blocks和一个Mid 块,如下图a所示。Mid Block在我们的方法中保持不变。因此,为了简单起见,我们省略了它。每个向下块和向上块可以分别写成:

vanilla 稳定扩散的U-Net架构和我们提出的HiDiffusion RAU-Net架构在1024×1024分辨率和SD 1.5上的比较。

冻结所有块中的参数。主要区别在于蓝色块(不同) 在特征图的维度中)和橙色块(我们提出的RAD和RAU)模块被合并到Block 1中)。

实验

我们将我们的方法纳入sd1.5,sd2.1,SDXL Turbo和SDXL来评估我们方法的有效性。sd1.5及 SD 2.1能够生成512×512分辨率的图像。

我们整合HiDiffusion将它们缩放到1024×1024和2048×2048。我们使用HiDiffusion将SDXL Turbo的生成分辨率缩放到1024×1024。

上图为各种扩散模型、分辨率和比率方面选择HiDiffusion示例。HiDiffusion使预训练的扩散模型能够产生更高的分辨率超过训练图像大小的图像,无需进一步的训练或微调可以有效加速推理。

基于sd1.5的不同推理步骤的特征图可视化。 图像分辨率为1024×1024,采用50步DDIM。

基于sd1.5的RAU-Net和MSW-MSA的影响。分辨率为1024×1024。

基于sd1.5的1024×1024分辨率SDEdit任务。

基于sd1.5的ControlNet任务1024×1024分辨率。

基于sd1.5的不同扩散加速方法的定性比较。分辨率是1024×1024。基线为RAU-Net的sd1.5。

结论

在本文中,我们提出了一个名为HiDiffusion的免调优框架,用于更高分辨率的图像生成。HiDiffusion包括分辨率感知U-Net (RAUNet),使更高分辨率的生成成为可能,以及改进的移位窗口多头部自注意(MSW-MSA),使更高分辨率的生成更有效。

根据经验HiDiffusion可以纳入sd1.5,sd2.1、SDXL和SDXL Turbo,并对它们进行缩放生成1024×1024,2048×2048甚至4096×4096分辨率图像,同时显著降低HiDiffusion推理时间。

与以往的高分辨率图像生成方法相比,我们可以在更短的推理时间内生成细节更丰富的图像。我们希望我们的工作可以为未来关于扩散模型可扩展性的工作带来启发。

这篇关于字节和旷视提出HiDiffusion,无需训练,只需要一行代码就可以提高 SD 生成图像的清晰度和生成速度。代码已开源。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968748

相关文章

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN