Black Forest Labs 的 Flux——文本转图像模型的下一个飞跃,它比 Midjourney 更好吗?

一、前言

Black Forest Labs是开创性稳定扩散模型的团队,现已发布Flux——一套最先进的模型,有望重新定义 AI 生成图像的功能。但 Flux 是否真正代表了该领域的飞跃?它与 Midjourney 等行业领导者相比如何?让我们深入探索 Flux 的世界,探索其重塑 AI 生成艺术和媒体未来的潜力。

二、黑森林实验室的诞生

在深入探讨 Flux 的技术方面之前,了解这一创新模型背后的背景至关重要。Black Forest Labs 不仅仅是一家 AI 初创公司,它还是一个人才济济的团队,在开发基础生成式 AI 模型方面拥有丰富的经验。该团队包括 VQGAN、Latent Diffusion 和 Stable Diffusion 系列模型的创造者,这些模型已经席卷了 AI 艺术界。
Black Forest Labs 成功完成了由 Andreessen Horowitz 领投的 3100 万美元种子轮融资,并获得了知名天使投资者的支持,目前已站在生成式人工智能研究的最前沿。他们的使命很明确:开发和推进用于图像和视频等媒体的最先进的生成式深度学习模型,同时突破创造力、效率和多样性的界限。

三、介绍 Flux 模型系列

Black Forest Labs 推出了 FLUX.1 文本转图像模型套件,旨在为图像细节、即时性、风格多样性和场景复杂性树立新的标杆。Flux 系列由三种变体组成,每种变体都针对不同的用例和可访问性级别量身定制:

  1. FLUX.1 [pro]:旗舰型号,提供顶级的图像生成性能,具有卓越的快速跟踪、视觉质量、图像细节和输出多样性。它可通过 API 获得,定位为专业和企业用途的高级选项。
  2. FLUX.1 [dev]:一种面向非商业应用的开放式指导提炼模型。其设计旨在实现与专业版类似的质量和及时遵守能力,同时效率更高。
  3. FLUX.1 [schnell]:套件中速度最快的模型,针对本地开发和个人使用进行了优化。它根据 Apache 2.0 许可证公开提供,因此可用于各种应用程序和实验。

我将提供一些独特而富有创意的提示示例来展示 FLUX.1 的功能。这些提示将突出该模型在处理文本、复杂构图和手等具有挑战性的元素方面的优势。

  • 艺术风格与文字的融合:“以文森特·梵高的标志性风格创作一幅肖像,但用旋转的笔触代替他的胡须,形成草书单词‘星夜’。”
    在这里插入图片描述

  • 带有文本集成的动态动作场景:“超级英雄冲破漫画书页。动作线和音效应以粗体动态字体形成英雄的名字‘FLUX FORCE’。”

  • 超现实主义概念与精准的物体放置:“窗户阳光下,一只棕色和白色可爱猫咪的特写。重点突出眼睛的纹理和颜色。自然光捕捉真实的眼睛光泽和深度。”
    在这里插入图片描述

这些提示旨在挑战 FLUX.1 在文本渲染、复杂场景构图和详细对象创建方面的能力,同时展示其在创造性和独特图像生成方面的潜力。

四、Flux 背后的技术创新

Flux 令人印象深刻的功能的核心在于一系列技术创新,使其有别于其前辈和同时代产品:

大规模变压器供电流动模型

所有公开的 FLUX.1 模型均建立在混合架构上,该架构结合了多模态和并行扩散变压器模块,可扩展到令人印象深刻的 120 亿个参数。与许多现有的文本转图像模型相比,这代表了模型大小和复杂性的显著飞跃。
Flux 模型通过结合流匹配(一种通用且概念简单的生成模型训练方法)改进了之前最先进的扩散模型。流匹配为生成建模提供了更灵活的框架,而扩散模型是这种更广泛方法中的一个特例。
为了提高模型性能和硬件效率,Black Forest Labs 集成了旋转位置嵌入和并行注意层。这些技术可以更好地处理图像中的空间关系,并更有效地处理大规模数据。

建筑创新

