|
import streamlit as st |
|
from PIL import Image |
|
import numpy as np |
|
import io |
|
import torch |
|
from diffusers import DiffusionPipeline |
|
from diffusers import StableDiffusionPipeline |
|
|
|
|
|
def generate_images(text, size, num_images, quality): |
|
|
|
generated_images = [] |
|
for _ in range(num_images): |
|
|
|
|
|
|
|
|
|
pass |
|
return generated_images |
|
|
|
|
|
def pil_to_bytes(image): |
|
img_byte_array = io.BytesIO() |
|
image.save(img_byte_array, format='PNG') |
|
return img_byte_array.getvalue() |
|
|
|
|
|
st.title('Text-to-Image AI-based Chatbot') |
|
|
|
|
|
user_input = st.text_input("Enter your text here:") |
|
|
|
|
|
model_opts = ["amused/amused-256", "amused/amused-512", "runwayml/stable-diffusion-v1-5"] |
|
selected_model = st.selectbox("Select model:", model_opts) |
|
|
|
if selected_model == 'amused/amused-256': |
|
print("Model selected: 256") |
|
pipe = DiffusionPipeline.from_pretrained('amused/amused-256', variant="fp16", torch_dtype=torch.float16) |
|
elif selected_model == 'amused/amused-512': |
|
print("Model selected: 512") |
|
pipe = DiffusionPipeline.from_pretrained('amused/amused-512', variant="fp16", torch_dtype=torch.float16) |
|
else: |
|
print("Model selected: diffusion") |
|
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", variant="fp16", torch_dtype=torch.float16) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
num_images = st.number_input("Number of images to generate:", min_value=1, max_value=10, value=3, step=1) |
|
|
|
image_quality = st.slider("Select image quality:", min_value=1, max_value=100, value=50, step=1) |
|
|
|
|
|
if st.button("Generate Images"): |
|
if user_input: |
|
|
|
|
|
|
|
|
|
|
|
|
|
pipe = pipe.to('cuda') |
|
|
|
with st.spinner('Generating...'): |
|
image = pipe( |
|
user_input, |
|
num_images_per_prompt=num_images, |
|
num_inference_steps=image_quality, |
|
generator=torch.Generator('cuda').manual_seed(8) |
|
).images |
|
st.image(image , use_column_width=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|