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

news2024/12/26 21:47:45

一、前言

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 代表了生成式人工智能领域的重大进步,引入了创新技术并突破了文本到图像合成的极限。

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

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

相关文章

【Kubernetes】Service 概念与实战

Service 概念与实战 1.通过 Service 向外部暴露 Pod2.Service 的多端口设置3.集群内部的 DNS 服务4.无头 Service 在 Kubernetes 中部署的应用可能对应一个或者多个 Pod,而每个 Pod 又具有独立的 IP 地址。Service(服务)能够为一组功能相同的…

DI (providedIn: XXXModule)

angular版本为^17.3.0; 依赖注入Module 代码结构如下: 点击后为 demo2 works!demo2 providedIn Demo1Module depdemo2 works!demo2 providedIn Demo1Module 打包后大小为 改写为 demo2去掉 imports: [Demo1Module], 打包后大小为 结果比较&#…

DAMA学习笔记(十五)-数据管理组织与角色期望

1.引言 随着数据领域的快速发展,组织需要改进管理和治理数据的方式。当前,大多数组织正面临着越来越多的数据。这些数据格式多样、数量 庞大,并来源于不同的渠道。由于数据数量和种类的增加,加剧了数据 管理的复杂性。与此同时&am…

shiro注解不起作用:shiro进行权限校验时,@RequireRoles(“admin“)注解不起作用的解决方法

今天在写前后端分离项目时,用jwt加shiro进行登录权限校验时,RequireRoles("admin")注解不起作用,记录一下。 前提:数据库里面的user_type代表用户类型 :0普通用户 ;1:专家&#xff1…

Introduction to Snapdragon Profiler (Snapdragon 分析器)

Introduction to Snapdragon Profiler {Snapdragon 分析器} 1. Snapdragon Profiler2. Release Notes3. Tools and resourcesReferences Snapdragon Profiler (骁龙分析器) https://www.qualcomm.com/developer/software/snapdragon-profiler Snapdragon Profiler Documentati…

HAProxy基本配置及参数实操

目录 ​编辑什么是负载均衡 为什么用负载均衡 四层和七层的区别 实验环境 实验步骤 webserver上安装nginx 启动nginx 安装haproxy 编辑配置文件 多进程 多线程 SORRY SERVER 访问重定向 maxconne最大可承受连接 socat 工具 常用示例 ha p r ox y 的 算 法 静 …

思科静态路由配置1

#路由协议实现# #任务一静态路由配置1# #1配置Switch-A的名称及其接口IP地址 Switch>enable Switch(config)#hostname Switch-A Switch-A(config)#ip routing Switch-A(config)#int f0/1 Switch-A(config-if)#no switchport Switch-A(config-if)#ip add 192.168.10…

leetcode日记(72)最大矩形

依旧是看了答案才知道大概方法…太难想到了 和上一道题思路相似!可以直接调用上题的函数,只不过调用前的准备非常难想到,就是建造形状相同的矩阵,第i行j列的元素是i行中j列前相邻的“1”的个数。 class Solution { public:int m…

RS®ZN-Z8x 开关矩阵

R&SZN-Z8x 开关矩阵 专为多端口矢量网络分析仪测量而设计 R&SZN-Z8x 开关矩阵经过优化设计,专门用于罗德与施瓦茨的矢量网络分析仪。这款经济高效的多方位解决方案可用于多端口设备或多个设备的简单和复杂的测量任务。开关矩阵支持宽频率范围&#xff0…

北斗科技助力运动健身:开启智能健身新篇章

近年来,随着科技的迅猛发展,智能化设备已逐渐渗透到健身领域,为运动健身爱好者带来了无尽的利好。作为中国自主研发的全球卫星导航系统,北斗定位技术凭借其高精度和可靠性,正在成为运动健身领域的新宠。本文将深入探讨…

Git相关教程

版本控制 学习目标 理解版本控制的必要性了解常用的版本控制方式熟悉 Git 的使用方法 什么是版本控制 可以把一个版本控制系统理解为一个“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照(称之为…

Vue3 el-table里input设置为必填

Vue3 el-table里input设置为必填 Vue3 el-table里input设置为必填页面效果实现代码 Vue3 el-table里input设置为必填 页面效果 实现代码 <template><el-form :model"tableData" ref"formRef"><el-table :data"tableData" style…

MPU6050详细介绍

一、MPU6050介绍 MPU6050是由三个陀螺仪和三个加速度传感器组成的6轴运动处理组件 内部主要结构&#xff1a;陀螺仪、加速度计、数字运动处理器DMP&#xff08;Digital Motion Processor&#xff09; MPU6050有两个IIC接口&#xff0c;第一IIC接口可作为主接口给单片机传输数…

对信/ 对信开源系统+后台+PC+H5 (多圈)

系统商标名称&#xff1a;对信 核心&#xff1a;PHP8.0 CodeIgniter4框架 后台管理&#xff1a;PHP&#xff0c;html&#xff0c;jquery&#xff0c;迅锐&#xff0c;css3 PAI接口&#xff1a;php生成json格式 电脑PC端&#xff1a;html&#xff0c;jquery&#xff0c;css…

数据结构 之 常见的树

文章目录 树的概念术语&#xff08;以二叉树举例&#xff09; 二叉树遍历满二叉树完全二叉树二叉搜索树&#xff08;有序二叉树&#xff09; 哈夫曼树术语补充WPL的比较&#xff08;直接上图&#xff09;哈夫曼树的构建过程哈夫曼编码 非平衡树 & 平衡树(avl树)非平衡树转平…

无人机之飞行过程天气影响篇

在无人机飞行中&#xff0c;风速、雨雪等天气条件是飞手必须考虑的重要因素。这些天气条件不仅会影响飞行的稳定性&#xff0c;还可能带来安全隐患。以下是风速及雨雪对无人机飞行的影响&#xff0c;以及飞行中的注意事项&#xff1a; 一、风速对无人机飞行的影响 风力较大时&…

写歌准备:设计歌曲的段落结构的方法,记录和分享一些想法与感悟

我们都知道歌曲的三大元素&#xff1a;旋律、和声、节奏。但若要正式完成一首完整的作品&#xff0c;还要加上有计划的编曲。就像画画一样&#xff0c;除了有创造主题&#xff0c;还要懂得构图。 编曲其中一个重要步骤就是规划歌曲的「段落」。职业编曲/作曲人甚至会基于商业考…

基于NXP IMX8M + FPGA体外诊断POCT设备

体外诊断POCT设备 随着人口老龄化和对健康的重视程度不断提高&#xff0c;POCT&#xff08;即时检验&#xff09;作为IVD&#xff08;体外诊断&#xff09;的细分领域&#xff0c;市场规模持续增加。POCT&#xff08;point-of-care testing&#xff09;即时检验&#xff0c;指…

ReactNative进阶(五十四):真机运行报错 “No bundle URL present“解决方案

文章目录 一、前言二、问题分析三、走近 main.jsbundle 一、前言 rn项目热部署时iphone设备弹出如下错误弹窗&#xff1a;No bundle URL present 遇到以上问题&#xff0c;需要手动生成ios下的main.jsbundle文件。但是使用另一台MacBook Pro 就没有类似问题。 二、问题分析 …

14.2 Pandas数据处理

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…