File size: 818 Bytes
61bc9be
 
 
bce21ce
 
 
61bc9be
506a05e
61bc9be
 
 
506a05e
bce21ce
506a05e
bce21ce
506a05e
 
 
bce21ce
506a05e
61bc9be
 
bce21ce
61bc9be
 
506a05e
 
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
import gradio as gr
from transformers import AutoImageProcessor, AutoModel
import torch
from PIL import Image
import base64
import io

# Modelo
processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
model = AutoModel.from_pretrained("facebook/dinov2-base")

# Recibe string base64
def get_embedding(base64_str):
    # Separar encabezado
    header, encoded = base64_str.split(",", 1)
    # Decodificar
    image_bytes = base64.b64decode(encoded)
    image = Image.open(io.BytesIO(image_bytes)).convert("RGB")

    # Procesar
    inputs = processor(images=image, return_tensors="pt")
    with torch.no_grad():
        embeddings = model(**inputs).last_hidden_state[:, 0]
    return embeddings.squeeze().tolist()

# Gradio Interface
gr.Interface(fn=get_embedding, inputs="text", outputs="json").launch()