最强开源文生图模型Flux强在哪里?

文摘   2024-11-19 08:00   浙江  
近期文章回顾(更多热门文章请关注公众号与知乎Rocky Ding哦)

写在前面

WeThinkIn最新福利放送:大家只需关注WeThinkIn公众号,后台回复“简历资源”,即可获取包含Rocky独家简历模版在内的60套精选的简历模板资源,希望能给大家在AIGC时代带来帮助。

AIGC时代的《三年面试五年模拟》算法工程师求职面试秘籍(持续更新)独家资源:https://github.com/WeThinkIn/Interview-for-Algorithm-Engineer/tree/main

Rocky最新发布Stable Diffusion 3和FLUX.1系列模型的深入浅出全维度解析文章(持续更新),点击链接直达干货知识:https://zhuanlan.zhihu.com/p/684068402



最近比较火的文生图模型非Flux莫属了,目前已经占据huggingface模型榜首,后面大概率会取代SD成为开源文生图模型新星了。不过Flux也算是SD一脉相承了,因为Flux背后的开发团队Black Forest Labs其实也就是研发SD的原技术团队。而且Flux和SD3在设计上非常类似,可以算是SD3的升级版本,这篇文章我们就简单聊聊Flux相比SD3的具体改进。


Flux是一个基于DiT架构的12B文生图模型,这应该是我目前见到过最大的扩散模型。Flux共有三个版本:
  • FLUX.1 [pro]:性能最好的模型,但不开源,只能通过API访问;
  • FLUX.1 [dev]:FLUX.1 [pro]的蒸馏模型,这个蒸馏模型是把classifier free guidance过程蒸馏到模型内部,生成过程不需要一个显式的无条件推理,所以效率上会比原始的FLUX.1 [pro]高,虽然模型开源,但是要商用需要先授权;
  • FLUX.1 [schnell]:FLUX.1 [pro]的4步蒸馏模型,只需要4步就可以生成,所以速度快,模型开源可商用,但是性能上要差于前面两个版本。
所以,Flux的三个版本都是源自一个模型,dev和schnell只是通过蒸馏提升了效率,但性能和成本是正相关的:


从内部评测来看,FLUX.1 [pro]算是最好的模型,超过8B的 SD3-Ultra,DALL-E 3以及MidJourney V6.0,而FLUX.1 [dev]紧随其后。虽然评测并不能完全体现生成模型的能力,但是至少说明Flux是很能打的。


下面也展示了4个ptompt在三个版本上的表现(从左到右),简单来说,那就是FLUX.1 [pro] > FLUX.1 [dev] > FLUX.1 [schnell],不过 FLUX.1 [dev]和FLUX.1 [pro]的差距也并非很显著。


接下来看一下Flux的模型设计,其整体结构如下图所示(来自网上):


整体来说,Flux和SD3基本是一样的,都是基于latent diffusion和MMDiT架构,扩散模型采用Flow Match的方式。这里我们主要来看一些差一点。
首先是VAE模型,SD3相比之前版本的SD一个重要改进就是采用了特征通道更多的VAE,特征维度从原来的4增加到16,可以减少VAE重建所导致的畸变。Flux和SD3一样也采用16通道的VAE,下面是一个512x512图像经过VAE压缩和重建的效果对比(从左到右分别是原图、SDXL、SD3和Flux的重建图):


