# FAQ ## Geral ### Como o sistema funciona? O sistema utiliza um modelo de IA (OWL-ViT) para detectar objetos de risco em vídeos. O processamento é feito frame a frame em GPU ou CPU, com otimizações específicas para cada caso. ### O que é o OWL-ViT? O OWL-ViT (Vision Transformer for Open-World Localization) é um modelo de IA que: - Usa arquitetura Transformer para processar imagens - Permite detecção zero-shot de objetos - Aceita queries em linguagem natural - Não precisa de treinamento específico para novos objetos ### Problemas Conhecidos com OWL-ViT #### Limitações do Modelo Ensemble O modelo `owlv2-base-patch16-ensemble` apresenta incompatibilidades com processamento GPU: - Conflitos com versões estáveis do Transformers - Problemas de memória em GPUs com menos de 16GB - Instabilidade em batch processing **Solução Implementada:** 1. Mudança para modelo base: `owlv2-base-patch16` 2. Atualização do Transformers para branch de desenvolvimento: ```bash pip install git+https://github.com/huggingface/transformers.git ``` 3. Ajustes nas configurações de memória GPU: ```python model = model.to(device='cuda', dtype=torch.float16) ``` #### Problemas com Batch Processing O processamento em batch apresenta instabilidades conhecidas: 1. **Erros de Shape** ``` ERROR: shape '[4, 21, 512]' is invalid for input of size 44544 ERROR: shape '[2, 43, 512]' is invalid for input of size 44544 ``` 2. **Causas Identificadas** - Inconsistência no padding de imagens em batch - Variações no tamanho dos tensores de entrada - Incompatibilidade com certas configurações de GPU 3. **Solução Recomendada** ```python # Processamento seguro frame a frame batch_size = 1 # Processa um frame por vez ``` 4. **Benefícios do Processamento Individual** - Maior estabilidade - Melhor gerenciamento de memória - Resultados mais consistentes - Facilidade de debug - Menor chance de OOM (Out of Memory) 5. **Trade-offs** - Performance levemente reduzida - Processamento mais serializado - Maior tempo total de execução #### Comparação de Abordagens | Aspecto | Batch Processing | Frame a Frame | |---------|------------------|---------------| | Velocidade | Mais rápido (quando funciona) | Mais lento | | Estabilidade | Baixa | Alta | | Uso de Memória | Alto/Imprevisível | Baixo/Consistente | | Confiabilidade | Baixa | Alta | | Debug | Difícil | Fácil | #### Recomendações de Uso 1. **Produção** ```python # Configuração recomendada para produção batch_size = 1 resolution = 640 fps = 2 ``` 2. **Desenvolvimento** ```python # Configuração para testes batch_size = 1 resolution = 480 fps = 1 ``` 3. **Monitoramento** ```python # Log de progresso a cada 10 frames if i % 10 == 0: logger.info(f"Processados {i}/{len(frames)} frames") ``` ### Como fazer queries efetivas para o OWL-ViT? Para melhores resultados, use estas técnicas: 1. **Seja Específico** - Bom: "uma pistola preta" - Ruim: "arma" 2. **Use Variações** - "uma arma de fogo" - "uma pistola" - "um revólver" 3. **Inclua Contexto** - "uma faca na mão de alguém" - "uma arma apontada" 4. **Descreva Características** - "uma faca com lâmina metálica" - "um rifle com coronha" ### Tipos de Objetos Detectados #### Armas de Fogo - Pistolas - Rifles - Espingardas #### Armas Brancas - Facas - Canivetes - Objetos pontiagudos #### Outros Objetos - Bastões - Objetos contundentes - Materiais explosivos ## Técnico ### Requisitos de Hardware #### Especificações GPU - NVIDIA T4 16GB (recomendado) - CUDA 11.8+ - 16GB RAM #### Especificações CPU - 8+ cores - 32GB RAM - SSD para cache ### Problemas Comuns #### Erro CUDA **Problema**: `CUDA not available` **Solução**: ```bash nvidia-smi pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu118 ``` #### Memória Insuficiente **Problema**: `CUDA out of memory` **Solução**: - Use processamento frame a frame (padrão) - Diminua a resolução se necessário - Ajuste `GPU_MEMORY_FRACTION` no `.env` ## Performance ### Otimizações de Sistema #### Ajustes GPU - Processamento frame a frame otimizado - Ative half precision - Otimize o cache de modelos e frames - Gerenciamento eficiente de memória #### Ajustes CPU - Processamento sequencial otimizado - Use vetorização NumPy - Implemente cache de resultados ### Configurações Recomendadas ```plaintext // Configurações para GPU T4 GPU_MEMORY_FRACTION=0.9 BATCH_SIZE=1 # Processamento frame a frame USE_HALF_PRECISION=true // Configurações para CPU MAX_WORKERS=8 CACHE_SIZE=1000 USE_MULTIPROCESSING=true ``` ### Sistema de Monitoramento - Use os logs em `logs/app.log` para acompanhar o processamento frame a frame - Monitore GPU com `nvidia-smi` - Verifique métricas no Hugging Face - Acompanhe logs de progresso a cada 10 frames ## Deployment ### Processo de Deploy no Hugging Face 1. Configure as credenciais: ```bash cp .env.example .env.huggingface ``` 2. Edite as variáveis: ```plaintext HF_SPACE_ID=seu-espaco HF_TOKEN=seu_token ``` 3. Execute o deploy: ```bash ./deploy.sh ``` ### Sistema de Monitoramento - Use os logs em `logs/app.log` - Monitore GPU com `nvidia-smi` - Verifique métricas no Hugging Face ## Segurança ### Gerenciamento de Credenciais 1. Use variáveis de ambiente: ```bash cp .env.example .env ``` 2. Nunca comite arquivos `.env` 3. Use secrets no Hugging Face ### Validação de Entrada - Limite o tamanho dos vídeos - Verifique formatos permitidos - Sanitize inputs ```text HUGGINGFACE_TOKEN=seu_token GPU_MEMORY_FRACTION=0.9 MAX_CONCURRENT_REQUESTS=2 ``` ```text USE_GPU=true GPU_DEVICE=0 ``` ```text USE_GPU=false ``` ```text HF_SPACE_ID=seu-espaco HF_TOKEN=seu_token ```