|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@gradio/lite/dist/lite.js"></script> |
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@gradio/lite/dist/lite.css" /> |
|
</head> |
|
<body> |
|
<gradio-lite> |
|
<gradio-requirements> |
|
transformers_js_py |
|
</gradio-requirements> |
|
|
|
<gradio-file name="app.py" entrypoint> |
|
from transformers_js import import_transformers_js, as_url |
|
import gradio as gr |
|
|
|
transformers = await import_transformers_js() |
|
pipeline = transformers.pipeline |
|
pipe = await pipeline('zero-shot-image-classification') |
|
|
|
async def classify(image, classes): |
|
if not image: |
|
return {} |
|
classes = [x for c in classes.split(",") if (x := c.strip())] |
|
if not classes: |
|
return {} |
|
data = await pipe(as_url(image), classes) |
|
result = {item['label']: round(item['score'], 2) for item in data} |
|
return result |
|
|
|
demo = gr.Interface( |
|
classify, |
|
[ |
|
gr.Image(label="Input image", sources=["webcam"], type="filepath", streaming=True), |
|
gr.Textbox(label="Classes separated by commas") |
|
], |
|
gr.Label(), |
|
live=True |
|
) |
|
demo.launch() |
|
</gradio-file> |
|
</gradio-lite> |
|
</body> |
|
</html> |
|
|