Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import pipeline | |
from glob import glob | |
from PIL import Image | |
import os | |
from icrawler.builtin import GoogleImageCrawler | |
def download_image(query, out_file): | |
google_crawler = GoogleImageCrawler(storage={'root_dir': './'}) | |
google_crawler.crawl(keyword=query, max_num=1, overwrite=True) | |
os.rename(glob("./000001.*")[0], out_file) | |
def generate_story(prompt): | |
story = storygen(f"{prompt}")[0]['generated_text'] | |
return story | |
def start_neural_style_transfer(img1_name, img2_name): | |
img1_filename, img2_filename = "style_transfer_1.jpg", "style_transfer_2.jpg" | |
download_image(img1_name, img1_filename) | |
download_image(img2_name, img2_filename) | |
styled_image = nst(img1_filename, img2_filename) | |
pil_img = Image.open(styled_image) | |
return pil_img | |
def detect_objects(file_name): | |
out_img = detectron(file_name) | |
pil_img = Image.open(out_img) | |
return pil_img | |
def main(text_input): | |
text_output, image_output, metadata = None, None, None | |
task_type_q = f"User: {text_input}\nWhat is the task the user is asking to do?\n \ | |
- story generation task\n \ | |
- image style transfer task\n \ | |
- object detection task" | |
task = t0pp(task_type_q) | |
task = task.lower().replace('.', '') | |
if task=="story generation task": | |
story_prompt = t0pp(f"User: {text_input}\nWhat story is the user asking for?") | |
text_output = generate_story(story_prompt) | |
metadata = f"Prompt used to generate the story:\n{story_prompt}" | |
elif task=="image style transfer task": | |
img1_name = t0pp(f"User: {text_input}\nWhat is the name of the picture to which style is to be tranferred?") | |
img2_name = t0pp(f"User: {text_input}\nWhat is the name of the picture from which style is to be tranferred?") | |
image_output = start_neural_style_transfer(img1_name, img2_name) | |
metadata = f"Image from which style is to be transferred: {img2_name}\nImage to which style is to be transferred: {img1_name}" | |
elif task=="object detection task": | |
img_file = "object_detection.jpg" | |
img_name = t0pp(f"User: {text_input}\nWhat image is the user referring to?") | |
download_image(img_name, img_file) | |
image_output = detect_objects(img_file) | |
metadata = f"Image from which objects are to be detected: {img_name}" | |
return text_output, image_output | |
if __name__=="__main__": | |
t0pp = gr.Interface.load("huggingface/bigscience/T0pp") | |
storygen = pipeline("text-generation", model="pranavpsv/genre-story-generator-v2") | |
nst = gr.Interface.load("spaces/luca-martial/neural-style-transfer") | |
detectron = gr.Interface.load("spaces/akhaliq/Detectron2") | |
title = "Multipurpose AI" | |
description = "With this demo you can do image style transfer, story generation and object detection(as of now, detects all the possible objects in the image) using a single text box. Use the examples provided below to get started." | |
article = "[Bigscience T0pp](https://huggingface.co/bigscience/T0pp) | [story generator](https://huggingface.co/pranavpsv/genre-story-generator-v2) | [style transfer](https://huggingface.co/spaces/luca-martial/neural-style-transfer) | [object detection](https://huggingface.co/spaces/akhaliq/Detectron2)" | |
examples = [["Find an image of taj mahal and transfer the style of starry night to it"], | |
["Find an image of a football match and detect the objects in that image"], | |
["Give me a story about a hard working farmer"]] | |
gr.Interface( | |
main, | |
title=title, | |
description=description, | |
article=article, | |
inputs=gr.inputs.Textbox(lines=5, label="Input"), | |
outputs=[gr.outputs.Textbox(label="Output"), gr.outputs.Image(label="Ouptut"),], | |
examples=examples, | |
enable_queue=True, | |
).launch(debug=True) |