8天狂收6100颗星,可商用!东京工业、麻省理工等开源Stream Diffusion

加州大学伯克利分校、东洋大学、东京工业大学、麻省理工学院和筑波大学等研究人员,联合开源了一款创新性实时交互图像生成框架——Stream Diffusion。

Stream Diffusion的技术创新点在于,将传统的顺序去噪变成流批处理去噪,消除了漫长的等待、交互生成方式,实现了流畅且吞吐量超高的图像生成方法

同时引入了“残差无分类器指导”方法,进一步提升了流批处理的效率和图像质量。

根据Stream Diffusion在Github上的项目提交历史记录显示,仅用了8天的时间就收到6100颗星成为霸榜开源产品,其性能和欢迎程度可见一斑。允许开发者商用。

开源地址:https://github.com/cumulo-autumn/StreamDiffusion

论文地址:https://arxiv.org/abs/2312.12491

Demo展示:https://github.com/cumulo-autumn/StreamDiffusion/blob/main/assets/demo_03.gif

图片

目前,扩散模型在图像生成方面获得了广泛应用并成功实现商业化落地,例如,该领域的标杆产品Midjourney。

但在实时交互方面表现不佳需要漫长的等待,尤其是涉及连续输入的场景中尤为明显。

为了解决这些难题,研究人员设计了一种新颖的输出、输入方法,就是将原始的顺序去噪转化为批处理去噪过程。

简单来说,Stream Diffusion相当于大模型领域的机械化流水作业,将单一、繁琐的去噪、推理流程改成批量处理。

流批式去噪方法

流批式去噪是Stream Diffusion的核心功能之一,也是实现实时交互的关键所在。

传统的交互式扩散模型都是顺序执行:一次输入一张图片,走完全部的去噪步骤后,再输出一张结果图像。然后不断重复这个过程,生成完成更多的图像处理。

这样就造成一个很大的问题速度和质量难以同时得到保证。为了生成高质量的图像,需要设置较多的去噪步骤,导致生成图像的效率较慢,无法做到“鱼与熊掌”兼得。

流批式去噪的核心思想是:当输入第一张图像开始去噪步时,不必等待它完成,就可以接收第二张图像,以实现批量方式处理。

这样,U-Net只需要不断调用,处理一个批量的特征,就可以高效实现图像生成流水线的批量推进。

图片

此外,流批式去噪方法的好处在于,每次调用U-Net就可以使多个图像同时推进一步,而U-Net的批量运算非常适合GPU并行计算,所以整体运算效率非常高。

最终可以在保证质量的同时,显著缩短单张图像的生成时间。

残差无分类器指导

为了强化提示条件对结果的影响,扩散模型通常使用一种叫“无分类器指导”的策略。

在传统方法中,计算负条件向量时需要对每个输入潜向量配对负条件嵌入,每次推理都要调用U-Net算力消耗巨大。

为了解决这个问题,研究人员提出了“残差无分类器指导”方法。其核心方法是,假定存在一个“虚拟残差噪声”向量,用来逼近负条件向量

图片

首先计算“正条件”向量,再用正条件向量反推这个虚拟负条件向量。这样就避免了每次都要额外调用U-Net来计算真实的负条件向量,从而大幅减少了算力。

简单来说,就是用原始的输入图像编码作为负样本,无需调用U-Net就可以计算。稍微复杂一点的“一次负条件”,是在第一步使用U-Net计算一次负向量,然后重复使用这个向量近似后面的所有负向量。

流水线作业

该模块的功能是使整个系统的瓶颈不再是数据格式的转换,而是基于模型本身的推理时间。

通常,输入的图片需要缩放、转换格式等预处理才能成为模型可用的张量;输出的张量也需要后处理恢复为图片格式,整个流程消耗大量时间和算力。

图片

流水线作业将预/后处理与模型推理完全分离开来,置于不同的线程中并行执行。输入图像经过预处理进入输入队列缓存;

输出张量从输出队列发出,再后处理为图片。这样两者就可以不互相等待,从而优化了整体流程速度。

图片

