Marcus Vinicius Zerbini Canhaço
feat: atualização do detector com otimizações para GPU T4
1429e38
|
raw
history blame
2.5 kB
# Arquitetura do Sistema
## Visão Geral
O sistema de detecção de riscos em vídeo é construído seguindo os princípios da Clean Architecture, garantindo separação de responsabilidades e facilitando a manutenção e evolução do código.
## Camadas da Arquitetura
### 1. Domain (Núcleo)
- Contém as regras de negócio e entidades fundamentais
- Independente de frameworks e bibliotecas externas
- Localização: `src/domain/`
#### Componentes Principais:
- `detectors/`: Implementações dos detectores (GPU/CPU)
- `entities/`: Objetos de domínio
- `factories/`: Fábricas para criação de objetos
- `interfaces/`: Contratos e interfaces
### 2. Application
- Implementa os casos de uso da aplicação
- Orquestra o fluxo de dados entre as camadas
- Localização: `src/application/`
#### Casos de Uso:
- `process_video`: Processamento e análise de vídeos
- Notificações de detecções
- Gerenciamento de cache
### 3. Infrastructure
- Implementações concretas de interfaces
- Integrações com serviços externos
- Localização: `src/infrastructure/`
#### Serviços:
- `WeaponDetectorService`: Serviço principal de detecção
- `NotificationService`: Serviço de notificações
- Gerenciamento de GPU/CPU
### 4. Presentation
- Interface com usuário via Gradio
- Localização: `src/presentation/`
#### Componentes:
- Interface web responsiva
- Configurações de processamento
- Visualização de resultados
## Fluxo de Dados
1. Upload do vídeo via interface Gradio
2. Processamento pelo caso de uso
3. Detecção de objetos usando GPU/CPU
4. Notificações (se configuradas)
5. Retorno dos resultados
## Otimizações
### GPU
- Detecção automática de hardware
- Configurações específicas para T4 e Zero-GPU
- Gerenciamento de memória otimizado
### CPU
- Fallback automático
- Otimizações para processamento em CPU
- Cache de resultados
## Diagrama de Componentes
```mermaid
graph TD
A[Interface Web] --> B[Casos de Uso]
B --> C[Detector Service]
C --> D[GPU Detector]
C --> E[CPU Detector]
B --> F[Notification Service]
D --> G[OWL-ViT Model]
E --> G
```
## Considerações de Design
1. **Inversão de Dependência**
- Interfaces abstratas no domínio
- Implementações concretas na infraestrutura
2. **Single Responsibility**
- Cada componente com responsabilidade única
- Separação clara de concerns
3. **Open/Closed**
- Extensível para novos detectores
- Fácil adição de novos serviços