☰
FLUX.1 Kontext 本地图像编辑:从零到 TensorRT 加速实战
2026/9/25 3:09:37 网站建设 项目流程

FLUX.1 Kontext 本地图像编辑:从零到 TensorRT 加速实战

【免费下载链接】fluxOfficial inference repo for FLUX.1 models项目地址: https://gitcode.com/GitHub_Trending/flux49/flux

场景速览:把图里的 Logo 换成品牌文字

任务很具体:给你一张产品图,用一条指令"replace the logo with the text 'Black Forest Labs'"把它换成品牌字样。FLUX.1 Kontext [dev]就是为这类指令式图像编辑而生的 12B 参数 rectified flow transformer——它不微调就能引用图中的角色、物体与风格,连续编辑同一张图几乎不漂移。它与 img2img"加噪再重生成"的做法不同:原图被编码后直接作为上下文拼进 transformer 输入,模型"看着原图"去噪出新图,这也是它能保持稳定性的原因。输入支持 jpg/jpeg/png/webp;它做的是指令级改动,不是像素级精确替换。下文依次讲环境与权重、最小可运行命令、交互编辑、参数调优、机制拆解、TensorRT 加速与安全合规。

环境与权重就位

安装依赖

仓库要求 Python >= 3.10(见 pyproject.toml),标准安装只需四步:

cd $HOME && git clone https://gitcode.com/GitHub_Trending/flux49/flux cd $HOME/flux python3.10 -m venv .venv source .venv/bin/activate
pip install -e ".[all]"

[all]可选依赖(含 torch 2.6.0、gradio、streamlit)在 pyproject.toml 中声明。需要 TensorRT 时按后文说明改用[tensorrt]。

获取权重

自动下载:启动任意 demo 时,权重会从 HuggingFace 拉到checkpoints/下按 repo 命名的子目录,逻辑见 util.py 的get_checkpoint_path。FLUX.1-Kontext-dev是 gated 仓库,需先登录 HuggingFace 并接受许可条款,否则下载会失败并给出认证提示。

手动放置:把flux1-kontext-dev.safetensors与ae.safetensors放进checkpoints/对应目录,或直接用环境变量指到已有文件,免去下载:

export FLUX_MODEL=<your model path here> export FLUX_AE=<your autoencoder path here>

环境变量速查

常用变量与是否必需见下表:

变量名作用是否必需
HF_TOKENHuggingFace 认证,gated 仓库下载用首次自动下载必需
FLUX_MODEL手动指定模型权重路径否
FLUX_AE手动指定自编码器路径否
BFL_API_KEY商用许可的用量上报密钥商用时必需
TRT_ENGINE_DIRTensorRT engine 缓存目录否
TRT_T5_PRECISIONT5 的 TRT 精度,默认 bf16否

第一次生成:最小可运行命令

改两个参数就能跑:输入图路径与编辑指令。

python -m flux kontext \ --img_cond_path <your_image.png> \ --prompt "replace the logo with the text 'Black Forest Labs'" \ --num_steps 30 --aspect_ratio "16:9" --guidance 2.5 --seed 1

产物是output/img_0.jpg:JPEG quality 95,带 EXIF 与隐形水印,文件名自动续号。默认参数与推荐起点:

  • --num_steps 30:文档与源码给定的推荐步数;
  • --guidance 2.5:模型经 guidance distillation 训练,该值即起点;
  • 不传--aspect_ratio时分辨率跟随输入图:在 17 种训练分辨率里选最接近输入宽高比的一档。

交互工作流:连续编辑与斜杠命令

反复试验时用--loop,比每次拼命令省事:

python -m flux kontext --loop

每轮先提示输入指令(支持斜杠命令),再提示输入图片路径;直接回车分别沿用上一轮的 prompt 与图片。可调参数汇总如下:

命令参数说明
/ar<w>:<h>或auto设输出宽高比,auto跟随输入图
/h<height>或auto指定输出高度,自动对齐到 16 的倍数
/g<guidance>设引导强度
/s<seed>设随机种子
/n<steps>设采样步数
/q无退出会话
/h无打印帮助

典型节奏:先给一张目标图,然后每轮只换指令;想换图再输路径,想调参插一条斜杠命令。实现见 cli_kontext.py 的parse_prompt与 parse_img_cond_path。

参数调优:影响效果的关键旋钮

完整参数清单见 cli_kontext.py 的main()签名;对效果影响最大的五个参数如下:

参数默认值调大/调小效果推荐区间
--num_steps30大则细节更稳,小则快但易糊20-40
--guidance2.5大则更贴指令、易过饱和2.0-3.5
--aspect_ratio跟随输入改变输出比例,面积约 1MP16:9/1:1等
--seed随机固定后结果可复现调试时固定
--offload关省显存,速度慢一档显存 < 24GB 时开

