e
gcw_GSiqzzLf/flux-2-klein-4B-object-remove-lora
模型介绍文件和版本Pull Requests讨论分析

FLUX.2-klein-4B Object Remove LoRA - NPU

概述

本仓库提供 FLUX.2-klein-4B Object Remove LoRA 模型在华为昇腾 Ascend910 NPU 上的适配与推理方案。该 LoRA 用于从图像中移除高亮对象并自然填充移除区域。

  • 原始模型: fal/flux-2-klein-4B-object-remove-lora
  • 基础模型: black-forest-labs/FLUX.2-klein-4B
  • 任务类型: 图像编辑 / 对象移除
  • 模型框架: PyTorch + Diffusers
  • 输入格式: RGB 图像
  • 输出格式: RGB 图像(对象被移除)
  • LoRA 权重: ~76MB(safetensors 格式)
  • 基础模型: ~23GB
  • 许可证: Apache 2.0

环境要求

组件版本
Python3.11+
PyTorch>= 2.0.0
torch_npu>= 2.9.0
Diffusers>= 0.38.0
Ascend NPUAscend910

NPU 适配说明

与背景移除模型类似,使用 Flux2KleinPipeline + LoRA 加载方式。由于 ModelScope 上的原始 diffusers 格式 LoRA 文件不完整,本仓库使用从 ComfyUI 格式转换的 LoRA 文件,进行 diffusion_model. 到 base_model.model. 的前缀映射。

快速开始

python3 inference.py --device npu:0 --steps 20 --seed 42 --height 512 --width 512
python3 compare_cpu_npu.py --steps 4 --seed 42 --height 128 --width 128

推理结果

NPU 推理性能(512x512,20步)

指标值
推理耗时3.92 秒
设备Ascend910

CPU vs NPU 性能对比

指标CPUNPU加速比
推理耗时495.56 秒0.78 秒638x

CPU/NPU 精度测试

测试条件:128x128 输入,4步推理,seed=42,相同初始潜变量

指标值
MAE(0-255)0.0959
最大绝对误差2.0000
相对误差0.5997%
RMSE0.3116
PSNR58.26 dB
SSIM0.998564
像素一致率(<1%)90.46%

结论:NPU 与 CPU 推理结果误差为 0.5997%,小于 1%。

核心推理代码

import torch, torch_npu
from diffusers import Flux2KleinPipeline
from PIL import Image

pipe = Flux2KleinPipeline.from_pretrained(
    "black-forest-labs/FLUX.2-klein-4B", torch_dtype=torch.bfloat16
)
pipe.load_lora_weights("flux-object-remove-lora-diffusers.safetensors")
pipe = pipe.to("npu:0")

input_img = Image.open("input.jpg").convert("RGB").resize((512, 512))
generator = torch.Generator(device="cpu").manual_seed(42)

with torch.no_grad():
    output = pipe(
        image=input_img,
        prompt="Remove the highlighted object from the scene",
        height=512, width=512,
        num_inference_steps=20,
        guidance_scale=3.5,
        generator=generator,
    )
output.images[0].save("output.png")
下载使用量0