Marcus Vinicius Zerbini Canhaço
feat: atualização do detector com otimizações para GPU T4
eb1a752
|
raw
history blame
3.03 kB

Interface e API

Interface Web

Componentes Principais

  1. Upload de Vídeo

    • Formatos suportados: MP4, AVI, MOV
    • Tamanho máximo: 100MB
    • Duração máxima: 5 minutos
  2. Configurações de Detecção

    • Limiar de confiança (0-100%)
    • Modo de processamento (GPU/CPU)
    • Tamanho do lote de frames
  3. Visualização de Resultados

    • Vídeo com anotações
    • Timeline de detecções
    • Métricas de processamento

Exemplos de Uso

  1. Upload Simples

    with gr.Blocks() as demo:
        video_input = gr.Video()
        detect_btn = gr.Button("Detectar")
        output_display = gr.Video()
    
  2. Configurações Avançadas

    with gr.Blocks() as demo:
        with gr.Row():
            confidence = gr.Slider(0, 100)
            batch_size = gr.Number(value=4)
    

API REST

Endpoints

1. Detecção em Vídeo

POST /api/detect
Content-Type: multipart/form-data

{
    "video": binary_data,
    "confidence": 0.5,
    "use_gpu": true
}

Resposta:

{
    "detections": [
        {
            "frame": 0,
            "timestamp": "00:00:01",
            "objects": [
                {
                    "label": "arma",
                    "confidence": 95.5,
                    "bbox": [0, 0, 100, 100]
                }
            ]
        }
    ],
    "metrics": {
        "frames_processed": 150,
        "processing_time": 2.5,
        "fps": 60
    }
}

2. Status do Serviço

GET /api/status

Response:
{
    "status": "online",
    "gpu_available": true,
    "memory_usage": "45%",
    "queue_size": 2
}

Códigos de Erro

  • 400: Parâmetros inválidos
  • 413: Vídeo muito grande
  • 500: Erro interno
  • 503: Serviço indisponível

Rate Limiting

  • 10 requisições/minuto por IP
  • 100 requisições/hora por usuário
  • Tamanho máximo do vídeo: 100MB

Webhooks

Configuração

POST /api/webhooks/configure
{
    "url": "https://seu-servidor.com/callback",
    "events": ["detection", "error"],
    "secret": "seu_secret"
}

Formato do Callback

{
    "event": "detection",
    "timestamp": "2024-03-20T15:30:00Z",
    "data": {
        "video_id": "abc123",
        "detections": []
    },
    "signature": "hash_hmac"
}

Integração com Outros Serviços

1. Hugging Face

from huggingface_hub import HfApi

api = HfApi()
api.upload_file(
    path_or_fileobj="./video.mp4",
    path_in_repo="videos/test.mp4",
    repo_id="seu-espaco"
)

2. Sistemas de Notificação

def notify(detection):
    requests.post(
        "https://seu-servidor.com/notify",
        json={"detection": detection}
    )

Considerações de Segurança

  1. Autenticação

    • Token JWT obrigatório
    • Renovação automática
  2. Rate Limiting

    • Por IP e usuário
    • Cooldown progressivo
  3. Validação de Entrada

    • Tamanho máximo
    • Formatos permitidos
    • Sanitização