Skip to main content

Sistema Multimodal Inteligente para Análise Automatizada de Exames de Imagem com Interface Conversacional

Project description

🏥 MedVision Framework

Sistema Multimodal Inteligente para Análise Automatizada de Exames de Imagem

Python Version License PyPI Code style: black

FeaturesInstalaçãoQuickstartDocumentaçãoExemplos


📋 Sobre

MedVision Framework é uma biblioteca Python de última geração para análise automatizada de imagens médicas, combinando modelos de visão computacional do HuggingFace com inteligência conversacional através da API Groq. Desenvolvido para pesquisadores, médicos e desenvolvedores que precisam de análise médica assistida por IA de forma rápida e confiável.

🎯 Diferenciais

  • 🤖 Modelos State-of-the-Art: Integração nativa com HuggingFace Transformers Hub
  • 💬 IA Conversacional: Agente inteligente para discussão de diagnósticos e educação médica
  • 🎨 Interface Web Moderna: Interface Gradio profissional pronta para produção
  • 🔌 Arquitetura Plugável: Sistema de plugins extensível para diferentes especialidades médicas
  • 📊 Análise Multimodal: Suporte para múltiplos formatos de imagem médica (DICOM, PNG, JPG, etc.)
  • ⚡ Alta Performance: Otimizado com PyTorch para inferência rápida
  • 📦 Pronto para Produção: API REST, CLI e interface web incluídas

✨ Features

🔬 Análise de Imagens

  • Dermatologia: Classificação de lesões de pele usando DINOv2 fine-tuned
  • 🔜 Radiologia: Análise de raios-X de tórax (em breve)
  • 🔜 Patologia: Análise histopatológica (em breve)
  • 🔜 Oftalmologia: Detecção de retinopatia diabética (em breve)

💡 Funcionalidades

  • Análise em Batch: Processe múltiplas imagens simultaneamente
  • Confidence Scoring: Scores de confiança para cada predição
  • Explicabilidade: Visualização de regiões de interesse (atenção do modelo)
  • Base de Conhecimento: Informações detalhadas sobre doenças e condições
  • Chat Médico: Converse com IA sobre diagnósticos e tratamentos
  • Export de Resultados: JSON, CSV, PDF com relatórios detalhados

🚀 Instalação

Via pip (Recomendado)

pip install medvision-framework

Instalação Local (Desenvolvimento)

# Clone o repositório
git clone https://github.com/seu-usuario/MedVision.git
cd MedVision

# Crie ambiente virtual
python -m venv venv
source venv/bin/activate  # Linux/Mac
# ou
venv\Scripts\activate  # Windows

# Instale dependências
pip install -r requirements.txt

# Instale em modo desenvolvimento
pip install -e .

🔑 Configuração

O MedVision requer uma chave API do Groq para funcionalidades conversacionais:

# Configure a variável de ambiente
export GROQ_API_KEY="sua-chave-aqui"

# Ou crie um arquivo .env
echo "GROQ_API_KEY=sua-chave-aqui" > .env

Obtenha sua chave gratuita em: https://console.groq.com


⚡ Quickstart

1️⃣ Uso Programático

from medvision import MedVisionFramework

# Inicialize o framework
framework = MedVisionFramework(groq_api_key="sua-chave")

# Analise uma imagem
result = framework.analyze(
    image_path="skin_lesion.jpg",
    analyzer_name="dermatology",
    top_k=3
)

# Visualize resultados
print(f"Diagnóstico: {result['primary_diagnosis']}")
print(f"Confiança: {result['confidence']:.2%}")
print(f"Diagnósticos alternativos: {result['alternative_diagnoses']}")

2️⃣ Interface Web (Gradio)

from medvision import launch_app

# Lança interface web em localhost:7860
launch_app(
    groq_api_key="sua-chave",
    share=False,  # True para criar link público
    server_port=7860
)

Ou use o launcher pronto:

python examples/launch_gradio_app.py

3️⃣ API REST (FastAPI)

