|
|
import PIL |
|
|
import requests |
|
|
import torch |
|
|
from diffusers import StableDiffusionInstructPix2PixPipeline |
|
|
|
|
|
|
|
|
|
|
|
checkpoint_path = "/root/autodl-tmp/my_self/checkpoint-100" |
|
|
|
|
|
|
|
|
pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained( |
|
|
checkpoint_path, |
|
|
torch_dtype=torch.float16, |
|
|
safety_checker=None |
|
|
).to("cuda") |
|
|
|
|
|
|
|
|
generator = torch.Generator("cuda").manual_seed(0) |
|
|
|
|
|
|
|
|
def load_local_image(image_path): |
|
|
"""从本地路径加载图像并预处理""" |
|
|
image = PIL.Image.open(image_path) |
|
|
image = PIL.ImageOps.exif_transpose(image) |
|
|
image = image.convert("RGB") |
|
|
return image |
|
|
|
|
|
|
|
|
local_image_path = "/root/autodl-tmp/my_model/inference.png" |
|
|
image = load_local_image(local_image_path) |
|
|
|
|
|
|
|
|
prompt = "smile" |
|
|
num_inference_steps = 20 |
|
|
image_guidance_scale = 1.5 |
|
|
guidance_scale = 10 |
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
save_path = os.path.join(save_dir, save_filename) |
|
|
|
|
|
|
|
|
image.save(save_path) |
|
|
|
|
|
|
|
|
print(f"\n生成图像已保存 → {save_path}") |
|
|
|
|
|
|
|
|
save_directory = "/root/autodl-tmp/my_model" |
|
|
save_filename = "ckpt-100.png" |
|
|
|
|
|
|
|
|
save_generated_image(edited_image, save_directory, save_filename) |
|
|
|
|
|
|
|
|
|