Spaces:
Sleeping
Sleeping
import gradio as gr | |
import torch | |
from PIL import Image | |
from transformers import ColPaliForRetrieval, ColPaliProcessor | |
import numpy as np | |
model_name = "vidore/colpali-v1.3-hf" | |
model = ColPaliForRetrieval.from_pretrained(model_name, torch_dtype=torch.float32).eval() | |
processor = ColPaliProcessor.from_pretrained(model_name) | |
def process_image(image): | |
# Ensure the image is in RGB format | |
image = image.convert('RGB') | |
# Process the image | |
inputs = processor(images=image, return_tensors="pt") | |
# Generate embeddings | |
with torch.no_grad(): | |
outputs = model(**inputs) | |
# Extract embeddings and convert to list | |
embeddings = outputs.embeddings.squeeze().cpu().numpy().tolist() | |
# Truncate the embeddings for display purposes | |
truncated_embeddings = embeddings[:10] # Show only first 10 values | |
# Prepare the output | |
output = { | |
"embedding_sample": truncated_embeddings, | |
"embedding_length": len(embeddings), | |
"embedding_shape": list(np.array(embeddings).shape) | |
} | |
return output | |
# Create Gradio interface | |
demo = gr.Interface( | |
fn=process_image, | |
inputs=gr.Image(type="pil"), | |
outputs=gr.JSON(), | |
title="ColPali Image Embedding Generator", | |
description="Upload an image to generate its embedding using the ColPali model." | |
) | |
# Launch the interface | |
demo.launch() | |