分解一下影响 Flux 性能的一些关键架构元素:

  1. 混合架构:通过结合多模态和并行扩散变压器块,Flux 可以有效地处理文本和视觉信息,从而实现提示和生成的图像之间更好的对齐。
  2. 流匹配:这种方法可以更灵活、更高效地训练生成模型。它提供了一个统一的框架,涵盖了扩散模型和其他生成技术,有可能实现更强大、更通用的图像生成。
  3. 旋转位置嵌入:这些嵌入帮助模型更好地理解和维护图像内的空间关系,这对于生成连贯且详细的视觉内容至关重要。
  4. 并行注意层:该技术可以更有效地处理注意力机制,这对于理解文本提示和生成的图像中不同元素之间的关系至关重要。
  5. 扩展到 12B 参数:模型的庞大规模使其能够捕获和合成更复杂的模式和关系,从而可能带来更高质量和更多样化的输出。

五、基准测试通量:图像合成的新标准

在这里插入图片描述
Black Forest Labs 声称 FLUX.1 在图像合成方面树立了新的标准,在几个关键方面超越了 Midjourney v6.0、DALL·E 3 (HD) 和 SD3-Ultra 等热门型号:

  1. 视觉质量:Flux 旨在制作保真度更高、细节更逼真、整体美感更好的图像。
  2. 提示遵循:该模型旨在更加紧密地遵循给定的文本提示,生成更准确反映用户意图的图像。
  3. 尺寸/宽高比可变性:Flux 支持多种宽高比和分辨率,从 0.1 到 2.0 兆像素,为各种用例提供​​灵活性。
  4. 活版印刷:该模型显示出在图像中生成和渲染文本的改进能力,这是许多文本到图像模型的共同挑战。
  5. 输出多样性:Flux 经过专门微调,可保留预训练的整个输出多样性,从而提供更广泛的创造可能性。

六、Flux 与 Midjourney:比较分析

在这里插入图片描述
现在,让我们来解决这个热门问题:Flux 比Midjourney好吗?要回答这个问题,我们需要考虑几个因素:

图像质量和美观度

Flux 和 Midjourney 都以制作高质量、视觉震撼的图像而闻名。Midjourney 因其艺术天赋和创造具有独特审美吸引力的图像的能力而受到称赞。Flux 凭借其先进的架构和更大的参数数量,旨在达到或超过这一质量水平。

Flux 的早期示例展现了令人印象深刻的细节、逼真的纹理以及对光线和构图的出色把握。然而,艺术的主观性使得很难明确宣称在这一领域谁更胜一筹。用户可能会发现,每种模型在不同风格或类型的图像上都有自己的优势。

及时遵守

Flux 可能胜过Midjourney一个领域是提示遵循性。Black Forest Labs 强调了其专注于提高模型准确解释和执行给定提示的能力。这可能导致生成的图像更符合用户的意图,尤其是对于复杂或细微的请求。
Midjourney有时会因随意发挥创意而受到批评,这可能会产生美妙但出乎意料的结果。Flux 的方法可能对生成的输出提供更精确的控制。

速度与效率

随着 FLUX.1 [schnell] 的推出,Black Forest Labs 瞄准了 Midjourney 的主要优势之一:速度。Midjourney 以快速的生成时间而闻名,这使得它在迭代创作过程中广受欢迎。如果 Flux 能够在保持质量的同时达到或超过这一速度,那么这可能是一个重要的卖点。

易用性和易用性

Midjourney 之所以受欢迎,部分原因在于其用户友好的界面和与 Discord 的集成。Flux 较新,可能需要时间来开发类似的可访问界面。然而,FLUX.1 [schnell] 和 [dev] 模型的开源性质可能会带来广泛的社区开发工具和集成,在灵活性和定制选项方面可能超越 Midjourney。

技术能力

Flux 的先进架构和更大的模型尺寸表明,它在理解复杂提示和生成复杂细节方面可能具有更强大的原始能力。流匹配方法和混合架构可以让 Flux 处理更广泛的任务并生成更多样化的输出。

道德考虑和偏见缓解

