multipurpose-ai / app.py
Bipin Krishnan
added files
b53b5ae
raw
history blame
2.85 kB
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")
gr.Interface(
main,
inputs=gr.inputs.Textbox(lines=5, label="Input"),
outputs=[gr.outputs.Textbox(label="Output"), gr.outputs.Image(label="Ouptut"),]
).launch(debug=True)