可以看到4通道的SDXL VAE出现人脸和文本的畸变,而采用16通道VAE的SD3和Flux基本看不到明显的重建畸变。此外,Flux的VAE并不是直接用SD3的VAE,而是重新训练了,因为模型结构虽然一样,但是参数变了。一个小细节就是SD3和Flux的VAE会对编码后的latent特征做平移和缩放,而不是之前VAE那样仅做缩放:
def encode(self, x: Tensor) -> Tensor:
z = self.reg(self.encoder(x))
z = self.scale_factor * (z - self.shift_factor)
return z
将latent特征分布的均值和方差归一化到0和1,这样做就更合理(和扩散过程加的高斯噪音在同一范围)。
然后就是文本编码器,SD3采用三个文本编码器,分别是OpenCLIP-ViT/G,CLIP-ViT/L以及T5-xxl,其中两个CLIP的pooling特征拼接在一起加在time embedding上,而且两个CLIP的text embedding拼接在一起,并和T5-xxl的text embedding沿着token维度拼接在一起送入MMDiT。但是Flux只使用CLIP-ViT/L和T5-xxl两个文本编码器,CLIP-ViT/L的pooling特征加在time embedding上,而T5-xxl的text embedding直接送入MMDiT输入中。所以Flux更依赖T5-xxl,而SD3其实CLIP特征还有较大的作用,比如SD3可以去掉T5只用CLIP来生成图像。
最后就是MMDiT,Flux相比SD3有一些变动,原来的MMDiT是文本和图像是独立两个分支,只用在attention的时候共享计算,而Flux只在前面的19层采用这样的MMDiT block,后面的38层直接采用普通的DiT block,文本和图像拼接在一起共用一套参数。直观上看,前面的MMDiT block可以实现两个模态融合了,后面就不需要这样做了,这样就可以把节省的参数用来增加模型的深度。最终Flux的模型大小是12B,比8B的SD3还大40%。
除了大的模型结构有变动,Flux在一些其他方面也有一些改进,比如位置编码上。SD3采用2d的frequency embeddings,这是一种绝对位置编码,而Flux这次直接采用LLM中常用的 rotary positional embedding(rope),rope是直接作用在attention上的相对位置编码。具体来说,Flux采用的是3d rope,除了图像的h和w两个维度外,还预留了一个维度,猜测是为视频生成的time维度预留,默认设置为0。
此外,Flux采用了动态的time shift,根据输入图像大小动态选择time shift参数。从SD3论文中,可以我们要对高分辨率图像进行time shift,其具体偏移量为:
这里的通过实验确定,Flux这里确定了256x256图像和1024x1024的图像下的的,并确定一个线性函数,其它分辨率图像就可以根据这个线性函数来计算得到:
def get_lin_function(
x1: float = 256, y1: float = 0.5, x2: float = 4096, y2: float = 1.15
) -> Callable[[float], float]:
m = (y2 - y1) / (x2 - x1)
b = y1 - m * x1
return lambda x: m * x + b
然后就可以根据前面的公式来计算出实际的time shift:
# 这里的sigma默认为1,此时就和上述公式对应上
def time_shift(mu: float, sigma: float, t: Tensor):
return math.exp(mu) / (math.exp(mu) + (1 / t - 1) ** sigma)
这里也画出了256x256、512x512以及1024x1024下time shift,分辨率越大,time shift越大:
按照官方的说法,Flux可以生成多种长宽比和分辨率,包括0.1和2.0百万像素的图像:
我觉得这主要得益于Flux采用rope和动态的time shift策略,当然肯定也和多尺度训练有一定关系。
最后,我们再来看看Flux的两个蒸馏版本,首先是FLUX.1 [dev],前面说过这个蒸馏模型是把classifier free guidance过程蒸馏到模型内部,生成过程不需要一个显式的无条件推理,同时将guidance scale编码成一个向量特征加在time embedding。猜测实现上就是把直接蒸馏模型的CFG过程,并动态选择不同的guidance scale得到蒸馏模型。而4步模型FLUX.1 [schnell]应该就是常规的步数蒸馏模型,大概就是采用Fast High-Resolution Image Synthesis with Latent Adversarial Diffusion Distillation论文中的LADD方法得到。

推荐阅读

1、加入AIGCmagic社区知识星球

AIGCmagic社区知识星球不同于市面上其他的AI知识星球,AIGCmagic社区知识星球是国内首个以AIGC全栈技术与商业变现为主线的学习交流平台,涉及AI绘画、AI视频、大模型、AI多模态、数字人、全行业AIGC赋能等50+应用方向,内部包含海量学习资源、专业问答、前沿资讯、内推招聘、AI课程、AIGC模型、AIGC数据集和源码等

那该如何加入星球呢?很简单,我们只需要扫下方的二维码即可。知识星球原价:299元/年,前200名限量活动价,终身优惠只需199元/年。大家只需要扫描下面的星球优惠卷即可享受初始居民的最大优惠:

2、《三年面试五年模拟》算法工程师面试秘籍

《三年面试五年模拟》面试秘籍旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法,力求让读者在获得心仪offer的同时,增强技术基本面。

Rocky已经将《三年面试五年模拟》面试秘籍的完整版构建在Github上:https://github.com/WeThinkIn/Interview-for-Algorithm-Engineer/tree/main,欢迎大家star!