# Inicie o servidor (em breve)
medvision serve --port 8000 --groq-key sua-chave

📚 Documentação

Estrutura do Resultado

{
    "primary_diagnosis": str,          # Diagnóstico principal
    "confidence": float,               # Confiança (0-1)
    "alternative_diagnoses": [         # Diagnósticos alternativos
        {
            "label": str,
            "confidence": float,
            "description": str
        }
    ],
    "attention_map": numpy.ndarray,    # Mapa de atenção do modelo
    "metadata": {
        "model": str,                  # Modelo utilizado
        "analyzer": str,               # Analisador usado
        "timestamp": str,              # Timestamp da análise
        "processing_time": float       # Tempo de processamento (s)
    }
}

Plugins Disponíveis

🩺 Dermatology Analyzer

from medvision.plugins import DermatologyAnalyzer

analyzer = DermatologyAnalyzer()
result = analyzer.analyze("skin_image.jpg", top_k=5)

Doenças Detectadas:

  • Melanoma
  • Carcinoma Basocelular
  • Carcinoma Espinocelular
  • Queratose Actínica
  • Nevus Benigno
  • E mais...

Modelo Base: DINOv2 (facebook/dinov2-base) fine-tuned em HAM10000 dataset


🎨 Interface Gradio

A interface web do MedVision oferece 4 módulos principais:

📸 Análise de Imagem

  • Upload de imagens médicas
  • Seleção de analisador especializado
  • Visualização de resultados com mapas de atenção
  • Exportação de relatórios

💬 Chat Médico

  • Conversação natural sobre diagnósticos
  • Perguntas sobre sintomas e tratamentos
  • Histórico de conversação persistente
  • Respostas baseadas em guidelines médicos

📖 Base de Conhecimento

  • Informações detalhadas sobre doenças
  • Sintomas, causas, tratamentos
  • Recomendações baseadas em evidências
  • Referências bibliográficas

ℹ️ Sobre

  • Documentação completa
  • Guias de uso
  • Informações sobre modelos

🔧 Exemplos Avançados

Análise em Batch

from medvision import MedVisionFramework
from pathlib import Path

framework = MedVisionFramework(groq_api_key="sua-chave")

# Processar múltiplas imagens
image_dir = Path("./medical_images")
results = []

for image_path in image_dir.glob("*.jpg"):
    result = framework.analyze(
        image_path=str(image_path),
        analyzer_name="dermatology"
    )
    results.append(result)

# Salvar resultados
import json
with open("batch_results.json", "w") as f:
    json.dump(results, f, indent=2)

Chat Contextual

# Inicialize com contexto de análise
result = framework.analyze("lesion.jpg", "dermatology")

# Use o chat para discutir o resultado
response = framework.chat(
    f"Explique o diagnóstico de {result['primary_diagnosis']} "
    f"com confiança de {result['confidence']:.1%}"
)
print(response)

# Continue a conversa
response = framework.chat(
    "Quais são as opções de tratamento disponíveis?"
)
print(response)

Criando um Plugin Customizado

from medvision import BaseAnalyzer, registry
from transformers import AutoModel, AutoImageProcessor

class MyCustomAnalyzer(BaseAnalyzer):
    """Analisador customizado para sua especialidade."""

    def load_model(self):
        self.model = AutoModel.from_pretrained("seu-modelo")
        self.processor = AutoImageProcessor.from_pretrained("seu-modelo")

    def analyze(self, image_path: str, top_k: int = 3):
        # Sua lógica de análise aqui
        ...
        return {
            "primary_diagnosis": diagnosis,
            "confidence": confidence,
            "alternative_diagnoses": alternatives
        }

# Registre seu plugin
registry.register("my_specialty", MyCustomAnalyzer)

# Use normalmente
framework = MedVisionFramework()
result = framework.analyze("image.jpg", "my_specialty")

🏗️ Arquitetura