Flux 和 Midjourney 都面临着解决人工智能生成图像中的道德问题的挑战,例如偏见、错误信息和版权问题。Black Forest Labs 强调透明度,并致力于让模型广泛普及,这可能会带来更强有力的社区监督和这些领域的更快改进。

七、 代码实现和部署

使用 Flux 和扩散器

使用Hugging Face Diffusers 库,可以轻松将 Flux 模型集成到现有工作流程中。以下是使用 FLUX.1 [dev] 或 FLUX.1 [schnell] 与 Diffusers 的分步指南:

  1. 首先,安装或升级 Diffusers 库:
pip install git+https://github.com/huggingface/diffusers.git

  1. 然后,可以使用 FluxPipeline to run the model:
import torch
from diffusers import FluxPipeline
# Load the model
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16)
# Enable CPU offloading to save VRAM (optional)
pipe.enable_model_cpu_offload()
# Generate an image
prompt = "A cat holding a sign that says hello world"
image = pipe(
    prompt,
    height=1024,
    width=1024,
    guidance_scale=3.5,
    output_type="pil",
    num_inference_steps=50,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(0)
).images[0]
# Save the generated image
image.save("flux-dev.png")

此代码片段演示了如何加载 FLUX.1 [dev] 模型,从文本提示生成图像并保存结果。

使用 LitServe 将 Flux 作为 API 部署

对于那些希望将 Flux 部署为可扩展 API 服务的用户,Black Forest Labs 提供了一个使用高性能推理引擎 LitServe 的示例。以下是部署过程的细分:

定义模型服务器:
from io import BytesIO
from fastapi import Response
import torch
import time
import litserve as ls
from optimum.quanto import freeze, qfloat8, quantize
from diffusers import FlowMatchEulerDiscreteScheduler, AutoencoderKL
from diffusers.models.transformers.transformer_flux import FluxTransformer2DModel
from diffusers.pipelines.flux.pipeline_flux import FluxPipeline
from transformers import CLIPTextModel, CLIPTokenizer, T5EncoderModel, T5TokenizerFast
class FluxLitAPI(ls.LitAPI):
    def setup(self, device):
        # Load model components
        scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="scheduler")
        text_encoder = CLIPTextModel.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
        tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
        text_encoder_2 = T5EncoderModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="text_encoder_2", torch_dtype=torch.bfloat16)
        tokenizer_2 = T5TokenizerFast.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="tokenizer_2", torch_dtype=torch.bfloat16)
        vae = AutoencoderKL.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="vae", torch_dtype=torch.bfloat16)
        transformer = FluxTransformer2DModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="transformer", torch_dtype=torch.bfloat16)
        # Quantize to 8-bit to fit on an L4 GPU
        quantize(transformer, weights=qfloat8)
        freeze(transformer)
        quantize(text_encoder_2, weights=qfloat8)
        freeze(text_encoder_2)
        # Initialize the Flux pipeline
        self.pipe = FluxPipeline(
            scheduler=scheduler,
            text_encoder=text_encoder,
            tokenizer=tokenizer,
            text_encoder_2=None,
            tokenizer_2=tokenizer_2,
            vae=vae,
            transformer=None,
        )
        self.pipe.text_encoder_2 = text_encoder_2
        self.pipe.transformer = transformer
        self.pipe.enable_model_cpu_offload()
    def decode_request(self, request):
        return request["prompt"]
    def predict(self, prompt):
        image = self.pipe(
            prompt=prompt, 
            width=1024,
            height=1024,
            num_inference_steps=4, 
            generator=torch.Generator().manual_seed(int(time.time())),
            guidance_scale=3.5,
        ).images[0]
        return image
    def encode_response(self, image):
        buffered = BytesIO()
        image.save(buffered, format="PNG")
        return Response(content=buffered.getvalue(), headers={"Content-Type": "image/png"})
# Start the server
if __name__ == "__main__":
    api = FluxLitAPI()
    server = ls.LitServer(api, timeout=False)
    server.run(port=8000)

此代码为 Flux 设置了 LitServe API,包括模型加载、请求处理、图像生成和响应编码。