《三年面试五年模拟》面试秘籍的内容框架

想要一起进行项目共建的朋友,欢迎点击链接加入项目团队:《三年面试五年模拟》版本更新白皮书,迎接AIGC时代

3、Sora等AI视频大模型的核心原理,核心基础知识,网络结构,经典应用场景,从0到1搭建使用AI视频大模型,从0到1训练自己的AI视频大模型,AI视频大模型性能测评,AI视频领域未来发展等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

Sora等AI视频大模型文章地址:https://zhuanlan.zhihu.com/p/706722494

4、Stable Diffusion 3和FLUX.1核心原理,核心基础知识,网络结构,从0到1搭建使用Stable Diffusion 3和FLUX.1进行AI绘画,从0到1上手使用Stable Diffusion 3和FLUX.1训练自己的AI绘画模型,Stable Diffusion 3和FLUX.1性能优化等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

Stable Diffusion 3和FLUX.1文章地址:https://zhuanlan.zhihu.com/p/684068402

5、Stable Diffusion XL核心基础知识,网络结构,从0到1搭建使用Stable Diffusion XL进行AI绘画,从0到1上手使用Stable Diffusion XL训练自己的AI绘画模型,AI绘画领域的未来发展等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

Stable Diffusion XL文章地址:https://zhuanlan.zhihu.com/p/643420260

6、Stable Diffusion 1.x-2.x核心原理,核心基础知识,网络结构,经典应用场景,从0到1搭建使用Stable Diffusion进行AI绘画,从0到1上手使用Stable Diffusion训练自己的AI绘画模型,Stable Diffusion性能优化等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

Stable Diffusion文章地址:https://zhuanlan.zhihu.com/p/632809634

7、ControlNet核心基础知识,核心网络结构,从0到1使用ControlNet进行AI绘画,从0到1训练自己的ControlNet模型,从0到1上手构建ControlNet商业变现应用等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

ControlNet文章地址:https://zhuanlan.zhihu.com/p/660924126

8、LoRA系列模型核心原理,核心基础知识,从0到1使用LoRA模型进行AI绘画,从0到1上手训练自己的LoRA模型,LoRA变体模型介绍,优质LoRA推荐等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

LoRA文章地址:https://zhuanlan.zhihu.com/p/639229126

9、Transformer核心基础知识,核心网络结构,AIGC时代的Transformer新内涵,各AI领域Transformer的应用落地,Transformer未来发展趋势等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

Transformer文章地址:https://zhuanlan.zhihu.com/p/709874399

10、最全面的AIGC面经《手把手教你成为AIGC算法工程师,斩获AIGC算法offer!(2024年版)》文章正式发布!

码字不易,欢迎大家多多点赞:

AIGC面经文章地址:https://zhuanlan.zhihu.com/p/651076114

11、50万字大汇总《“三年面试五年模拟”之算法工程师的求职面试“独孤九剑”秘籍》文章正式发布!

码字不易,欢迎大家多多点赞:

算法工程师三年面试五年模拟文章地址:https://zhuanlan.zhihu.com/p/545374303

《三年面试五年模拟》github项目地址(希望大家能多多star):https://github.com/WeThinkIn/Interview-for-Algorithm-Engineer

12、Stable Diffusion WebUI、ComfyUI、Fooocus三大主流AI绘画框架核心知识,从0到1搭建AI绘画框架,从0到1使用AI绘画框架的保姆级教程,深入浅出介绍AI绘画框架的各模块功能,深入浅出介绍AI绘画框架的高阶用法等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

AI绘画框架文章地址:https://zhuanlan.zhihu.com/p/673439761

13、GAN网络核心基础知识,网络架构,GAN经典变体模型,经典应用场景,GAN在AIGC时代的商业应用等全维度解析文章正式发布!

码字不易,欢迎大家多多点赞:

GAN网络文章地址:https://zhuanlan.zhihu.com/p/663157306

14、其他

Rocky将YOLOv1-v7全系列大解析文章也制作成相应的pdf版本,大家可以关注公众号WeThinkIn,并在后台【精华干货】菜单或者回复关键词“YOLO” 进行取用。

WeThinkIn
Rocky相信人工智能,数据科学,商业逻辑,金融工具,终身成长,以及顺应时代的潮流会赋予我们超能力。
 最新文章