jke94's picture
Add files.
b36fb35
import gradio as gr
from transformers import pipeline
import os
MODEL_OPENAI_CLIP_VIT_LARGE_PATCH_14 = "openai/clip-vit-large-patch14"
MODEL_OPENAI_CLIP_VIT_BASE_PATCH_16 = "openai/clip-vit-base-patch16"
MODEL_OPENAI_CLIP_VIT_BASE_PATCH_32 = "openai/clip-vit-base-patch32"
input_examles = [
[
os.path.join(os.path.dirname(__file__), "images/example-01-two-cats.jpg"),
'the photo contains one cat,' \
'the photo contains a animal,' \
'the photo contains two cats,' \
'the photo contains something else',
MODEL_OPENAI_CLIP_VIT_LARGE_PATCH_14
],
[
os.path.join(os.path.dirname(__file__), "images/example-02-two-cats.jpg"),
'the photo contains one cat,' \
'the photo contains a animal,' \
'the photo contains two cats,' \
'the photo contains something else',
MODEL_OPENAI_CLIP_VIT_BASE_PATCH_16
],
[
os.path.join(os.path.dirname(__file__), "images/example-03-woman-with-pink-shirt-and-a-printer.jpg"),
'the photo contains a man and a printer,' \
'the photo contains a woman with blue shirt and a printer,' \
'the photo contains a woman and a printer,' \
'the photo contains a printer,' \
'the photo contains a woman with pink shirt and a printer,' \
'the photo contains something else',
MODEL_OPENAI_CLIP_VIT_LARGE_PATCH_14
],
[
os.path.join(os.path.dirname(__file__), "images/example-04-printer-in-the-left.jpg"),
'the photo contains a printer in the left,' \
'the photo contains a printer in the right,' \
'the photo contains a printer in the middle' \
'the photo contains something else',
MODEL_OPENAI_CLIP_VIT_LARGE_PATCH_14
],
[
os.path.join(os.path.dirname(__file__), "images/example-05-car-in-the-left-and-motorbike-in-the-right.jpg"),
'the photo contains a car in the left and a motorbike in the right,' \
'the photo contains a car in the right and a motorbike in the left',
MODEL_OPENAI_CLIP_VIT_LARGE_PATCH_14
]
]
def launch(image_input, labels_input, dropdown_input):
return predict(image_input, labels_input, dropdown_input)
def predict(image_input, labels_input, dropdown_input):
labels_candidate = labels_input.split(",")
selected_model = f"""{dropdown_input}"""
pipe = pipeline(task="zero-shot-image-classification", model=selected_model)
predictions = pipe(image_input, candidate_labels=labels_candidate)
return {p["label"]: p["score"] for p in predictions}
# SYSTEM INPUTS
image_input = gr.Image(label="Upload iamge candidate", type="filepath")
text_input = gr.Textbox(type="text", label="Possible classes to detect.")
dropdown_input = gr.Dropdown(
[
MODEL_OPENAI_CLIP_VIT_LARGE_PATCH_14,
MODEL_OPENAI_CLIP_VIT_BASE_PATCH_16,
MODEL_OPENAI_CLIP_VIT_BASE_PATCH_32
],
label="OpenAI ClipVit Model")
# SYSTEM OUTPUTS
output_label = gr.outputs.Label()
demo = gr.Interface(
launch,
inputs=[image_input, text_input, dropdown_input],
outputs=output_label,
title="Demo aobut zero-shot-image-classification",
examples = input_examles
)
if __name__ == "__main__":
demo.launch()