DiffSynth:共建 Diffusion 开源生态
内容介绍:
一、Diffusion技术回顾
二、模型生态互联
三、模型生态统一
四、走向视频时代
五、总结与展望
本次分享的主题是DiffSynth:共建 Diffusion 开源生态,由DiffSynth- Studio作者/魔搭社区算法工程师段忠杰分享。
DiffSynth- Studio是一款专门为AIGC爱好者设计的强大的Diffusion引擎。它不仅支持兼容各种开源模型,同时还优化了计算性能。用户可以通过DiffSynth- Studio体验图像和视频生成、卡通风格、视频渲染等多种功能,并且特别加强了对中文的支持。接下来将为大家介绍在Diffusion开源生态中做的一些工作。
一、Diffusion技术回顾
首先通过一个简单的例子回顾一下Diffusion的相关技术。这是一张由Stable Diffusion XL所生成的图像,图中可爱的小姐姐衣着华丽,画面细节非常丰富,图像非常具有美感。而这不是今天报告的重点,这样的demo在今天已不算惊艳。今天的重点是Diffusion模型生态。接下来我会在此图上使用一些魔法。第一个魔法,我们先使用ControlNet,可以在保留结构的同时,通过修改一定的提示词让这个小姐姐变成一个火系魔法师。ControlNet是Diffusion的生态模型,可直接嫁接在Stable Diffusion unit模型的基础之上,实现对画面结构点对点的控制。我们可以做一些有意思的事情,比如画面内容的修改,但并不改变画面结构。作为一个二次元,我觉得这个画面不太符合我的胃口,我更喜欢扁平的日系画风,我可以在此基础上再叠加动漫风格的loRA模型,让整个画面更贴近目前主流的日系画风。loRA也是来自开源社区的模型,它可以改变画面中的细节,或者控制整体风格。如果不喜欢日系画风,我们还可以继续使用魔法,使用IP-Adapter,为此画注入中国风水墨的美感。IP-Adapter的输入是一张图片,我在网上找了一张中国风水墨画,这张画就可以作为一个IP-Adapter模型的输入,用图生图的方式控制整体的画面风格。这个例子很好的展现出了Diffusion相关技术的模型生态。
二、模型生态互联
它和大语言模型有很重要的一点区别是Diffusion有生态模型。我们通常把普通的文生图或文生视频模型叫做底膜,因为它是一个最基础的模型,没有底膜什么都生成不了。在底模的基础之上,还有很多生态模型。生态模型就像一些嫁接在底模之上的枝叶,它们可以从底模中吸收一部分信息,反过来给底模增强一部分的生成能力。比如刚才的例子,我们在Stable Diffusion XL底膜之上,用ControlNet做点对点的结构控制、用loRA改变画面的风格和内容、用IP-Adapter图生图的形式做风格调整。由此可见,Diffusion模型有着非常丰富的模型生态。在开源社区中,很多开源的底模也有很多开源的生态模型。每位开发者都在对应的模型里面实现了一些单点强大的功能,满足一些定制化需求。基于此,我们提出“模型生态互联”概念, 简单的说就是我们想打通这些模型,包括底模和生态模型之间的兼容性。我们想要构建一个一站式工具,让用户可以直接调用所有主流的Diffusion模型以及生态模型。关于这样可以带来的好处我们再看几个例子。
第一个例子,我们设计的动漫风格的视频转绘方案。我们可直接把真实视频渲染成动漫风格的视频,做到非常高的分辨率。此视频的分辨率已达到1536,虽然视频中小姐姐的动作幅度非常大,但渲染后视频的整体动作还是非常流畅的,且画面细节非常清晰。我们在搭建这样的渲染方案时使用了四个模型,最基础的底模就是Stable Diffusion,是用来生成二次元动漫肖像的一个微调过的开源模型。其次,我们使用了Textual Inversion调整一些细节,比如防止手部和脸部的画面崩坏。我们还使用了刚才提到的ControlNet,在原视频中提取线条边缘轮廓以表示结构,可以在生成视频中保留结构信息。最后,我们使用了AnimateDiff,让整体画面更具一致性,使整体的视频看起来更加流畅。我们在搭建这个视频渲染管线时,没有训练任何自己的模型,只是用开源的模型拼装。我们实现了生态互联,可让每一模块在渲染方案中发挥其作用,直接实现这样惊艳的效果。这完全可以说是开源社区孕育出的奇迹,我们只是用生态互联的形式将其带到大家的眼前。
第二个例子,是快手最近公布的模型——可图。这是由快手训练且公开的一个中文特色的文身图模型,在Stable Diffusion XL的基础上做了进一步的微调,在结构上也有一定的修改,在美观程度、文图一致性等各个方面都有非常不错的表现。因为可图模型和Stable Diffusion XL模型在结构上有着天然的相似性,所以可以做可图模型的生态互联。比如我们有很多Stable Diffusion XL的ControlNet模型,这些模型并不是专门为了可图模型而训练的,即使如此,我们仍然做了一定的兼容处理。我们把ControlNet模型嫁接在可图上,在代码上做了兼容性的处理后,仍然可以做到如图所示,使用深度图表示结构,然后通过调整提示词让其结构相同、内容不同的其他图像。可图模型可通过生态互联兼容Stable Diffusion XL的一些生态模型,这是我们做生态互联的目的。我们希望更多的模型之间能有一些更奇妙的化学反应。类似ControlNet,我们还有一些其他的loRA模型。比如我们有一个水彩风格的loRA模型,同样是为Stable Diffusion XL训练的,并不是专门为可图训练的,但也能看到把loRA模型打到可图之上,也可帮助可图生成具有水就水彩画画风的画面。但这样的loRA兼容性并不是完美的,我们也在尽力帮助可图模型构建它自己的loRA模型生态。为实现这一目标,我们上个月举办了一场可图的loRA训练挑战赛。这几张图是我们在在众多参赛选手提交的作品中挑选出的几张精美图片,我们收到了非常多参赛选手提交的精美作品,以及一些高质量的loRA模型。在这幅作品里,这位同学供了一个古风的loRA,“空山新雨后,天气晚来秋。明月松间照,清泉石上流。”正所谓诗情配上画意,古人为我们留下了诗情,我们为这句诗赋予现代的画意,这是一种很浪漫的事情。值得一提的是,可图模型的文本编码器是一个原生的中文理解模型,就是智库团队的Chatgom,可以原生理解中文的语义信息,即它能理解诗句中的意境,这和以Stable Diffusion为主导的那些开源模型有本质区别,所以可图模型更适合用来生成一些具有中华文化底蕴的图像,这是独属于中国人的浪漫。
三、模型生态统一
我们在开发项目DiffSynth- Studio中,已经支持了包括可图在内的多个文生图模型,实现底模和生态模型之间互联的同时,我们也在努力实现底模间的生态统一。我想做一些通用技术,通过一些通用的增强模块让模型能够生成更精美的图像,满足定制化需求。我们有全局的高分辨率修复功能,源于早期的Stable Diffusion web UI,我们可直接利用文生图模型本身的强大生成能力润色模型生成的低分辨率图像,变成一个高分辨率图像。我们把角色的眼睛放大后,可以非常清晰的看到,在使用高分辨率修复前,眼睛是有锯齿的,高分辨率修复后,眼睛的细节非常平滑细腻。高分辨率修复模块是全局启用的,任DiffSynth- Studio项目中支持的文生图模型都可直接启用高分辨率修复。另外,我们还有统一的训练框架,把每一文生图模型的接口做了统一抽象。我们可以用统一的形式去训练模型loRA。比如这个例子,我们大概使用四五张柯基小狗的图像构建一个很小的数据集用以训练lora模型。在训练之前,如果直接用底模生成,生成的小狗姿态各异,风格、毛色都各不相同。使用loRA训练后,可让模型通过loRA记住这只小狗的特征,生成这只柯基小狗,做出各种动作的图像。
我们还做了更酷的事情,比如提示词分区控制。我准备了一个非常有意思的demo,可以直接画出一定的区域,让prompt作用在对应区域。我们可以让这个小姐姐左边和右边的头发染上不同的颜色,或是在桌子上画一本书,给小猫带上王冠等,我们可以通过画笔和提示词结合实现提示词的分区控制。这个demo是用最新的plus模型实现的, 这个模块仍是全局启用的,任何支持的文生图模型都可直接做提示词的分区控制。我们希望通过这种形式探索未来艺术家和人工智能的交互形式。
四、走向视频时代
除图像生成外,我们也在积极迎接即将到来的视频生成时代。自从今年上半年OpenAI公布SORA以来,国内各厂商已投入非常多的资源到视频生成模型的大规模训练中,其中不仅有快手的可灵、还有一些新生的公司,比如上述科技的Vidu,以及质谱的清影,我们已经看到了非常多有意思的demo。作为开源社区的代表,我觉得视频生成模型的训练已不再只是一个单纯的技术问题了,还需要巨量计算资源的投入,这是一件很难解决的事情。以开源社区的体量做视频生成模型的大规模训练使一件非常吃力的事。我们会在力所能及的范围内探索,也希望能够尽自己的一份力推动技术的发展。我们在OpenAI公布SORA的一年之前就已经在积累和布局视频生成技术,我们在一年前就设计过视频风格迁移技术——DiffSynth,这也是DiffSynth- Studio开源项目名字的由来,在这个视频风格迁移技术中,完全基于一个图像生成模型,可以直接把图生图的流水线变成视频到视频的流水线。这个方案中没有用任何视频生成模型,完全基于图像生成模型实现视频风格迁移的流水线。
我们还有一个视频一致性提升算法——FastBlend,可以直接消除diffusion逐帧处理后视频产生的闪烁。FastBlend是比较早期开源的模型,它是一个纯算法,不依赖模型,可以直接与diffusion模型解耦,作为视频层面的后处理算法,用来消除diffusion逐帧处理后产生的闪烁。
刚才我提到的动漫风格视频渲染方案,也是我们在视频生成领域技术积累的一个例子。
最后,大概两个月前我们公布的一个视频模型扩展训练方法——ExVideo,通过后训练增强视频生成模型的能力。在开源社区中,视频生成模型的发展仍然举步维艰。大部分开源视频生成模型仍然只能生成很短的视频,比如Stable Diffusion只能生成25帧的视频。我们试图通过后训练的技术提升视频生成模型本身的能力。通过一定的后训练,在模型结构上增加一些advantage架构,进行训练后就可让模型生成更长的视频。
除了自有的技术积累外,我们也在积极拥抱一些开源的视频生成模型接入。比如CogVideoX-5B版本,我们在DiffSynth- Studio开源项目中已经支持这个模型。我们还根据自己的理解对这个模型的paperline做了进一步优化。模型本身只具备一定的文生视频能力,我们在此基础上又实现了视频编辑能力。比如让狗的黑色项圈变成蓝色,又或是让个骑马的宇航员变成骑马的机器人。还有在视频生成中通用的超分辨率和插帧模块。其中超分辨率模块是基于高分辨率修复模块改进的,我们把图像生成的经验直接套用在视频生成上。超分辨率模块和插件模块可让模型生成更加清晰、动作更加流畅。
五、总结与展望
最后,开源社区需要每一位开发者的维护。今天非常感谢快手和质谱的团队愿意把模型公开。只要你愿意播下一颗种子,我们就愿意一起为它浇水、施肥,一起看着它开花结果,让我们一起共建diffusion的开源生态。