Spaces:
Running
on
Zero
Running
on
Zero
import argparse | |
from src.pipeline_pe_clone import FluxPipeline | |
import torch | |
from PIL import Image | |
def parse_args(): | |
parser = argparse.ArgumentParser(description='FLUX image generation with LoRA') | |
parser.add_argument('--model_path', type=str, | |
default="black-forest-labs/FLUX.1-dev", | |
help='Path to pretrained model') | |
parser.add_argument('--image_path', type=str, | |
default="assets/1.png", | |
help='Input image path') | |
parser.add_argument('--output_path', type=str, | |
default="output.png", | |
help='Output image path') | |
parser.add_argument('--height', type=int, default=768) | |
parser.add_argument('--width', type=int, default=512) | |
parser.add_argument('--prompt', type=str, | |
default="add a halo and wings for the cat by sksmagiceffects", | |
help="""Different LoRA effects and their example prompts: | |
- sksmagiceffects: "add a halo and wings for the cat by sksmagiceffects" | |
- sksmonstercalledlulu: "add a red sksmonstercalledlulu hugging the cat" | |
- skspaintingeffects: "add a yellow flower on the cat's head and psychedelic colors and dynamic flows by skspaintingeffects" | |
- sksedgeeffect: "add yellow flames to the cat by sksedgeeffect" | |
- skscatooneffect: "add two hands holding the cat in skscatooneffect" | |
""") | |
parser.add_argument('--guidance_scale', type=float, default=3.5) | |
parser.add_argument('--num_steps', type=int, default=20, | |
help='Number of inference steps') | |
parser.add_argument('--lora_name', type=str, | |
choices=['pretrained', 'sksmagiceffects', 'sksmonstercalledlulu', | |
'skspaintingeffects', 'sksedgeeffect', 'skscatooneffect'], | |
default="sksmagiceffects", | |
help='Name of LoRA weights to use. Use "pretrained" for base model only') | |
return parser.parse_args() | |
def main(): | |
args = parse_args() | |
pipeline = FluxPipeline.from_pretrained( | |
args.model_path, | |
torch_dtype=torch.bfloat16, | |
).to('cuda') | |
# Load and fuse base LoRA weights | |
pipeline.load_lora_weights("nicolaus-huang/PhotoDoodle", weight_name="pretrain.safetensors") | |
pipeline.fuse_lora() | |
pipeline.unload_lora_weights() | |
# Load selected LoRA effect only if not using pretrained | |
if args.lora_name != 'pretrained': | |
pipeline.load_lora_weights("nicolaus-huang/PhotoDoodle", weight_name=f"{args.lora_name}.safetensors") | |
condition_image = Image.open(args.image_path).resize((args.height, args.width)).convert("RGB") | |
result = pipeline( | |
prompt=args.prompt, | |
condition_image=condition_image, | |
height=args.height, | |
width=args.width, | |
guidance_scale=args.guidance_scale, | |
num_inference_steps=args.num_steps, | |
max_sequence_length=512 | |
).images[0] | |
result.save(args.output_path) | |
if __name__ == "__main__": | |
main() |