user-agent's picture
Update app.py
a4dc223 verified
raw
history blame
1.76 kB
from turtle import title
import requests
from io import BytesIO
import gradio as gr
from transformers import pipeline
import numpy as np
from PIL import Image
import spaces
pipe = pipeline("zero-shot-image-classification", model="patrickjohncyh/fashion-clip")
images="dog.jpg"
@spaces.GPU
def shot(input, labels_text):
# Check if the input is a URL or an uploaded image
if isinstance(input, str) and (input.startswith("http://") or input.startswith("https://")):
# Input is a URL
response = requests.get(input)
PIL_image = Image.open(BytesIO(response.content)).convert('RGB')
else:
# Input is an uploaded image
PIL_image = Image.fromarray(np.uint8(input)).convert('RGB')
# Split labels into a list
labels = labels_text.split(",")
# Perform the zero-shot image classification
res = pipe(images=PIL_image,
candidate_labels=labels,
hypothesis_template="This is a photo of a {}")
# Return the classification results as a dictionary
return {dic["label"]: dic["score"] for dic in res}
# Define the Gradio interface
iface = gr.Interface(
fn=shot,
inputs=[
gr.inputs.Textbox(label="Image URL (starting with http/https) or Upload Image"),
"text"
],
outputs="label",
examples=[
["https://example.com/dog.jpg", "dog,cat,bird"],
["https://example.com/germany.jpg", "germany,belgium,colombia"],
["https://example.com/colombia.jpg", "germany,belgium,colombia"]
],
description="Add an image URL (starting with http/https) or upload a picture, and provide a list of labels separated by commas.",
title="Zero-shot Image Classification"
)
# Launch the interface
iface.launch()