make a AI image generator
To upload files, please first save the app
import streamlit as st
from diffusers import StableDiffusionPipeline
import torch
from PIL import Image
import numpy as np
# Set page config
st.set_page_config(page_title="AI Image Generator", layout="wide")
# Title
st.title("🎨 AI Image Generator")
# Sidebar controls
with st.sidebar:
st.header("Generation Settings")
prompt = st.text_area("Enter your prompt",
"A beautiful sunset over mountains, digital art")
num_steps = st.slider("Number of inference steps",
min_value=1, max_value=100, value=30)
guidance_scale = st.slider("Guidance Scale",
min_value=1.0, max_value=20.0, value=7.5,
step=0.5)
seed = st.number_input("Random Seed",
min_value=0, max_value=999999999, value=42)
# Initialize model on first run
@st.cache_resource
def load_model():
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(
model_id,
torch_dtype=torch.float32
)
return pipe
# Main content
st.write("## Image Generation")
if 'generated_image' not in st.session_state:
st.session_state.generated_image = None
# Generate button
if st.button("Generate Image"):
with st.spinner("Generating your image... Please wait"):
try:
# Set random seed for reproducibility
torch.manual_seed(seed)
np.random.seed(seed)
# Load model
pipe = load_model()
# Generate image
image = pipe(
prompt=prompt,
num_inference_steps=num_steps,
guidance_scale=guidance_scale
).images[0]
# Store the generated image
st.session_state.generated_image = image
# Display the image
st.image(image, caption=prompt, use_column_width=True)
except Exception as e:
st.error(f"An error occurred: {str(e)}")
# Display previously generated image if it exists
elif st.session_state.generated_image is not None:
st.image(st.session_state.generated_image,
caption="Previously generated image",
use_column_width=True)
# Instructions
st.write("## How to use")
st.write("""
1. Enter your text prompt describing the image you want to generate
2. Adjust the generation settings if desired:
- Number of inference steps: Higher values give better quality but take longer
- Guidance Scale: How closely the image follows the prompt
- Random Seed: Controls randomness for reproducibility
3. Click 'Generate Image' to create your image
""")
# Warning about compute requirements
st.warning("""
⚠️ Note: This app requires significant computational resources.
The first generation might take longer as the model needs to be loaded.
""")
# Footer
st.markdown("---")
st.markdown("Made with ❤️ using Stable Diffusion")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?