启动服务器:
python server.py
使用模型 API:

可以使用简单的客户端脚本测试 API:

import requests
import json
url = "http://localhost:8000/predict"
prompt = "a robot sitting in a chair painting a picture on an easel of a futuristic cityscape, pop art"
response = requests.post(url, json={"prompt": prompt})
with open("generated_image.png", "wb") as f:
    f.write(response.content)
print("Image generated and saved as generated_image.png")

部署的主要特点

  1. 无服务器架构:本 LitServe setup allows for scalable, serverless deployment that can scale to zero when not in use.
  2. 私有API:您可以在自己的基础架构上将 Flux 作为私有 API 部署。
  3. 多GPU支持:该设置旨在跨多个GPU有效工作。
  4. 量化:代码演示了如何将模型量化为 8 位精度,使其能够在 NVIDIA L4 GPU 等性能较弱的硬件上运行。
  5. CPU 卸载:该enable_model_cpu_offload()方法用于在不使用时将模型的部分内容卸载到 CPU 来节省 GPU 内存。

八、Flux 的实际应用

Flux 的多功能性和强大功能为各个行业带来了广泛的潜在应用:

  1. 创意产业:平面设计师、插画师和艺术家可以使用 Flux 快速生成概念艺术、情绪板和视觉灵感。
  2. 市场营销和广告:营销人员可以以前所未有的速度和质量为广告活动、社交媒体内容和产品模型创建自定义视觉效果。
  3. 游戏开发:游戏设计师可以使用 Flux 快速制作环境、角色和资产的原型,从而简化前期制作流程。
  4. 建筑与室内设计: Architects and designers can generate realistic visualizations of spaces and structures based on textual descriptions.
  5. 教育:教育工作者可以创建自定义的视觉辅助工具和插图来增强学习材料并使复杂的概念更容易理解。
  6. 电影和动画:故事板艺术家和动画师可以使用 Flux 快速可视化场景和角色,从而加速预可视化过程。

九、Flux 和文本到图像生成的未来

Black Forest Labs 明确表示,Flux 只是他们在生成 AI 领域雄心壮志的开始。他们已宣布计划开发具有竞争力的生成文本到视频系统,承诺以高清晰度和前所未有的速度提供精确的创作和编辑功能。

该路线图表明,Flux 不仅仅是一个独立的产品,而且是更广泛的生成式 AI 工具生态系统的一部分。随着技术的发展,我们可以期待看到:

  1. 改进集成:文本到图像和文本到视频生成之间的无缝工作流程,允许创建更复杂和动态的内容。
  2. 增强定制:对生成的内容进行更细粒度的控制,可能通过先进的提示工程技术或直观的用户界面来实现。
  3. 实时生成:随着 FLUX.1 [schnell] 等模型的不断改进,我们可能会看到实时图像生成功能,这可能会彻底改变实时内容创作和交互式媒体。
  4. 跨模式生成:以有凝聚力和综合的方式生成和处理跨多种模式(文本、图像、视频、音频)的内容的能力。
  5. 道德人工智能开发: Continued focus on developing AI models that are not only powerful but also responsible and ethically sound.

十、 结论:Flux 比 Midjourney 更好吗?

Flux 是否比 Midjourney“更好”这个问题很难用简单的“是”或“否”来回答。这两种模型都代表了文本到图像生成技术的前沿,各自都有自己的优势和独特之处。

Flux 具有先进的架构和对及时遵守的重视,在某些情况下可以提供更精确的控制和更高的质量。其开源版本还提供了定制和集成的机会,这对开发人员和研究人员来说非常有价值。

而Midjourney则拥有良好的业绩记录、庞大而活跃的用户群以及许多用户喜爱的独特艺术风格。它与 Discord 的集成和用户友好的界面使其易于各个技术水平的创意人士使用。

最终,“更好”的模型可能取决于具体用例、个人偏好以及每个平台不断发展的功能。显而易见的是,Flux 代表了生成式人工智能领域的重大进步,引入了创新技术并突破了文本到图像合成的极限。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值