AI 工具 101
Black Forest Labs 的 Flux:下一代文本到图像模型。它是否比 Midjourney 更好?
Black Forest Labs,Stable Diffusion 模型的开发团队,发布了 Flux – 一套最先进的模型,承诺重新定义 AI 生成图像的能力。但 Flux 是否真正代表了该领域的飞跃,以及它如何与行业领先者如 Midjourney 相比?让我们深入探讨 Flux 的世界,探索其重塑 AI 生成艺术和媒体未来的潜力。
Black Forest Labs 的诞生
Black Forest Labs 不仅仅是一家 AI 创业公司;它是一家拥有开发基础生成 AI 模型的天才团队。该团队包括 VQGAN、Latent Diffusion 和 Stable Diffusion 模型家族的创造者,这些模型已经风靡 AI 艺术界。
凭借 3100 万美元的种子轮资金,由 Andreessen Horowitz 领投,以及著名天使投资者的支持,Black Forest Labs 已将自己置于生成 AI 研究的前沿。他们的使命明确:开发和推进最先进的生成深度学习模型,用于媒体,如图像和视频,同时推动创造力、效率和多样性的边界。
介绍 Flux 模型家族
Black Forest Labs 推出了 FLUX.1 套件的文本到图像模型,旨在为图像细节、提示遵循、风格多样性和场景复杂性设定新的基准。Flux 家族由三个变体组成,每个变体针对不同的用例和可访问性级别进行了定制:
- FLUX.1 [pro]:旗舰模型,在图像生成中提供顶级性能,具有优越的提示遵循、视觉质量、图像细节和输出多样性。通过 API 提供,针对专业和企业使用进行了定位。
- FLUX.1 [dev]:用于非商业应用的开源、指导蒸馏模型。它旨在实现与专业版类似的质量和提示遵循能力,同时更高效。
- FLUX.1 [schnell]:套件中最快的模型,针对本地开发和个人使用进行了优化。它在 Apache 2.0 许可下公开提供,使其适用于广泛的应用和实验。
我将提供一些独特且富有创意的提示示例,展示 FLUX.1 的功能。这些提示将突出模型在处理文本、复杂组合和具有挑战性的元素(如手)方面的优势。
- 艺术风格混合与文本:“创建一幅文森特·梵高的肖像,以他的标志性风格,但用形成‘星空夜’的草书字体的旋转笔触代替他的胡须。”
- 动态动作场景与文本集成:“一位超级英雄从漫画书页面中突破。动作线和音效应该形成英雄的名字‘FLUX FORCE’的粗体、动态字体。”
- 超现实概念与精确物体放置:“一只猫在窗户阳光下的特写,呈现棕色和白色。焦点集中在眼睛的质地和颜色上,采用自然光线捕捉真实的眼神和深度。”
这些提示旨在挑战 FLUX.1 的文本渲染、复杂场景组合和详细物体创建能力,同时展示其创造独特图像的潜力。
Flux 背后的技术创新
Flux 的令人印象深刻的功能背后是一系列技术创新,这些创新使其与其前身和同时代人区别开来:
大规模的变压器驱动流模型
所有公开的 FLUX.1 模型都基于一种混合架构,该架构将多模态和并行扩散变压器块相结合,扩展到令人印象深刻的 12 亿参数。这代表了与许多现有文本到图像模型相比模型大小和复杂性的显著飞跃。
Flux 模型通过纳入流匹配来改进以前的最先进的扩散模型,流匹配为生成模型提供了更灵活的框架,扩散模型是该更广泛方法中的一个特例。
为了增强模型性能和硬件效率,Black Forest Labs 集成了旋转位置嵌入和并行注意力层。这些技术使模型能够更好地处理图像中的空间关系,并更高效地处理大规模数据。
架构创新
让我们分解一些关键的架构元素,这些元素促成了 Flux 的性能:
- 混合架构:通过组合多模态和并行扩散变压器块,Flux 可以有效地处理文本和视觉信息,从而更好地对齐提示和生成的图像。
- 流匹配:这种方法允许更灵活、更高效地训练生成模型。它提供了一个统一的框架,涵盖扩散模型和其他生成技术,这可能会导致更强大、更通用的图像生成。
- 旋转位置嵌入:这些嵌入帮助模型更好地理解和保持图像中的空间关系,这对于生成连贯和详细的视觉内容至关重要。
- 并行注意力层:这种技术允许更高效地处理注意力机制,这对于理解文本提示和生成图像中的元素之间的关系至关重要。
- 扩展到 12 亿参数:模型的庞大规模使其能够捕获和合成更复杂的模式和关系,可能会导致更高质量和更多样化的输出。
基准测试 Flux:图像合成的新标准
Black Forest Labs 声称 FLUX.1 在图像合成方面设定了新的标准,超越了 Midjourney v6.0、DALL·E 3(HD)和 SD3-Ultra 等流行模型,在几个关键方面:
- 视觉质量:Flux 旨在生成具有更高保真度、更真实的细节和更好的整体美观的图像。
- 提示遵循:该模型旨在更密切地遵循给定的文本提示,生成更准确地反映用户意图的图像,尤其是对于复杂或细致的请求。
- 大小/长宽比可变性:Flux 支持从 0.1 到 2.0 百万像素的多种长宽比和分辨率,提供了多种用例的灵活性。
- 排版:该模型在图像中生成和渲染文本方面显示出改进的能力,这是许多文本到图像模型的常见挑战。
- 输出多样性:Flux 专门针对预训练的整个输出多样性进行了微调,提供了更广泛的创作可能性。
Flux vs. 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 都面临着在 AI 生成图像中解决道德问题的挑战,例如偏见、虚假信息和版权问题。Black Forest Labs 对透明度的强调以及他们使模型广泛可用的承诺可能会导致这些领域更强大的社区监督和更快的改进。
代码实现和部署
使用 Diffusers
Flux 模型可以使用 Hugging Face Diffusers 库轻松集成到现有的工作流中。以下是使用 FLUX.1 [dev] 或 FLUX.1 [schnell] 与 Diffusers 的分步指南:
- 首先,安装或升级 Diffusers 库:
!pip install git+https://github.com/huggingface/diffusers.git
- 然后,您可以使用
FluxPipeline运行模型:
import torch
from diffusers import FluxPipeline
# 加载模型
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16)
# 启用 CPU 卸载以节省 VRAM(可选)
pipe.enable_model_cpu_offload()
# 生成图像
prompt = "一只猫拿着一块写着你好世界的牌子"
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]
# 保存生成的图像
image.save("flux-dev.png")
这段代码演示了如何加载 FLUX.1 [dev] 模型,从文本提示生成图像,并保存结果。
使用 LitServe 部署 Flux 作为 API
对于那些希望将 Flux 作为可扩展的 API 服务进行部署的人,Black Forest Labs 提供了一个使用 LitServe 的示例,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):
# 加载模型组件
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)
# 将模型量化为 8 位以适应 L4 GPU
quantize(transformer, weights=qfloat8)
freeze(transformer)
quantize(text_encoder_2, weights=qfloat8)
freeze(text_encoder_2)
# 初始化 Flux 流水线
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"})
# 启动服务器
if __name__ == "__main__":
api = FluxLitAPI()
server = ls.LitServer(api, timeout=False)
server.run(port=8000)
这段代码设置了一个 LitServe API 用于 Flux,包括模型加载、请求处理、图像生成和响应编码。
启动服务器:
python server.py
使用模型 API:
您可以使用一个简单的客户端脚本来测试 API:
import requests
import json
url = "http://localhost:8000/predict"
prompt = "一个机器人坐在椅子上,在画架上画一幅未来城市风景的画,采用流行艺术风格"
response = requests.post(url, json={"prompt": prompt})
with open("generated_image.png", "wb") as f:
f.write(response.content)
print("图像已生成并保存为 generated_image.png")
部署的关键功能
- 无服务器架构:LitServe 设置允许可扩展的无服务器部署,可以在不使用时扩展到零。
- 私有 API:您可以将 Flux 作为私有 API 部署在自己的基础设施上。
- 多 GPU 支持:设置旨在跨多个 GPU 高效工作。
- 量化:代码演示了如何将模型量化为 8 位精度,以适应较弱的硬件,如 NVIDIA L4 GPU。
- CPU 卸载:
enable_model_cpu_offload()方法用于通过将模型的某些部分卸载到 CPU 来节省 GPU 内存,当不需要时。
Flux 的实际应用
Flux 的多功能性和强大功能开启了广泛的潜在应用领域,涵盖各个行业:
- 创意产业:平面设计师、插画家和艺术家可以使用 Flux 快速生成概念艺术、情绪板和视觉灵感。
- 营销和广告:营销人员可以创建自定义的视觉效果用于活动、社交媒体内容和产品模拟,速度和质量都有所提高。
- 游戏开发:游戏设计师可以使用 Flux 快速原型环境、角色和资产,从而简化了预生产过程。
- 建筑和室内设计:建筑师和设计师可以根据文本描述生成空间和结构的逼真视觉效果。
- 教育:教育工作者可以创建自定义的视觉辅助工具和插图来增强学习材料,使复杂的概念更容易理解。
- 电影和动画:分镜头艺术家和动画师可以使用 Flux 快速可视化场景和角色,从而加快预可视化过程。
Flux 和文本到图像生成的未来
Black Forest Labs 已明确表示,Flux 仅仅是他们在生成 AI 空间的雄心壮志的开始。他们宣布了开发具有精确创建和编辑功能的竞争性生成文本到视频系统的计划,具有高分辨率和前所未有的速度。
这条路线图表明,Flux 不仅仅是一个独立的产品,而是更广泛的生成 AI 工具生态系统的一部分。随着技术的发展,我们可以期待看到:
- 改进集成:文本到图像和文本到视频生成之间的无缝工作流程,使得更复杂和动态的内容创作成为可能。
- 增强自定义:对生成内容的更精细控制,可能是通过高级提示工程技术或直观的用户界面实现的。
- 实时生成:随着像 FLUX.1 [schnell] 这样的模型的改进,我们可能会看到实时图像生成的能力,这可能会改变实时内容创作和交互媒体。
- 跨模态生成:在文本、图像、视频、音频等多个模态中生成和操作内容的能力,以一种连贯和集成的方式进行。
- 负责任的 AI 开发:继续专注于开发不仅强大而且负责任和道德的 AI 模型。
结论:Flux 是否比 Midjourney 更好?
Flux 是否“更好”于 Midjourney 的问题并不是一个简单的“是”或“否”问题。两种模型都代表了文本到图像生成技术的前沿,每种都有其独特的优势和特点。
Flux凭借其先进的架构和对提示遵循的强调,可能在某些场景中提供更精确的控制和更高的质量。其开源变体还提供了定制和集成的机会,这对于开发人员和研究人员来说可能非常有价值。
另一方面,Midjourney拥有成熟的记录、庞大的活跃用户群体和独特的艺术风格,这些都让很多用户喜爱。其与Discord的集成和用户友好的界面使其对所有技术水平的创意人士都具有高度的可访问性。
最终,“更好的”模型可能取决于具体的用例、个人偏好以及每个平台不断演变的能力。很明显,Flux代表了该领域的一个重大飞跃,引入了创新技术,并推动了文本到图像合成的可能性边界。


















