Spaces:
Runtime error
Runtime error
import io | |
import requests | |
import torch | |
from PIL import Image | |
import streamlit as st | |
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfig | |
# Função para baixar e processar a imagem | |
def download_image(url): | |
headers = { | |
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' | |
} | |
resp = requests.get(url, headers=headers) | |
resp.raise_for_status() | |
return Image.open(io.BytesIO(resp.content)).convert("RGB") | |
# Função para gerar a descrição com base na imagem e no prompt | |
def generate(images, prompt, processor, model, device, dtype, generation_config): | |
inputs = processor( | |
images=images[:2], text=f" USER: <s>{prompt} ASSISTANT: <s>", return_tensors="pt" | |
).to(device=device, dtype=dtype) | |
output = model.generate(**inputs, generation_config=generation_config)[0] | |
response = processor.tokenizer.decode(output, skip_special_tokens=True) | |
return response | |
# Função principal da interface Streamlit | |
def main(): | |
# Definir o dispositivo de execução (GPU ou CPU) | |
device = "cuda:0" if torch.cuda.is_available() else "cpu" | |
dtype = torch.float16 | |
# Carregar o modelo e o processador | |
processor = AutoProcessor.from_pretrained("StanfordAIMI/CheXagent-8b", trust_remote_code=True) | |
generation_config = GenerationConfig.from_pretrained("StanfordAIMI/CheXagent-8b") | |
model = AutoModelForCausalLM.from_pretrained( | |
"StanfordAIMI/CheXagent-8b", torch_dtype=dtype, trust_remote_code=True | |
).to(device) | |
# Título da aplicação Streamlit | |
st.title("Análise de Imagem Médica com CheXagent") | |
# Entrada para o URL da imagem | |
image_url = st.text_input("Insira o URL da imagem:", "https://upload.wikimedia.org/wikipedia/commons/3/3b/Pleural_effusion-Metastatic_breast_carcinoma_Case_166_%285477628658%29.jpg") | |
# Entrada para o prompt | |
prompt = st.text_input("Insira o prompt para a análise:", "Descreva o \"Airway\"") | |
# Botão para gerar a resposta | |
if st.button("Gerar Análise"): | |
try: | |
# Passo 1: Baixar a imagem | |
st.write("Baixando a imagem...") | |
images = [download_image(image_url)] | |
# Exibir a imagem na interface | |
st.image(images[0], caption="Imagem fornecida", use_column_width=True) | |
# Passo 2: Gerar a resposta | |
st.write(f"Gerando a análise para: {prompt}...") | |
response = generate(images, prompt, processor, model, device, dtype, generation_config) | |
# Exibir a resposta gerada | |
st.subheader("Análise Gerada:") | |
st.write(response) | |
except Exception as e: | |
st.error(f"Ocorreu um erro: {e}") | |
if __name__ == "__main__": | |
main() | |