| | <!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('object-detection', "Xenova/yolos-tiny") |
| |
|
| | async def detect(image): |
| | result = await pipe(as_url(image)) |
| | gradio_labels = [ |
| | # List[Tuple[numpy.ndarray | Tuple[int, int, int, int], str]] |
| | ( |
| | ( |
| | int(item["box"]["xmin"]), |
| | int(item["box"]["ymin"]), |
| | int(item["box"]["xmax"]), |
| | int(item["box"]["ymax"]), |
| | ), |
| | item["label"], |
| | ) |
| | for item in result |
| | ] |
| | annotated_image_data = image, gradio_labels |
| | return annotated_image_data, result |
| |
|
| | demo = gr.Interface( |
| | detect, |
| | gr.Image(type="filepath"), |
| | [ |
| | gr.AnnotatedImage(), |
| | gr.JSON(), |
| | ] |
| | ) |
| |
|
| | demo.launch() |
| | </gradio-file> |
| |
|
| | </gradio-lite> |
| |
|
| | </body> |
| | </html> |
| |
|
| |
|