8天狂收6000+⭐️,可商用的开源Stream Diffusion

news2025/4/21 10:15:37

加州大学伯克利分校、东洋大学、东京工业大学、麻省理工学院和筑波大学等研究人员,联合开源了一款创新性实时交互图像生成框架——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论文,如有侵权请联系删除

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

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

相关文章

嵌入式学习路线

嵌入式系统是一种将软件和硬件紧密结合的技术,首先我们要认识到,无论我们是专注于软件开发还是硬件开发,最终的目标都是为了更好的工作和职业发展。 根据企业的规模和需求,大公司更倾向于将职责分得更细,例如软件分为…

2023年总结(2023年1月1日至2023年12月31日)

前言 时间过得真快啊,一年又过去了。 从去年11月换了家公司后,工作就稳定多了,做的工作也是我喜欢做的工作——摄像头驱动,平时也挺轻松的,偶尔有事儿的时候会压力大点,加点班,其他都还好&…

SAP 资产管理后台配置之设定主数据字段

前阵子给财务创建了一个固定资产类型,但同事使用时发现字段跟平时不一样。 正常是有下面这些标签页的 然后我找到主数据屏幕格式的配置里发现 发现格式默认错了 应该是默认我司的自定义格式ZSAP 但是改成ZSAP还是不会生效 需要给这个资产分类重新分配一下字段标签页…

『番外篇八』SwiftUI 脑洞大开实现“另类”视图跟随方法

概览 在 SwiftUI 的开发中,我们时常需要用指尖丝滑般地操作指定视图:比如,我们需要在拖动视图后让它自动归位,或者拖动一个视图时让另一个视图跟随它移动。 我们随后将会详细讨论上述两个 SwiftUI 中与视图移动相关场景的实现。 在本篇博文中,您将学到如下内容: 概览1.…

12.31_黑马数据结构与算法笔记Java

目录 331 两数之和 Leetcode167 332 三数之和 Leetcode15 333 四数之和 Leetcode18 334 盛水最多容器 Leetcode11 335 滑动窗口最大值 Leetcode239 336 接雨水 Leetcode42 337 字符串匹配 bf Leetcode28 338 字符串匹配 kmp Leetcode28 339 字符串匹配 lps Leetcode28 …

洛谷:集合与差分

