File size: 2,604 Bytes
			
			| 2726b4a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | import PIL
import requests
import torch
from diffusers import StableDiffusionInstructPix2PixPipeline
# 1. 指定你的checkpoint-1000所在的本地路径
# 例如:如果checkpoint保存在 "/root/training_results/checkpoint-1000"
checkpoint_path = "/root/autodl-tmp/my_self/checkpoint-100"  # <- 替换为实际路径
# 2. 从本地checkpoint加载管道
pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(
    checkpoint_path,  # 本地checkpoint目录
    torch_dtype=torch.float16,
    safety_checker=None  # 可选:禁用安全检查器(如果训练时未启用)
).to("cuda")
# 3. 生成器设置(保持不变)
generator = torch.Generator("cuda").manual_seed(0)
# 4. 加载本地图像(修改部分)
def load_local_image(image_path):
    """从本地路径加载图像并预处理"""
    image = PIL.Image.open(image_path)  # 直接打开本地文件
    image = PIL.ImageOps.exif_transpose(image)  # 处理图像旋转信息
    image = image.convert("RGB")  # 转换为RGB格式
    return image
# 替换为你的本地图像路径(例如:"/root/test_images/person.jpg")
local_image_path = "/root/autodl-tmp/my_model/inference.png"  # <- 替换为你的本地图像路径
image = load_local_image(local_image_path)
# 5. 推理参数(根据你的训练数据调整)
prompt = "smile"  # 你的训练任务是"smile",保持一致
num_inference_steps = 20
image_guidance_scale = 1.5
guidance_scale = 10
# 6. 生成编辑后的图像
edited_image = pipe(
    prompt,
    image=image,
    num_inference_steps=num_inference_steps,
    image_guidance_scale=image_guidance_scale,
    guidance_scale=guidance_scale,
    generator=generator,
).images[0]
def save_generated_image(image, save_dir, save_filename="generated_smile.png"):
    # 自动创建保存文件夹(避免手动建文件夹的麻烦)
    if not os.path.exists(save_dir):
        os.makedirs(save_dir, exist_ok=True)  # exist_ok=True 防止文件夹已存在时报错
    
    # 拼接完整保存路径
    save_path = os.path.join(save_dir, save_filename)
    
    # 保存图像(PNG格式支持透明,若要存JPG,将文件名后缀改为 .jpg 即可)
    image.save(save_path)
    
    # 打印路径,方便直接找到文件
    print(f"\n生成图像已保存 → {save_path}")
# 配置保存参数(替换为你的本地路径)
save_directory = "/root/autodl-tmp/my_model"  # 例:/root/results/smile_outputs
save_filename = "ckpt-100.png"  # 自定义文件名,避免重复覆盖
# 执行保存
save_generated_image(edited_image, save_directory, save_filename)
 |