此外,该方法还起到平滑数据流的作用。当输入源故障或通信错误导致暂时没法传入新图像时,队列可以继续提供之前缓存的图像,保证模型的流畅运行。

随机相似度过滤

该模块的功能是显著减少GPU算力消耗。当输入的图片连续相同或高度相似时,反复推理是没有任何意义的。

所以,相似度过滤模块计算输入图片与历史参考帧的相似度。如果高于设定阈值,则以一定概率跳过后续的模型推理;

如果低于阈值,则正常进行模型推理并更新参考帧。这种概率采样机制使得过滤策略可以平滑自然地对系统进行节流,降低平均GPU使用率。

图片

在静态输入下过滤效果明显,动态变化大时自动降低过滤率,系统可以自适应场景动态性。

这样,复杂度动态变化的连续流输入下也可以自动调节系统推理负载,节约GPU算力消耗。

实验数据

为了测试Stream Diffusion的性能,研究人员在RTX3060、RTX4090上进行了测试。

效率方面,实现了超过91 FPS的生成帧率,是当前最先进的AutoPipeline的近60倍,并极大减少去噪步骤。

功耗方面,静态输入下,RTX3060和RTX4090的平均功率分别降低了2.39倍和1.99倍。

本文素材来源Stream Diffusion论文,如有侵权请联系删除

END

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

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

相关文章

install mpirun

ubuntu install mpirun : sudo apt install mpich centos install mpirun: download mpich-4.1.2.tar.gz from Downloads | MPICH tar xf mpich-4.1.2.tar.gz cd mpich-4.1.2 ./configure --disable-fortran make;make install

vue项目hdr格式文件放在assets下rgbeloader.load获取不到问题解决

如下图 我再App.vue组件中这样写 艾特符号定位 告诉系统 要src下的assets下的xhdr下的xidis.hdr 但是运行项目 他会告诉你找不到这个资源 我们改一下 我们组件时 App.vue 与assets同在 src目录下 用 ./去找 这样也是找不到的 我们需要将它放在静态资源包public下 public路…

JS变量、作用域与内存

JavaScript是一种动态类型语言,它的变量声明和作用域有自己独特的规则。在JavaScript中,变量和作用域与内存管理密切相关,因此本文将深入探讨这些主题,以帮助我们更好地理解JavaScript中的变量、作用域和内存。 变量 在JavaScri…

CDSP考取的价值:成为数据安全认证专家的好处

哈喽IT的朋友们👋,今天想和大家聊聊一个超级有用的专业认证:CDSP,也就是数据安全认证专家。如果你在数据安全领域或者对这方面感兴趣,这个认证绝对值得你去考取哦! 1.🎓提升专业性:获…

MCEWMDRMNDBootstrap.dll文件丢失,软件游戏无法启动,怎样下载修复

不少小伙伴反馈,在打开某些游戏或软件的时候,Windows会提示“MCEWMDRMNDBootstrap.dll文件丢失,软件无法启动”,不知道应该怎样办? 首先,我们先来了解“MCEWMDRMNDBootstrap.dll文件”是什么? …

单片机开发从小工到专家

有道无术,术尚可求;有术无道,止于术 背景 向单片机嵌入式开发小伙伴推荐了几本书,阅读量破10 1. 适用范围 2. 书籍推荐 书籍推荐 3. 大师介绍 大师介绍 4. 大师书籍编写逻辑 25年大师出版的关于:嵌入式单片…

如何破解新版 NVIDIA GRID vGPU License Server (DLS)

文章首发在我的个人网站 http://841973620.net/index.php/archives/dls-cracked.html 前排提醒,闲鱼有不法商家修改许可然后出售的,挂这儿给大家避个雷 众嗦粥汁,新版的licserver不再通过验证MAC地址进行授权,而改为上传本地凭…

Oracle数据库中的基本初始化参数

基本初始化参数就是类型为Basic的初始化参数。大多数数据库只需要设置数据库基本初始化参数即可正确有效地运行。Oracle 建议您熟悉基本参数,并且仅在功能文档指示或特殊情况下使用其他参数。 文档1.2 Basic Initialization Parameters中,列出了27个&am…

wireshark access/trunk/hybrid报文分析

