Spaces:
Sleeping
Sleeping
| import torch | |
| from diffusers import StableDiffusionXLPipeline | |
| class StableDiffusionEngine: | |
| """ | |
| Stable Diffusion XL Engine (HF Spaces safe version) | |
| """ | |
| def __init__( | |
| self, | |
| model_id = "stabilityai/stable-diffusion-xl-base-1.0", | |
| hf_token: str | None = None, | |
| ): | |
| self.device = "cuda" if torch.cuda.is_available() else "cpu" | |
| self.pipe = StableDiffusionXLPipeline.from_pretrained( | |
| model_id, | |
| torch_dtype=torch.float16 if self.device == "cuda" else torch.float32, | |
| use_safetensors=True, | |
| safety_checker=True, | |
| token=hf_token, # ✅ CRITICAL FIX | |
| ) | |
| self.pipe.to(self.device) | |
| def generate_image( | |
| self, | |
| prompt: str, | |
| num_inference_steps: int = 30, | |
| guidance_scale: float = 7.5, | |
| width: int = 1024, | |
| height: int = 1024, | |
| ): | |
| with torch.no_grad(): | |
| image = self.pipe( | |
| prompt=prompt, | |
| num_inference_steps=num_inference_steps, | |
| guidance_scale=guidance_scale, | |
| width=width, | |
| height=height, | |
| ).images[0] | |
| return image |