|
from transformers import pipeline |
|
|
|
imagecaptioningpipe = pipeline("image-to-text",model="Salesforce/blip-image-captioning-base") |
|
|
|
from diffusers import DiffusionPipeline |
|
|
|
imagegenpipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5") |
|
|
|
|
|
from helper import image_to_base64_str, base64_to_pil |
|
def captioner(image): |
|
base64_image = image_to_base64_str(image) |
|
result = imagecaptioningpipe(base64_image) |
|
return result[0]['generated_text'] |
|
|
|
def generate(prompt): |
|
return imagegenpipe(prompt).images[0] |
|
|
|
|
|
import gradio as gr |
|
def caption_and_generate(image): |
|
caption = captioner(image) |
|
image = generate(caption) |
|
return [caption, image] |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# Caption Image-and-Generate Image🖍️") |
|
image_upload = gr.Image(label="Upload Your image",type="pil") |
|
btn_all = gr.Button("Caption and generate") |
|
caption = gr.Textbox(label="Generated caption") |
|
image_output = gr.Image(label="Generated Image") |
|
|
|
btn_all.click(fn=caption_and_generate, inputs=[image_upload], outputs=[caption, image_output]) |
|
|
|
gr.close_all() |
|
demo.launch() |