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