testing / app.py
AyushAggarwal's picture
Upload app.py
c1f97cf verified
Raw
History Blame Contribute Delete
1.14 kB
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from diffusers import DiffusionPipeline
import torch
import base64
from io import BytesIO
# create fastapi instance
app = FastAPI()
# Detect device
device = "cuda" if torch.cuda.is_available() else "cpu"
# Load the correct pipeline
pipe = DiffusionPipeline.from_pretrained(
"segmind/SSD-1B",
torch_dtype=torch.float16 if device == "cuda" else torch.float32,
use_safetensors=True,
)
pipe = pipe.to(device)
# Optional: reduce VRAM usage
pipe.enable_attention_slicing()
@app.get("/")
def home():
return {"message": "Segmind SSD-1B API running"}
# Define function to generate image from text prompt
@app.post("/generate-image/")
def generate_image(prompt: str, negative_prompt: str = None):
# Run inference
image = pipe(prompt=prompt, negative_prompt=negative_prompt).images[0]
# Convert to base64 string
buffered = BytesIO()
image.save(buffered, format="PNG")
img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")
return JSONResponse(content={"image_base64": img_str})