File size: 825 Bytes
61bc9be
 
 
bdb83bf
5c36b58
4314de5
bdb83bf
61bc9be
 
bdb83bf
61bc9be
5c36b58
 
61bc9be
 
339ccca
61bc9be
 
4314de5
 
5c36b58
4314de5
339ccca
4314de5
 
bdb83bf
5c36b58
 
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
import gradio as gr
from transformers import AutoImageProcessor, AutoModel
import torch
from PIL import Image
import numpy as np

# Cargar el modelo solo una vez
processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
model = AutoModel.from_pretrained("facebook/dinov2-base")
model.eval()

def get_embedding(image_np):
    image = Image.fromarray(image_np).convert("RGB")
    inputs = processor(images=image, return_tensors="pt")
    with torch.no_grad():
        embeddings = model(**inputs).last_hidden_state[:, 0]  # CLS token
    return embeddings.squeeze().tolist()

iface = gr.Interface(
    fn=get_embedding,
    inputs=gr.Image(type="numpy"),  # CAMBIO CLAVE AQUÍ
    outputs="json",
    description="Microservicio para extraer embeddings de imágenes usando DINOv2."
)

iface.queue()
iface.launch()