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)