Spaces:
Runtime error
Runtime error
import torch | |
from PIL import Image | |
from transformers import AutoModel, AutoTokenizer | |
import gradio as gr | |
# Carregar o modelo e o tokenizer | |
model = AutoModel.from_pretrained('openbmb/MiniCPM-V', trust_remote_code=True, torch_dtype=torch.bfloat16) | |
model = model.to(device='cuda', dtype=torch.bfloat16) # Ajuste para o dispositivo e tipo de dados adequados | |
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V', trust_remote_code=True) | |
model.eval() | |
# Função para processar a imagem e a pergunta | |
def chat_with_model(image, question): | |
# Converter a imagem para RGB (se necessário) | |
if isinstance(image, str): | |
image = Image.open(image).convert('RGB') | |
else: | |
image = image.convert('RGB') | |
# Preparar a mensagem para o modelo | |
msgs = [{'role': 'user', 'content': question}] | |
# Gerar resposta do modelo | |
res, context, _ = model.chat( | |
image=image, | |
msgs=msgs, | |
context=None, | |
tokenizer=tokenizer, | |
sampling=True, | |
temperature=0.7 | |
) | |
return res | |
# Interface Gradio | |
def gradio_interface(image, question): | |
response = chat_with_model(image, question) | |
return response | |
# Criar a interface Gradio | |
with gr.Blocks() as demo: | |
gr.Markdown("# MiniCPM-V Chat with Images") | |
gr.Markdown("Envie uma imagem e faça perguntas sobre ela.") | |
with gr.Row(): | |
image_input = gr.Image(label="Upload Image", type="pil") # Campo para upload de imagem | |
question_input = gr.Textbox(label="Your Question", placeholder="What is in the image?") # Campo para a pergunta | |
output_text = gr.Textbox(label="Model Response", interactive=False) # Campo para exibir a resposta | |
submit_button = gr.Button("Submit") # Botão para enviar | |
# Ação ao clicar no botão | |
submit_button.click( | |
fn=gradio_interface, | |
inputs=[image_input, question_input], | |
outputs=output_text | |
) | |
# Iniciar a interface | |
demo.launch() |