三档推荐组合:轻度改动(换文字、调颜色)用 20 步 + guidance 2.0;中度重构(改元素、换局部对象)用 30 步 + guidance 2.5,即默认值;大幅替换(换背景、改姿态)用 40 步 + guidance 3.0,步数不够时先加步数而不是先抬 guidance。

上图为 FLUX.1 [dev] 主干的文生图样例,Kontext 复用了同一 DiT 主干(in_channels=64、depth=19、depth_single_blocks=38),编辑能力来自输入序列的组织方式而非额外结构。

原理速览:输入图如何成为编辑条件

核心流程在 prepare_kontext:

  1. 输入图按宽高比从 17 种推荐分辨率中选最接近的一档,LANCZOS 重采样;
  2. 过自编码器得到 16 通道 latent,按 2x2 patch 打包成 token 序列;
  3. 生成位置编码img_cond_seq_ids,首维置 1,与目标图(首维 0)区分;
  4. 在目标分辨率上生成初始噪声img,编码 prompt 得到 T5/CLIP 特征;
  5. denoise 每步把原图 token 拼到噪声序列前面送入 transformer,只取前 n 个位置的预测更新噪声。

去噪结束后unpack()还原像素张量,ae.decode()在 bfloat16 autocast 下解码。时间步偏移mu按序列长度在 0.5 与 1.15 间线性插值(见 sampling.py),这解释了不同分辨率下推荐步数略有差异。

进阶加速与安全合规

推理加速:TensorRT 引擎

python -m flux kontext --loop --trt --trt_transformer_precision <precision>

Transformer 可选精度及取舍见下表(T5 侧另有TRT_T5_PRECISION,默认 bf16,支持 bf16/fp8,见 trt_manager.py):

精度适用场景显存要求
bf16默认,质量基线最高
fp8速度/显存平衡,新架构优先约为 bf16 一半
fp4_sdvd32追求极限速度最低

前提:按 README 的 TensorRT 章节安装 NVIDIA PyTorch 容器并pip install -e ".[tensorrt]" --extra-index-url https://pypi.nvidia.com。ONNX 模型来自 gated 仓库black-forest-labs/FLUX.1-Kontext-dev-onnx,同样需要 HuggingFace 认证;engine 缓存默认checkpoints/trt_engines,可用TRT_ENGINE_DIR覆盖,动态形状默认开启以便不同宽高比复用。

内容安全与水印

CLI 在输入 prompt、输入图、输出图三个环节都接了过滤:基于mistral-community/pixtral-12b判断版权角色、商标与公众人物,叠加Falconsai/nsfw_image_detection分类器(阈值 0.85),实现见 content_filters.py。输出图嵌入 48 位隐形水印,并写入 EXIF:Software=AI generated;img2img;flux、Model=flux-dev-kontext、ImageDescription=<prompt>,由 util.py 的save_image落盘。

许可与商用

权重遵循 FLUX.1-dev 非商用许可。商用需向 Black Forest Labs 取得商业许可并开启用量上报:

export BFL_API_KEY="<your_api_key_here>"

随后在生成命令后加--track_usage,每次生成数会 POST 到 BFL 许可 API,机制见 util.py 的track_usage_via_api。

常见问题

下载卡在 gated 仓库

提示gated repository说明还没通过 HuggingFace 认证。先在 HuggingFace 上接受FLUX.1-Kontext-dev的许可条款,然后:

export HF_TOKEN="<your_hf_token>"

或直接huggingface-cli login。

显存不够

加--offload,T5/CLIP/自编码器按需在 CPU/GPU 间搬运,代价是速度下降;12B 模型全精度常驻至少需要 24GB 级显存,更低的显存建议直接走 TensorRT 的 fp8 路径。

输出图模糊

多半是分辨率档位问题:Kontext 在 17 种特定分辨率上训练,显式传--aspect_ratio时按约 1MP 面积计算;想恢复跟随输入图的比例,交互模式里用/ar auto。

TensorRT 首次启动很慢

首次运行要构建三个模块(CLIP/Transformer/T5)的 engine,属正常耗时;构建产物缓存在checkpoints/trt_engines,同配置下后续启动直接加载。

交互模式怎么退出

提示符下输入/q即退出;输入图片阶段直接回车表示沿用上一轮图片,不是退出。

参考资料

  • 官方使用文档:docs/image-editing.md
  • 模型卡片与风险说明:model_cards/FLUX.1-kontext-dev.md
  • CLI 入口与参数:src/flux/cli_kontext.py
  • 采样与条件构造:src/flux/sampling.py
  • 模型配置与分辨率表:src/flux/util.py
  • TensorRT 管理:src/flux/trt/trt_manager.py
  • 许可文本:model_licenses/LICENSE-FLUX1-dev
  • 模型权重:HuggingFace 仓库black-forest-labs/FLUX.1-Kontext-dev
  • 论文:arXiv:2506.15742(FLUX.1 Kontext, flow matching)

【免费下载链接】fluxOfficial inference repo for FLUX.1 models项目地址: https://gitcode.com/GitHub_Trending/flux49/flux

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询