File size: 1,399 Bytes
a09a6e6 a4dc223 f30185d b66857f f30185d 6e0ffb7 f30185d a792718 a4dc223 f30185d a4dc223 5012113 a4dc223 5012113 a4dc223 5012113 a4dc223 f30185d a4dc223 5012113 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
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):
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')
labels = labels_text.split(",")
res = pipe(images=PIL_image,
candidate_labels=labels,
hypothesis_template="This is a photo of a {}")
return {dic["label"]: dic["score"] for dic in res}
# Define the Gradio interface with the updated components
iface = gr.Interface(
fn=shot,
inputs=[
gr.Textbox(label="Image URL (starting with http/https) or Upload Image"),
gr.Textbox(label="Labels (comma-separated)")
],
outputs=gr.Label(),
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()
|