一条命令跑通 FLUX.1 Fill Inpainting / Outpainting:黑白 mask 规则、交互调参与空输出避坑
2026/9/14 17:03:22 网站建设 项目流程

一条命令跑通 FLUX.1 Fill Inpainting / Outpainting:黑白 mask 规则、交互调参与空输出避坑

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

你手里有一张底图,想只重绘其中一块局部(inpainting),或者把画布向四周扩出一圈(outpainting),FLUX.1 Fill [dev] 官方仓库把整条链路都给了:底图加一张黑白 mask,一条命令或交互会话就能出图。这篇按场景、mask 原理、最小出图路径、进阶、排障的顺序讲完。

🎯 它能在你的图上做什么

Fill 系列就干两件事:inpainting 时给底图配一张 mask,模型只重绘 mask 的白色区域,其余像素不动;outpainting 时把画面边缘标白(或在 Streamlit 里一键加黑边),模型就顺着原图往四周补内容。仓库自带一对能直接跑的示例:底图 assets/cup.png 与对应 mask assets/cup_mask.png,第一次跑建议先用这对图把流程走通。

🖼️ mask 为什么必须纯黑白

prepare_fill里 mask 先按 /255.0 归一化,底图随后执行img_cond * (1 - mask)(详见src/flux/sampling.pyprepare_fill)。也就是说 mask 上白色 255 的像素会把底图乘成 0,等于"擦掉"交给模型重新生成;黑色 0 的像素乘 1,原图完整保留。说白了这张 mask 就是你给模型划的禁区:白色是禁区,必须重画;黑色是保护区,不许碰。记忆锚点一句话:白=待生成,黑=保留。

约束是硬性的:底图与 mask 必须同尺寸,宽高都要是 32 的倍数,mask 还要纯黑白、无灰度无彩色,制作时按 0/255 的灰度图导出即可。交互模式会逐条校验,不合格直接打回,提示Image dimensions must be divisible by 32Mask dimensions must match conditioning image,换图重输就行。

⚙️ 从零到出图的最小路径

环境用 Python 3.10 建虚拟环境并安装:

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

权重不用手动下载:启动任一 demo 时会自动从 HuggingFace 拉到checkpoints/目录;权重已在本地时,也可以放进checkpoints/,或用FLUX_MODELFLUX_AE两个环境变量直接指向已有文件。

出图只需一条命令:

python -m flux fill \ --img_cond_path <your_input_image> \ --img_mask_path <your_input_mask>

两个尖括号占位符替换为你的本地路径,分别是底图与 mask。什么都不填也能跑:默认值就是仓库自带的 cup 示例,默认 prompt 为 "a white paper cup"。常用可调参数:

参数默认值作用
--prompta white paper cup重绘区域的提示词
--num_steps/--guidance50 / 30.0采样步数与 guidance 强度
--seed随机固定种子可复现结果
--offload显存不足时把 T5/CLIP/AE 在 CPU/GPU 间搬运

输出目录默认output,可用--output_dir改。

交互模式里用斜杠调参数,画板免手写 mask

python -m flux fill --loop

进入交互会话后依次输入 prompt、底图路径、mask 路径,留空即复用上一轮。prompt 行支持斜杠命令:/s <seed>设下一次种子、/g <guidance>设 guidance、/n <steps>设步数、/q退出(详见src/flux/cli_fill.py)。路径输入同样过校验:文件存在、扩展名 .jpg/.jpeg/.png/.webp、尺寸 32 的倍数、mask 与底图尺寸一致,不一致就要求重输。

不想手写 mask 文件,可以跑streamlit run demo_st_fill.py:画布上直接涂抹出黑白 mask;"Zoom Out Amount (All Sides)" 和各边 zoom 滑杆会自动生成带黑边的放大底图,并把新增边框区域在 mask 中标白,outpainting 一步到位(详见demo_st_fill.pyadd_border_and_mask)。

🔍 跑完 output 目录是空的?

跑完别急着找文件。采样结束先打印Done in <秒数>s,随后进入保存逻辑(详见src/flux/util.pysave_image):正常时打印Saving output/img_{idx}.jpg,文件写进output/{idx}从 0 递增;图片会嵌入 Exif,Make是 Black Forest Labs、Model是 flux-dev-fill,默认还会把 prompt 写进ImageDescription--add_sampling_metadata False可关)。保存前有一道 NSFW 过滤,阈值 0.85:判定 NSFW 的图片不会落盘,终端只留一句Your generated image may contain NSFW content.。如果output/没有新文件、只看到这句,就是这个原因。核对时打开最新编号的图:mask 白色区域应被按 prompt 重新生成,黑色区域保持原样。

最后说合规:FLUX.1 Fill [dev]权重是非商业许可(见model_licenses/LICENSE-FLUX1-dev);需要商用时按 README 走 BFL 商业授权,在 CLI 开启track_usage并运行前设置BFL_API_KEY自动统计用量。

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

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

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

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

立即咨询