Spaces:
Runtime error
Runtime error
# 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 | |
``` | |