Spaces:
Runtime error
Runtime error
import streamlit as st | |
from PIL import Image | |
from transformers import pipeline as transformer | |
from diffusers import StableDiffusionPipeline | |
captions = [] | |
with st.sidebar: | |
files = st.file_uploader("Upload images to blend", accept_multiple_files=True) | |
st.divider() | |
caption_model = st.selectbox("Caption Model", [ | |
"Salesforce/blip-image-captioning-large", | |
"nlpconnect/vit-gpt2-image-captioning", | |
"microsoft/git-base", | |
"ydshieh/vit-gpt2-coco-en" | |
]) | |
caption_max_tokens = st.number_input("Image Caption: Max Tokens", value=20) | |
st.divider() | |
caption_concat_joiner = st.text_input("Caption Concatenation Joiner", value=" ") | |
st.divider() | |
diffusion_model = st.selectbox("Diffusion Model", [ | |
"stabilityai/stable-diffusion-xl-base-1.0", | |
"runwayml/stable-diffusion-v1-5", | |
"stabilityai/stable-diffusion-2-1", | |
"CompVis/stable-diffusion-v1-4" | |
]) | |
image_gen_height = st.number_input("Stable Diffusion: Height", value=512) | |
image_gen_width = st.number_input("Stable Diffusion: Width", value=512) | |
image_gen_steps = st.slider("Stable Diffusion: Inference Steps", value=50) | |
image_gen_guidance = st.slider("Stable Diffusion: Guidance Scale", value=7.5) | |
image_gen_number = st.number_input("Stable Diffusion: Images Generated", value=1) | |
for file_name in files: | |
image = Image.open(file_name) | |
with st.spinner('Captioning Provided Image'): | |
captioner = transformer(model=caption_model) | |
caption = captioner(image, max_new_tokens=caption_max_tokens)[0]['generated_text'] | |
captions.append(caption) | |
st.image(image, caption=caption) | |
if len(captions) > 0: | |
st.divider() | |
description = caption_concat_joiner.join(captions) | |
pipe = StableDiffusionPipeline.from_pretrained(diffusion_model) | |
with st.spinner(f'Generating Photo for "{description}"'): | |
images = pipe(description, height=image_gen_height, width=image_gen_width, num_inference_steps=image_gen_steps, guidance_scale=image_gen_guidance, num_images_per_prompt=image_gen_number).images | |
for image in images: | |
st.image(image, caption=description) | |