欢迎光临
我们一直在努力

FLUX-Controlnet-Inpainting的推理

目录

一、前言

二、FLUX-Controlnet-Inpainting的推理

二、区别和联系


一、前言

        局部重绘有三种方式:

1.基于FLUX.1-dev:传统的局部重绘,在每一时间步的去噪操作之后将掩码的上下文信息贴回去,掩码的作用并不是在模型中以直接的方式控制目标区域的去噪范围。

2.FLUX-Controlnet-Inpainting:借助外挂的Controlnet来实现局部重绘

3.FLUX.1-Fill-dev:重新训练了一个端到端的局部重绘模型。

二、FLUX-Controlnet-Inpainting的推理

Github地址:

https://github.com/alimama-creative/FLUX-Controlnet-Inpainting/blob/main/controlnet_flux.py

模型地址:

https://huggingface.co/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Alpha

https://huggingface.co/alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Beta

在conda环境中安装依赖:

pip install diffusers==0.30.2
pip install accelerate==1.3.0
pip install transformers==4.44.0
pip install peft==0.14.0 safetensors==0.4.3
pip install sentencepiece
pip install protobuf

推理代码:python main.py

https://github.com/alimama-creative/FLUX-Controlnet-Inpainting/blob/main/main.py

import torch
from diffusers.utils import load_image, check_min_version
from controlnet_flux import FluxControlNetModel
from transformer_flux import FluxTransformer2DModel
from pipeline_flux_controlnet_inpaint import FluxControlNetInpaintingPipeline

check_min_version("0.30.2")

# Set image path , mask path and prompt
image_path='2026-05-07ebmvnh2lrtw.png',
mask_path='2026-05-07rdajr4jxu01.jpeg',
prompt='a person wearing a white shoe, carrying a white bucket with text "FLUX" on it'

# Build pipeline
controlnet = FluxControlNetModel.from_pretrained("alimama-creative/FLUX.1-dev-Controlnet-Inpainting-Alpha", torch_dtype=torch.bfloat16)
transformer = FluxTransformer2DModel.from_pretrained(
"black-forest-labs/FLUX.1-dev", subfolder='transformer', torch_dtype=torch.bfloat16
)
pipe = FluxControlNetInpaintingPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
controlnet=controlnet,
transformer=transformer,
torch_dtype=torch.bfloat16
).to("cuda")
pipe.transformer.to(torch.bfloat16)
pipe.controlnet.to(torch.bfloat16)

# Load image and mask
size = (768, 768)
image = load_image(image_path).convert("RGB").resize(size)
mask = load_image(mask_path).convert("RGB").resize(size)
generator = torch.Generator(device="cuda").manual_seed(24)

# Inpaint
result = pipe(
prompt=prompt,
height=size[1],
width=size[0],
control_image=image,
control_mask=mask,
num_inference_steps=28,
generator=generator,
controlnet_conditioning_scale=0.9,
guidance_scale=3.5,
negative_prompt="",
true_guidance_scale=1.0 # default: 3.5 for alpha and 1.0 for beta
).images[0]

result.save('flux_inpaint.png')
print("Successfully inpaint image")

二、区别和联系

比如说我用diffusers官方的flux.1-dev(简称为模型A)的lora训练代码训练出来的lora(简称为模型A-lora),这时候我可以叠加controlnet(简称为模型B)对吧,那diffusers官方应该也有一个训练controlnet的代码,训练出来的模型(简称为模型B-trained),那现在我有一个FLUX.1-dev-Controlnet-Inpainting-Beta(简称为模型C),有一个FLUX.1-Fill-dev(简称为模型 D)。

模型A、B、C、D的区别和联系是什么?

维度模型 A (FLUX.1-dev)模型 B (通用 ControlNet)模型 C (Inpainting ControlNet)模型 D (FLUX.1-Fill-dev)
本质 基座文生图模型 外挂条件控制模块 外挂修复控制模块 端到端修复模型
架构 12B DiT 复制 DiT 子层 + 零卷积 复制 DiT 子层 + 零卷积 12B DiT(原生支持 image+mask 输入)
输入 prompt prompt + canny/depth prompt + masked_image + mask prompt + image + mask
输出 完整图像 latent 残差特征(注入 A) 残差特征(注入 A) 完整修复后图像
能否独立运行 ✅ 可以 ❌ 必须配合 A ❌ 必须配合 A ✅ 可以
参数量 ~12B ~1-4B ~4B ~12B

赞(0)
未经允许不得转载:171主机测评 » FLUX-Controlnet-Inpainting的推理
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址