✨ HD Quality Tips:
✅ Fixed 512x512 resolution for optimal quality✅ 4-6 inference steps for best balance of speed & quality
✅ Use detailed prompts (50-100 words) for better results
✅ Negative prompts help remove artifacts & improve clarity
import io import base64 from fastapi import FastAPI, Form, HTTPException from fastapi.responses import HTMLResponse, JSONResponse from PIL import Image import time import logging from datetime import datetime import os import torch # Configure logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) app = FastAPI(title="HD CPU Text-to-Image Generator") # Create directories os.makedirs("generated_images", exist_ok=True) os.makedirs("models", exist_ok=True) # Global pipeline variable pipe = None model_loaded = False model_name = None # Fixed HD settings - ALWAYS 512x512 for best quality with turbo models FIXED_WIDTH = 512 FIXED_HEIGHT = 512 def load_model(): """Auto-download and load optimized CPU model for HD quality""" global pipe, model_loaded, model_name if model_loaded and pipe is not None: return True logger.info("=" * 50) logger.info("📥 Loading SDXL-Turbo for High Quality HD images...") logger.info("=" * 50) try: from diffusers import AutoPipelineForText2Image, DPMSolverMultistepScheduler import torch # SDXL-Turbo - Much better quality than regular SD-Turbo # Fixed at 512x512 for optimal HD output model_repo = "stabilityai/sdxl-turbo" logger.info(f"🔄 Loading {model_repo}...") # Load pipeline with CPU optimizations pipe = AutoPipelineForText2Image.from_pretrained( model_repo, torch_dtype=torch.float32, variant="fp16", use_safetensors=True, low_cpu_mem_usage=True ) # Move to CPU pipe = pipe.to("cpu") # Use fast scheduler pipe.scheduler = DPMSolverMultistepScheduler.from_config( pipe.scheduler.config, use_karras_sigmas=True # Better quality ) # Memory optimizations pipe.enable_attention_slicing() # Disable safety checker for speed (optional) if hasattr(pipe, 'safety_checker'): pipe.safety_checker = None model_name = "SDXL-Turbo (HD Quality)" model_loaded = True logger.info("✅ Loaded SDXL-Turbo - HD Quality mode (512x512 fixed)") logger.info("=" * 50) return True except Exception as e: logger.error(f"Failed to load SDXL-Turbo: {e}") # Fallback to regular SD-Turbo with optimized settings try: logger.info("🔄 Falling back to SD-Turbo with HD optimizations...") from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler pipe = StableDiffusionPipeline.from_pretrained( "stabilityai/sd-turbo", torch_dtype=torch.float32, low_cpu_mem_usage=True ) pipe = pipe.to("cpu") pipe.scheduler = DPMSolverMultistepScheduler.from_config( pipe.scheduler.config, use_karras_sigmas=True ) pipe.enable_attention_slicing() model_name = "SD-Turbo (HD Optimized)" model_loaded = True logger.info("✅ Loaded SD-Turbo with HD optimizations") return True except Exception as e2: logger.error(f"All models failed: {e2}") return False # HTML Template with fixed HD settings HTML_TEMPLATE = """
High Quality 512x512 Images on Your CPU - Fast & Free!