File size: 6,893 Bytes
1429e38 eb1a752 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d 1429e38 f84a89d eb1a752 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 |
# 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.
## Modelo de IA: OWL-ViT
O OWL-ViT (Vision Transformer for Open-World Localization) é um modelo de visão computacional avançado que combina:
- Transformers para processamento de imagens
- Zero-shot learning para detecção de objetos
- Queries em linguagem natural para especificar alvos
### Considerações Técnicas
#### Versões do Modelo
1. **OWL-ViT Base (Atual)**
```python
model_name = "google/owlv2-base-patch16"
```
- Compatível com GPU T4
- Otimizado para inference
- Suporte a half precision
2. **OWL-ViT Ensemble (Descontinuado)**
```python
model_name = "google/owlv2-base-patch16-ensemble"
```
- Problemas de compatibilidade GPU
- Requer branch dev do Transformers
- Maior precisão, mas instável
#### Requisitos Específicos
```python
# Configurações necessárias para GPU
torch.backends.cuda.matmul.allow_tf32 = True
torch.backends.cudnn.benchmark = True
model = model.half() # Usar FP16
# Branch específico do Transformers
# pip install git+https://github.com/huggingface/transformers.git
```
### Como Funciona
1. **Processamento de Imagem**
- Divide a imagem em patches
- Processa usando arquitetura Transformer
- Gera representações visuais ricas
2. **Sistema de Queries**
- Aceita descrições em texto natural
- Exemplos de queries efetivas:
```python
queries = [
"uma arma de fogo",
"uma pistola",
"um rifle",
"uma faca",
"um objeto pontiagudo perigoso"
]
```
3. **Detecção Zero-shot**
- Não requer treinamento específico
- Adapta-se a novos objetos
- Alta precisão em tempo real
## Clean Architecture
### Camadas
```mermaid
graph TD
A[Presentation] --> B[Application]
B --> C[Domain]
D[Infrastructure] --> B
D --> C
```
1. **Domain (Núcleo)**
- Regras de negócio
- Entidades fundamentais
- Interfaces abstratas
2. **Application**
- Casos de uso
- Orquestração
- Lógica de aplicação
3. **Infrastructure**
- Implementações concretas
- Integrações externas
- Adaptadores
4. **Presentation**
- Interface Gradio
- APIs REST
- Webhooks
### Diagrama de Classes
```mermaid
classDiagram
class DetectorInterface {
<<interface>>
+process_video()
+detect_objects()
+clean_memory()
}
class WeaponDetectorGPU {
-model: OWLViT
+process_video()
+detect_objects()
}
class WeaponDetectorCPU {
-model: OWLViT
+process_video()
+detect_objects()
}
class NotificationService {
<<interface>>
+send_notification()
}
DetectorInterface <|-- WeaponDetectorGPU
DetectorInterface <|-- WeaponDetectorCPU
NotificationService <|-- EmailNotification
NotificationService <|-- TelegramNotification
```
## Extensibilidade
### 1. Novos Modelos de IA
```python
class NewDetector(DetectorInterface):
"""Implementação de novo detector."""
def process_video(self):
# Implementação específica
pass
```
### 2. Suporte a Hardware
- Abstração de hardware via interfaces
- Fácil adição de novos backends:
- TPU
- Neural Engine
- Outros aceleradores
### 3. Sistema de Notificações
```python
class NewNotificationService(NotificationService):
"""Novo serviço de notificação."""
def send_notification(self):
# Implementação específica
pass
```
## Fluxo de Processamento
```mermaid
sequenceDiagram
participant UI as Interface
participant App as Application
participant Det as Detector
participant Not as Notification
UI->>App: Upload Vídeo
App->>Det: Processa Vídeo
Det->>Det: Extrai Frames
loop Cada Frame
Det->>Det: Detecta Objetos
end
Det->>App: Retorna Resultados
App->>Not: Envia Notificação
App->>UI: Atualiza Interface
```
## Benefícios da Arquitetura
1. **Desacoplamento**
- Mudanças em uma camada não afetam outras
- Facilita testes unitários
- Permite evolução independente
2. **Manutenibilidade**
- Código organizado e previsível
- Responsabilidades bem definidas
- Fácil localização de problemas
3. **Escalabilidade**
- Novos detectores sem mudanças no core
- Múltiplos backends de processamento
- Sistemas de notificação plugáveis
## 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
|