FLUX.1 Fill 本地 Inpainting/Outpainting 快速上手:黑白 mask 规则与一条命令出图指南
2026/9/14 1:26:04 网站建设 项目流程

FLUX.1 Fill 本地 Inpainting/Outpainting 快速上手:黑白 mask 规则与一条命令出图指南

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

用 FLUX.1 Fill [dev] 做图像局部重绘(inpainting)或向四周扩展画面(outpainting)时,唯一要牢记的核心规则是:mask 上白色区域才会被模型重新生成,黑色区域原样保留。本文带你从零搭好环境、画对黑白 mask,再用一条命令或交互会话跑出第一张合格结果图,并附上常见报错与验收清单。

先记住最反直觉的一条:白色才是"画给我看"

很多 inpainting 工具用黑色标记"要改的地方",FLUX.1 Fill 恰好相反。打开 src/flux/sampling.py 的prepare_fill函数,底图会被这样处理:

mask = torch.from_numpy(mask).float() / 255.0 ... img_cond = img_cond * (1 - mask)

mask 按/255.0归一化后,底图执行img_cond * (1 - mask)

  • 白色(255)→(1 - 1) = 0→ 原图被清零,交给模型按 prompt 生成;
  • 黑色(0)→(1 - 0) = 1→ 原图像素原样保留。

口诀:想重绘/扩展的地方涂白,想保留的地方涂黑。

这是仓库自带的示例 mask(对应底图assets/cup.png),纯黑白两色、无灰度过渡。

两条硬约束,跑之前先检查

约束说明违反时终端提示
宽高均为 32 的整数倍底图和 mask 各自都要满足Image dimensions must be divisible by 32, got {width}x{height}
mask 与底图尺寸完全一致像素级对齐Mask dimensions must match conditioning image, ...

交互模式(--loop)会对每次输入做上述校验,不通过就拒绝并提示重新输入,不会静默跑偏。

环境三步走:venv + 自动拉权重

安装与激活

按 README.md 的本地安装步骤,使用 Python 3.10 创建虚拟环境:

cd $HOME/flux python3.10 -m venv .venv source .venv/bin/activate pip install -e ".[all]"

权重从哪来

不需要手动下载。启动任一 demo(包括python -m flux fill)时,权重会自动从 HuggingFace 仓库black-forest-labs/FLUX.1-Fill-dev拉到本地checkpoints/目录(见 docs/fill.md)。

如果你已有本地权重,可以用环境变量直接指向,跳过下载:

export FLUX_MODEL=<你的模型权重路径> export FLUX_AE=<你的 autoencoder 路径>

<你的...路径>是占位符,替换成你机器上的实际文件路径即可。

最小可运行命令:不改参数也能出图

默认示例直接跑

cli_fill.py 中img_cond_pathimg_mask_path的默认值就是仓库自带示例,所以这条命令什么都不传也能跑:

python -m flux fill

此时默认 prompt 为"a white paper cup",输出写入output/img_0.jpg

换成你自己的图

python -m flux fill \ --prompt "a ceramic coffee mug on a wooden table" \ --img_cond_path /path/to/your/conditioning.png \ --img_mask_path /path/to/your/mask.png
  • --prompt:描述"白色区域应该长什么样",模型只在 mask 白色区域生成,黑色区域不受 prompt 影响。
  • --img_cond_path/--img_mask_path:底图与 mask,格式支持 jpg/jpeg/png/webp,尺寸要求见上文。

常用参数与默认值速查

以下默认值均取自 cli_fill.py 中main()的函数签名:

参数默认值说明
--prompt"a white paper cup"采样提示词
--num_steps50采样步数,越多细节越好但越慢
--guidance30.0guidance 蒸馏强度
--seed不设置则随机固定种子可复现结果
--output_diroutput输出目录
--offloadFalse显存不足时把 T5/CLIP/AE 在 CPU 与 GPU 间搬运
--add_sampling_metadataTrue是否把 prompt 写入图片 Exif
--track_usageFalse商用统计(需配合BFL_API_KEY

交互模式:反复试 prompt / 种子 / 步数

启动--loop会话

python -m flux fill --loop

会话按prompt → 底图路径 → mask 路径的顺序依次提示,输入留空即复用上一次的值,省去重复粘贴。

斜杠命令速查

在 prompt 输入行可以直接敲斜杠命令(完整文案见 cli_fill.py 中的usage):

命令作用
/s <seed>设置下一次采样的随机种子
/g <guidance>设置 guidance 值
/n <steps>设置采样步数
/h显示帮助
/q退出会话

提示:先固定一个seed,再改--prompt--num_steps,这样每次对比都是"只改了一个变量",调参更直观。

不想手写 mask?Streamlit demo

streamlit run demo_st_fill.py

demo_st_fill.py 里可以直接在画布上涂抹生成黑白 mask,也内置了 outpainting 快捷方式:拖动"Zoom Out Amount (All Sides)"滑杆(范围 1.0–3.0,步长 0.1)及各边单独的 zoom 滑杆,程序通过add_border_and_mask自动生成带黑边的放大底图,并把新边框区域在 mask 中标为白色。界面提示也写明了语义:Mask (white areas will be generated)

结果验收:图去哪了、为什么没图

正常产物长什么样

采样结束后终端打印Done in <秒数>s(该耗时是你本机的实际运行结果,不要当作固定性能指标)。随后进入保存逻辑(见 util.py 的save_image):

  • 终端打印Saving output/img_{idx}.jpg,文件写入output/(或你指定的--output_dir);
  • {idx}从 0 开始递增,已有文件时自动取最大编号 +1;
  • 图片 Exif 中MakeBlack Forest LabsModelflux-dev-fill
  • 默认还会把 prompt 写入ImageDescription(可用--add_sampling_metadata False关闭)。

打开output/img_0.jpg核对:mask 白色区域应按 prompt 重新生成,黑色区域保持原图内容。

没看到新文件的两种原因

  1. NSFW 过滤拦截保存前有一道 NSFW 分类器(Falconsai/nsfw_image_detection,阈值 0.85,见 util.py)。若判定为 NSFW,图片不会写入磁盘,终端只打印:

    Your generated image may contain NSFW content.

    如果你跑完只看到这句而output/里没有新文件,就是这个原因——换一个更中性的 prompt 即可。

  2. 输出目录写错确认--output_dir指向的路径有写权限,且没有拼写错误。

许可红线与商用路径

  • FLUX.1 Fill [dev]权重遵循 FLUX.1-dev Non-Commercial License,仅限非商业用途
  • 若需商用,按 README.md 说明,可通过 BFL 获得商业授权,并在 CLI 中开启--track_usage,运行前设置BFL_API_KEY环境变量以自动统计用量:
    export BFL_API_KEY="your_api_key_here" python -m flux fill --track_usage ...
  • 更深入的模型背景可参考 docs/fill.md 与 model_cards/FLUX.1-dev.md。

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

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

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

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

立即咨询