Magix / main.py
Singularity666's picture
Update main.py
beed73c verified
raw
history blame
1.91 kB
# main.py
import os
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline, DDIMScheduler
from huggingface_hub import HfApi
from app import launch_gradio_app
from dreambooth import train_dreambooth
def fine_tune_model(instance_images, class_images, instance_prompt, class_prompt, num_train_steps=800):
model_name = "runwayml/stable-diffusion-v1-5"
output_dir = "dreambooth_model"
train_dreambooth(
pretrained_model_name_or_path=model_name,
instance_data_dir=instance_images,
class_data_dir=class_images,
output_dir=output_dir,
instance_prompt=instance_prompt,
class_prompt=class_prompt,
num_train_steps=num_train_steps
)
return output_dir
def load_model(model_path):
pipe = StableDiffusionPipeline.from_pretrained(model_path, safety_checker=None, torch_dtype=torch.float16).to("cuda")
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
pipe.enable_xformers_memory_efficient_attention()
return pipe
def generate_images(pipe, prompt, negative_prompt, num_samples, height=512, width=512, num_inference_steps=50, guidance_scale=7.5):
with torch.autocast("cuda"), torch.inference_mode():
images = pipe(
prompt, height=int(height), width=int(width),
negative_prompt=negative_prompt,
num_images_per_prompt=int(num_samples),
num_inference_steps=int(num_inference_steps), guidance_scale=guidance_scale,
generator=torch.Generator(device='cuda')
).images
return images
def push_to_huggingface(model_path, repo_name):
api = HfApi()
api.upload_folder(folder_path=model_path, repo_id=repo_name)
if __name__ == "__main__":
repo_name = "your-huggingface-username/dreambooth-app"
launch_gradio_app(fine_tune_model, load_model, generate_images, push_to_huggingface, repo_name)