File size: 1,384 Bytes
b8090b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
44
45
46
47
48
49
50
51
import gradio as gr
import requests
from PIL import Image
import io

from Model import FishModel

Classifier =  FishModel()

def inference(image_input, url_input) -> dict[str, float]:
    image = load_image(image_input, url_input)

    result = Classifier.get_fish_species(image)

    data = dict()

    for element in result:
        data[element['label']] = round(element['score'], 2)

    return data # {"dog" : 30, "cat" : 70}

def load_image(image_input, url_input):
    if image_input is not None:
        return image_input
        
    elif url_input:
        try:
            response = requests.get(url_input)
            response.raise_for_status()
            return Image.open(io.BytesIO(response.content))
        
        except Exception as e:
            raise gr.Error(f"No se pudo cargar la imagen desde la URL. Error: {e}")


demo = gr.Interface(
    title="🐳📸 Fish Classification",
    description=open("description.md", "r", encoding="utf8").read(),
    fn=inference,
    inputs=[
        gr.Image(label="Sube una imagen", type="pil"),
        gr.Textbox(label="O pega una URL de imagen aquí")
    ],
    outputs=gr.Label(label="Resultado"),
    # examples=[
    #     [None, "https://gradio-builds.s3.amazonaws.com/demo-files/goldfish.jpg"],
    #     ["images/salmon.jpg", None]
    # ]
)

demo.launch()