Flux1的验证

文摘   2024-10-10 15:34   韩国  

本文涉及到的详细测试代码和测试步骤放置于:

https://github.com/xinyuwei-david/david-share.git下的:Multimodal-Models/Flux.1-Test

本文中不再赘述代码实现。欢迎给repo点亮Star,您的点赞是作者持续创作的动力。

FLUX.1 是由 Black Forest Labs(黑森林实验室) 开发的。这是一款开源的图像生成模型,提供了多种版本以满足不同用户的需求,包括 [pro]、[dev] 和 [schnell]。本文验证使用的FLUX.1 dev。FLUX.1 的最高分辨率可以达到 2K(即 2048 x 2048 像素)


扩散模型、CLIP、ViT、Stable Diffusion与FLUX.1的关系解析

一、扩散模型的正向和反向过程

扩散模型(Diffusion Model)是一类生成模型,通过逐步添加和去除噪声来生成数据,包括正向过程(添加噪声)和反向过程(去除噪声)。

  • 正向过程:从一幅清晰的图像开始,逐渐添加噪声。就像在一幅清晰的风景画上不断喷洒墨水,图像会逐渐被噪声覆盖,最终变成纯噪声。

  • 反向过程:这个过程用于生成新图像。从纯噪声开始,通过训练好的模型,逐步去除噪声,恢复出清晰的图像。模型学习如何在每一步有效地去噪,从而从随机噪声中生成高质量的图像。

因此,扩散模型的核心体现在解码阶段,即从噪声到图像的生成过程。

二、CLIP与ViT的角色

1. CLIP(Contrastive Language-Image Pre-Training)

  • 用途:CLIP旨在将图像和文本映射到同一嵌入空间,实现图像与文本描述之间的匹配和检索。

  • 组成:CLIP由两个独立的编码器组成:

    • 图像编码器:通常采用ViT(Vision Transformer)或ResNet等架构,将图像编码为特征向量。

    • 文本编码器:将文本描述编码为特征向量。

  • 工作原理:通过对大量的图文对进行训练,使得对应的图像和文本在嵌入空间中距离更近,从而实现跨模态的检索和匹配。

2. ViT(Vision Transformer)

  • 用途:ViT是将Transformer架构应用于图像领域的模型,主要用于图像分类等任务。

  • 工作原理

    • 图像分块:将图像划分为固定大小的Patch(如16×16像素)。

    • 展平序列:将这些Patch展平成一维的序列,类似于文本中的词序列。

    • 位置编码:添加位置嵌入,以保留图像空间信息。

    • Transformer处理:使用Transformer的自注意力机制处理序列化的图像Patch。

三、Stable Diffusion的架构演进

1. Stable Diffusion 2

  • 架构:基于潜在扩散模型(Latent Diffusion Model, LDM),在压缩的潜在空间中进行扩散过程。

  • 核心网络:使用U-Net架构,包括编码器和解码器,并通过跳跃连接传递细节信息。

  • 特点

    • 计算效率高:在潜在空间中操作,减少了计算量。

    • 生成质量好:能够生成高分辨率、高质量的图像。

2. Stable Diffusion 3

  • 架构更新:引入了Diffusion Transformer(DiT),替代了传统的U-Net架构。

  • 新技术:结合了**Flow Matching(FM)**方法,提高了训练和生成效率。

  • 亮点

    • 模型规模多样:从8亿参数到80亿参数,满足不同需求。

    • 更好的文本理解:在多主题提示处理、图像质量以及拼写能力方面有所提升。

    • 安全与责任:注重安全措施,防范滥用风险,强调道德规范。

四、FLUX.1简介

FLUX.1是由Black Forest Labs(黑森林实验室)开发的一款开源图像生成模型,提供了多种版本以满足不同用户需求,包括[pro]、[dev]和[schnell]。

  • 最高分辨率:支持高达2K(即2048×2048像素)的图像生成。

  • 版本特性

    • [pro]:专业版,提供最佳的图像质量和细节表现。

    • [dev]:开发者版,平衡了性能和质量,适合测试和开发。

    • [schnell]:快速版,强调生成速度,适合需要快速结果的场景。

FLUX.1以其高质量的图像生成能力、快速的性能和灵活的自定义选项而著称。

FlUX.1架构图如下所示:

在FLUX架构中,不同组件在训练和推理阶段的作用如下:

  1. CLIP

  • 训练阶段:用于学习图像和文本之间的关联和对齐关系。

  • 推理阶段:主要用于结合文本输入,帮助生成与文本描述一致的图像。

  • T5

    • 训练阶段:学习从文本中提取特征。

    • 推理阶段:将文本输入转换为特征向量,用于指导图像生成。

  • Stable Diffusion(或扩散模型组件)

    • 训练阶段:学习通过扩散过程生成潜在表示。

    • 推理阶段:使用学到的潜在表示和特征生成高质量图像。

  • FLUX整体架构

    • 训练阶段:结合多模态输入学习特征嵌入和生成策略。

    • 推理阶段:从文本输入生成图像,利用编码器提取特征,通过解码器生成最终图像输出。

      FLUX通过结合这些组件,实现了从文本生成图像的完整流程。


    五、生图效果

    我们先看生图的效果:

    image = generate_image("A Handsome chinese man with glasses is holding a book named LLM , the cover of the book is a Astronauts skiing on the moon, the book cover is blue stars in the background. ")

    生成图片:

    在生成一张景色的图片:

    image = generate_image("The most beautiful October in Beijing")

    生成图片过程中GPU的开销:



    大魏分享
    https://github.com/davidsajare/david-share.git
     最新文章