1.学籍管理(map&#xff09; #include<iostream> #include<map> #include<string> using namespace std; map<string,int>a; int n; string name; int op,score; int main() {cin>>n;for(int i1;i<n;i){cin>>op;if(op!4)cin>>na…

深度解析ShardingJDBC:Java开发者的分库分表利器

一、ShardingSphere ShardingSphere 是一款起源于当当网内部的应用框架。2015年在当当网内部诞 生&#xff0c;最初就叫ShardingJDBC 。2016年的时候&#xff0c;由其中一个主要的开发人员张亮&#xff0c; 带入到京东数科&#xff0c;组件团队继续开发。在国内历经了当当网、电…

Mybatis 事务接口

当我们从数据源中得到一个可用的数据库连接之后&#xff0c;就可以开启一个数据库事务了&#xff0c;事务成功开启之后&#xff0c;我们才能修改数据库中的数据。 在修改完成之后&#xff0c;我们需要提交事务&#xff0c;完成整个事务内的全部修改操作&#xff0c;如果修改过…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-4-playwright等待浅析

1.简介 在介绍selenium的时候&#xff0c;宏哥也介绍过等待&#xff0c;是因为在某些元素出现后&#xff0c;才可以进行操作。有时候我们自己忘记添加等待时间后&#xff0c;查了半天代码确定就是没有问题&#xff0c;奇怪的就是获取不到元素。然后搞了好久&#xff0c;或者经…

桉木芯建筑模板与其他材质比较有何不同?

在建筑行业中&#xff0c;模板的选择对于确保工程质量和效率至关重要。桉木芯建筑模板作为市场上的一种选择&#xff0c;与其他材质的模板相比&#xff0c;具有独特的优势。能强优品木业作为专业的桉木芯建筑模板生产厂家&#xff0c;其产品充分展示了这一材质的优越性能。 材质…

技术博客官网也是一个不错的学习平台(第411篇)

技术博客官网也是一个不错的学习平台(第411篇) 今天的主题是OSPF 大纲 技术成就梦想51CTO-中国知名的数字化人才学习平台和技术社区 OSPF 概念型问题_wx655f0abb3511b的技术博客_51CTO博客 OSPF协议介绍及配置 - airoot - 博客园 (cnblogs.com) 一、OSPF概述 回顾一下距离矢…

如何实现WinApp的UI自动化测试?

WinApp&#xff08;WindowsAPP&#xff09;是运行在Windows操作系统上的应用程序&#xff0c;通常会提供一个可视的界面&#xff0c;用于和用户交互。例如运行在Windows系统上的Microsoft Office、PyCharm、Visual Studio Code、Chrome&#xff0c;都属于WinApp。常见的WinApp&…

[pingCTF 2023] 闲来无事作个题

谁元旦还打CTF啊&#xff0c;这两周没有比赛&#xff0c;明天才加班&#xff0c;作个已经过去的比赛。好在已经有官方WP&#xff0c;不会的可以看。 PWN without-love-it-cannot-be-seen 这个没有代码属于瞎pwn&#xff0c;随便输入个东西会提示密码不正确&#xff0c;然后输…

逻辑卷使用和扩容

1.逻辑卷管理LVM &#xff08; Logical Volume Manager&#xff09; 是 Linux 下对硬盘分区的一种管理机制 /boot分区用于存放引导文件&#xff0c;不能基于lvm创建 2.分区缺点&#xff1a; 无法动态扩容 必须使用连续的空间 没有备份 逻辑卷 lvm&#xff1a; 可以动态扩容…

设计模式:工厂方法模式(讲故事图文易懂)

目录 简单工厂工厂方法模式 简单工厂 定义&#xff1a;简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内&#xff08;简单工厂不满足开闭原则&#xff0c;后面会详细讲&#xff09; 举例&#xff1a;张三去4S店买了车&#xff0c;显…

大二第17周总结——2023年的最后一天

本周&#xff0c;学校安排的是数据结构的程序设计&#xff0c;设计是挺好设计的&#xff0c;小半天搞完了&#xff0c;然后帮室友也搞了。内容在上一个博客。 学习上嘛~ 学了一下websocket,看了下微信小程序........ 今天早上做了一套小米的面试题&#xff0c;不做不知道&…

Java开发框架和中间件面试题(10)

目录 104.怎么保证缓存和数据库数据的一致性&#xff1f; 105.什么是缓存穿透&#xff0c;什么是缓存雪崩&#xff1f;怎么解决&#xff1f; 106.如何对数据库进行优化&#xff1f; 107.使用索引时有哪些原则&#xff1f; 108.存储过程如何进行优化&#xff1f; 109.说说…

按摩上门预约小程序源码系统 开发组合:PHP+MySQL 附带完整的搭建教程

现代生活节奏的加快&#xff0c;人们越来越注重健康与放松。按摩作为传统的舒缓方式&#xff0c;市场需求逐年上升。然而&#xff0c;传统的按摩服务预约方式较为繁琐&#xff0c;用户需拨打热线电话或前往实体店进行预约&#xff0c;这无疑增加了用户的操作成本。因此&#xf…

前端框架前置学习(4) AJAX

同步代码和异步代码 同步代码 浏览器按照我们书写代码的顺序一行一行地执行程序.浏览器会等待代码的解析和工作,在上一行代码完成之后才会执行下一行代码.这被称之为同步程序 逐行执行,需要原地等待结果 异步代码 异步编码技术使得程序可以在执行一个可能长期运行的任务的…

七:Day01_Java9—16新特性

第一章 JDK9 新特性 jdk9是新特性最多的&#xff0c;因为jdk8是一个稳定版本。 1、JDK9新特性概述 模块系统 &#xff08;Module System&#xff09; Java9最大特性。它提供了类似于OSGI框架的功能&#xff0c;模块之间存在相互的依赖关系&#xff0c;可以导出一个公共的API…