1,access接口 发送带vlan的报文 wireshark交换机配置 [Huawei-GigabitEthernet0/0/1] [Huawei-GigabitEthernet0/0/1]port link-type access [Huawei-GigabitEthernet0/0/1]port default vlan 100 [Huawei-GigabitEthernet0/0/2]port link-type access [Huawei-Gig…

安卓下Application和Activity的Context获取

情形一:Activity中 通过getApplication()获得Application,其本身也是一个的Context,也可以通过getApplicationContext()获得Application的Context,结果一样。 而this表示当前的Activity对象,其本身也是一个的Context…

(二)linux使用docker容器运行mysql

前言:在上一章安装好linux环境后,开始搭建msyql数据库,之前都是用windows安装mysql的,即使在linux上安装也是用tar解压,然后一堆的配置东西,现在用docker就是爽,几行命令就行 我这里就只放上几…

Dockerfile - 基于 SpringBoot 项目自定义镜像(项目上线全过程)

目录 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 1.2、打包项目(jar) 1.3、编写 Dockerfile 文件,构建镜像 1.4、运行镜像并测试 一、Dockerfile 自定义项目镜像 1.1、创建 SpringBoot 项目并编写 a)简…

SonarQube安装踩坑记录

如果用java1.8和mysql,则SonarQube版本不能超过7.8,看这里。 SonarQube7.8安装包地址: https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip 安装步骤: 1、下载SonarQube安装包 wget https://binari…

antv/x6_2.0学习使用(一、安装引入)

安装引入 安装 通过 npm 或 yarn 命令安装 x6 # npm $ npm install antv/x6 --save# yarn $ yarn add antv/x6安装完成之后,使用 import 进行引用 import { Graph } from antv/x6;通过 script 标签引入 可以使用下面三个 CDN 中的任何一个,默认返回…

几代WiFi有什么差异,它们有什么区别

最典型的差异指标:单流传输速率 第一代 基于的标准: 802.11 使用频率:2.4GHz 单流最大传输速率:2Mbit/s 第二代 基于的标准: 802.11b 使用频率:2.4GHz 单流最大传输速率:11Mbit/s 第三代 …

Anolis安装Jdk保姆级教学

前言 欢迎来到本博客,我们将带领你完成在Anolis操作系统上安装Java Development Kit(JDK)的详细过程。Anolis操作系统是一款基于Linux的轻量级操作系统,专为容器和云原生应用而设计。在Anolis上安装JDK将为你提供一个稳定、高效的…

洛谷:集合与前缀和

1.亲戚(并查集) #include<iostream> using namespace std; int n,m,p; int m1,m2,p1,p2; int f[5005];int find(int x)//查询根节点&#xff0c;根节点的标志是根节点的父节点是自己 {if(f[x]!x)f[x]find(f[x]);//路径压缩&#xff0c;父节点变为根节点,方便下次询问retu…

php中实现3DES算法(ECB加密模式PKCS5Padding填充)

讲道理&#xff0c;一提到3DES算法&#xff0c;首先想到的是要和java做交互了 现在3DES已经渐渐被抛弃了&#xff0c;尤其是ECB加密模式使用的更少了&#xff0c;但是没办法&#xff0c;业务需要&#xff0c;合作方用的是他&#xff0c;你头再铁也不能怎样&#xff0c;那就扒扒…

Python 简易图形界面库easygui 对话框大全(续)

目录 EasyGUI库 主要特点 使用场景 对话框样式 10. 文件打开框 fileopenbox 11. 文件保存框 filesavebox 12. 目录打开框 diropenbox 13. 索引对话框 indexbox 14. 例外报告框 exceptionbox 15. 代码文本框 codebox 16. 密码输入框 passwordbox 17. 多重文本框 mul…

成功软件项目的规划和管理策略

成功软件项目的规划和管理策略 在软件开发领域&#xff0c;成功的项目规划和有效的项目管理是确保项目按时交付、在预算内完成的关键要素。采用科学合理的规划和管理策略可以提高项目的可控性和成功交付的可能性。本文将介绍一些成功软件项目的规划和管理策略。 1. 明确的项目…