medvision/
├── core/                    # Componentes centrais
│   ├── base_analyzer.py    # Classe base para analisadores
│   ├── model_registry.py   # Sistema de registro de plugins
│   └── exceptions.py       # Exceções customizadas
├── plugins/                 # Analisadores especializados
│   ├── dermatology.py      # Análise dermatológica
│   └── ...                 # Outros plugins
├── chat/                    # Sistema conversacional
│   └── conversational_agent.py
├── ui/                      # Interfaces de usuário
│   └── gradio_interface.py # Interface Gradio
├── api/                     # API REST (em breve)
├── cli/                     # Interface linha de comando (em breve)
└── framework.py            # Classe principal

Fluxo de Análise

graph LR
    A[Imagem] --> B[Framework]
    B --> C[Registry]
    C --> D[Plugin Específico]
    D --> E[Modelo HuggingFace]
    E --> F[Predições]
    F --> G[Pós-processamento]
    G --> H[Resultado Final]
    H --> I[Chat/UI/API]

📊 Performance

Operação Tempo Médio GPU CPU
Análise Dermatologia 2.3s RTX 3080 Intel i7
Inferência do Modelo 1.1s RTX 3080 Intel i7
Chat Response 0.8s N/A Intel i7
Batch (10 imgs) 15s RTX 3080 Intel i7

🛣️ Roadmap

v0.2.0 (Q1 2025)

  • Plugin de Radiologia (X-Ray Analysis)
  • API REST completa com FastAPI
  • CLI interativa
  • Suporte a DICOM avançado

v0.3.0 (Q2 2025)

  • Plugin de Patologia (Histologia)
  • Detecção de múltiplas lesões em uma imagem
  • Fine-tuning automático de modelos
  • Dashboard analytics

v1.0.0 (Q3 2025)

  • Sistema de autenticação e autorização
  • Integração com PACS
  • Suporte multi-idioma
  • Certificação regulatória

🤝 Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/MinhaFeature)
  3. Commit suas mudanças (git commit -m 'Adiciona MinhaFeature')
  4. Push para a branch (git push origin feature/MinhaFeature)
  5. Abra um Pull Request

Guidelines

  • Siga o estilo de código PEP 8
  • Adicione testes para novas funcionalidades
  • Atualize a documentação
  • Mantenha compatibilidade com Python 3.9+

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.


⚠️ Disclaimer Médico

IMPORTANTE: Este framework é uma ferramenta de auxílio à pesquisa e educação médica. NÃO substitui o julgamento clínico profissional. Sempre consulte profissionais de saúde qualificados para diagnósticos e tratamentos médicos. Os resultados devem ser validados por especialistas antes de qualquer decisão clínica.


📞 Suporte e Contato


🙏 Agradecimentos

  • HuggingFace pela infraestrutura de modelos
  • Groq pela API de IA conversacional
  • Gradio pela framework de UI
  • PyTorch pelo framework de deep learning
  • Comunidade open-source de ML médico

Desenvolvido com ❤️ para a comunidade médica e de pesquisa

⭐ Se este projeto foi útil, considere dar uma estrela!

⬆ Voltar ao topo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

medvision_framework-0.1.0.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

medvision_framework-0.1.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file medvision_framework-0.1.0.tar.gz.

File metadata

  • Download URL: medvision_framework-0.1.0.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for medvision_framework-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3c5c8b40e9541aac41e19e587d3153b165c743d9a3a37d7f9d4135067bb55315
MD5 72daac6da7fce95dd8232e595437e103
BLAKE2b-256 4582b1899e6c2c33f9184f38455f11526077f310fd996d63bd3a50c66a8a38cb

See more details on using hashes here.

File details

Details for the file medvision_framework-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for medvision_framework-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c39a8e21d4faee00793b532b9869c9c8be28a2748726ab5041ba8eeaef2ba65
MD5 1a8ee0cfeb0651136b746d9be82dd9f8
BLAKE2b-256 fc45122fe0798c5dcbd1ac57da1755597a34ae04e912d737ba45dcb3d8a73c90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page