Marcus Vinicius Zerbini Canhaço commited on
Commit
eb1a752
·
1 Parent(s): f84a89d

feat: atualização do detector com otimizações para GPU T4

Browse files
docs/api/interface.md CHANGED
@@ -22,6 +22,7 @@
22
  ### Exemplos de Uso
23
 
24
  1. **Upload Simples**
 
25
  ```python
26
  with gr.Blocks() as demo:
27
  video_input = gr.Video()
@@ -30,6 +31,7 @@
30
  ```
31
 
32
  2. **Configurações Avançadas**
 
33
  ```python
34
  with gr.Blocks() as demo:
35
  with gr.Row():
@@ -42,6 +44,7 @@
42
  ### Endpoints
43
 
44
  #### 1. Detecção em Vídeo
 
45
  ```http
46
  POST /api/detect
47
  Content-Type: multipart/form-data
@@ -54,6 +57,7 @@ Content-Type: multipart/form-data
54
  ```
55
 
56
  **Resposta:**
 
57
  ```json
58
  {
59
  "detections": [
@@ -78,6 +82,7 @@ Content-Type: multipart/form-data
78
  ```
79
 
80
  #### 2. Status do Serviço
 
81
  ```http
82
  GET /api/status
83
 
@@ -106,6 +111,7 @@ Response:
106
  ## Webhooks
107
 
108
  ### Configuração
 
109
  ```http
110
  POST /api/webhooks/configure
111
  {
@@ -116,6 +122,7 @@ POST /api/webhooks/configure
116
  ```
117
 
118
  ### Formato do Callback
 
119
  ```json
120
  {
121
  "event": "detection",
@@ -131,6 +138,7 @@ POST /api/webhooks/configure
131
  ## Integração com Outros Serviços
132
 
133
  ### 1. Hugging Face
 
134
  ```python
135
  from huggingface_hub import HfApi
136
 
@@ -143,6 +151,7 @@ api.upload_file(
143
  ```
144
 
145
  ### 2. Sistemas de Notificação
 
146
  ```python
147
  def notify(detection):
148
  requests.post(
@@ -164,4 +173,4 @@ def notify(detection):
164
  3. **Validação de Entrada**
165
  - Tamanho máximo
166
  - Formatos permitidos
167
- - Sanitização
 
22
  ### Exemplos de Uso
23
 
24
  1. **Upload Simples**
25
+
26
  ```python
27
  with gr.Blocks() as demo:
28
  video_input = gr.Video()
 
31
  ```
32
 
33
  2. **Configurações Avançadas**
34
+
35
  ```python
36
  with gr.Blocks() as demo:
37
  with gr.Row():
 
44
  ### Endpoints
45
 
46
  #### 1. Detecção em Vídeo
47
+
48
  ```http
49
  POST /api/detect
50
  Content-Type: multipart/form-data
 
57
  ```
58
 
59
  **Resposta:**
60
+
61
  ```json
62
  {
63
  "detections": [
 
82
  ```
83
 
84
  #### 2. Status do Serviço
85
+
86
  ```http
87
  GET /api/status
88
 
 
111
  ## Webhooks
112
 
113
  ### Configuração
114
+
115
  ```http
116
  POST /api/webhooks/configure
117
  {
 
122
  ```
123
 
124
  ### Formato do Callback
125
+
126
  ```json
127
  {
128
  "event": "detection",
 
138
  ## Integração com Outros Serviços
139
 
140
  ### 1. Hugging Face
141
+
142
  ```python
143
  from huggingface_hub import HfApi
144
 
 
151
  ```
152
 
153
  ### 2. Sistemas de Notificação
154
+
155
  ```python
156
  def notify(detection):
157
  requests.post(
 
173
  3. **Validação de Entrada**
174
  - Tamanho máximo
175
  - Formatos permitidos
176
+ - Sanitização
docs/architecture/overview.md CHANGED
@@ -4,6 +4,209 @@
4
 
5
  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.
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  ## Camadas da Arquitetura
8
 
9
  ### 1. Domain (Núcleo)
@@ -104,4 +307,4 @@ graph TD
104
  ### 3. Open/Closed
105
 
106
  - Extensível para novos detectores
107
- - Fácil adição de novos serviços
 
4
 
5
  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.
6
 
7
+ ## Modelo de IA: OWL-ViT
8
+
9
+ O OWL-ViT (Vision Transformer for Open-World Localization) é um modelo de visão computacional avançado que combina:
10
+
11
+ - Transformers para processamento de imagens
12
+ - Zero-shot learning para detecção de objetos
13
+ - Queries em linguagem natural para especificar alvos
14
+
15
+ ### Considerações Técnicas
16
+
17
+ #### Versões do Modelo
18
+
19
+ 1. **OWL-ViT Base (Atual)**
20
+
21
+ ```python
22
+ model_name = "google/owlv2-base-patch16"
23
+ ```
24
+
25
+ - Compatível com GPU T4
26
+ - Otimizado para inference
27
+ - Suporte a half precision
28
+
29
+ 2. **OWL-ViT Ensemble (Descontinuado)**
30
+
31
+ ```python
32
+ model_name = "google/owlv2-base-patch16-ensemble"
33
+ ```
34
+
35
+ - Problemas de compatibilidade GPU
36
+ - Requer branch dev do Transformers
37
+ - Maior precisão, mas instável
38
+
39
+ #### Requisitos Específicos
40
+
41
+ ```python
42
+ # Configurações necessárias para GPU
43
+ torch.backends.cuda.matmul.allow_tf32 = True
44
+ torch.backends.cudnn.benchmark = True
45
+ model = model.half() # Usar FP16
46
+
47
+ # Branch específico do Transformers
48
+ # pip install git+https://github.com/huggingface/transformers.git
49
+ ```
50
+
51
+ ### Como Funciona
52
+
53
+ 1. **Processamento de Imagem**
54
+ - Divide a imagem em patches
55
+ - Processa usando arquitetura Transformer
56
+ - Gera representações visuais ricas
57
+
58
+ 2. **Sistema de Queries**
59
+ - Aceita descrições em texto natural
60
+ - Exemplos de queries efetivas:
61
+
62
+ ```python
63
+ queries = [
64
+ "uma arma de fogo",
65
+ "uma pistola",
66
+ "um rifle",
67
+ "uma faca",
68
+ "um objeto pontiagudo perigoso"
69
+ ]
70
+ ```
71
+
72
+ 3. **Detecção Zero-shot**
73
+ - Não requer treinamento específico
74
+ - Adapta-se a novos objetos
75
+ - Alta precisão em tempo real
76
+
77
+ ## Clean Architecture
78
+
79
+ ### Camadas
80
+
81
+ ```mermaid
82
+ graph TD
83
+ A[Presentation] --> B[Application]
84
+ B --> C[Domain]
85
+ D[Infrastructure] --> B
86
+ D --> C
87
+ ```
88
+
89
+ 1. **Domain (Núcleo)**
90
+ - Regras de negócio
91
+ - Entidades fundamentais
92
+ - Interfaces abstratas
93
+
94
+ 2. **Application**
95
+ - Casos de uso
96
+ - Orquestração
97
+ - Lógica de aplicação
98
+
99
+ 3. **Infrastructure**
100
+ - Implementações concretas
101
+ - Integrações externas
102
+ - Adaptadores
103
+
104
+ 4. **Presentation**
105
+ - Interface Gradio
106
+ - APIs REST
107
+ - Webhooks
108
+
109
+ ### Diagrama de Classes
110
+
111
+ ```mermaid
112
+ classDiagram
113
+ class DetectorInterface {
114
+ <<interface>>
115
+ +process_video()
116
+ +detect_objects()
117
+ +clean_memory()
118
+ }
119
+
120
+ class WeaponDetectorGPU {
121
+ -model: OWLViT
122
+ +process_video()
123
+ +detect_objects()
124
+ }
125
+
126
+ class WeaponDetectorCPU {
127
+ -model: OWLViT
128
+ +process_video()
129
+ +detect_objects()
130
+ }
131
+
132
+ class NotificationService {
133
+ <<interface>>
134
+ +send_notification()
135
+ }
136
+
137
+ DetectorInterface <|-- WeaponDetectorGPU
138
+ DetectorInterface <|-- WeaponDetectorCPU
139
+ NotificationService <|-- EmailNotification
140
+ NotificationService <|-- TelegramNotification
141
+ ```
142
+
143
+ ## Extensibilidade
144
+
145
+ ### 1. Novos Modelos de IA
146
+
147
+ ```python
148
+ class NewDetector(DetectorInterface):
149
+ """Implementação de novo detector."""
150
+ def process_video(self):
151
+ # Implementação específica
152
+ pass
153
+ ```
154
+
155
+ ### 2. Suporte a Hardware
156
+
157
+ - Abstração de hardware via interfaces
158
+ - Fácil adição de novos backends:
159
+ - TPU
160
+ - Neural Engine
161
+ - Outros aceleradores
162
+
163
+ ### 3. Sistema de Notificações
164
+
165
+ ```python
166
+ class NewNotificationService(NotificationService):
167
+ """Novo serviço de notificação."""
168
+ def send_notification(self):
169
+ # Implementação específica
170
+ pass
171
+ ```
172
+
173
+ ## Fluxo de Processamento
174
+
175
+ ```mermaid
176
+ sequenceDiagram
177
+ participant UI as Interface
178
+ participant App as Application
179
+ participant Det as Detector
180
+ participant Not as Notification
181
+
182
+ UI->>App: Upload Vídeo
183
+ App->>Det: Processa Vídeo
184
+ Det->>Det: Extrai Frames
185
+ loop Cada Frame
186
+ Det->>Det: Detecta Objetos
187
+ end
188
+ Det->>App: Retorna Resultados
189
+ App->>Not: Envia Notificação
190
+ App->>UI: Atualiza Interface
191
+ ```
192
+
193
+ ## Benefícios da Arquitetura
194
+
195
+ 1. **Desacoplamento**
196
+ - Mudanças em uma camada não afetam outras
197
+ - Facilita testes unitários
198
+ - Permite evolução independente
199
+
200
+ 2. **Manutenibilidade**
201
+ - Código organizado e previsível
202
+ - Responsabilidades bem definidas
203
+ - Fácil localização de problemas
204
+
205
+ 3. **Escalabilidade**
206
+ - Novos detectores sem mudanças no core
207
+ - Múltiplos backends de processamento
208
+ - Sistemas de notificação plugáveis
209
+
210
  ## Camadas da Arquitetura
211
 
212
  ### 1. Domain (Núcleo)
 
307
  ### 3. Open/Closed
308
 
309
  - Extensível para novos detectores
310
+ - Fácil adição de novos serviços
docs/development/contributing.md CHANGED
@@ -12,12 +12,14 @@
12
  - Python Test Explorer
13
 
14
  2. **Configuração do Git**
 
15
  ```bash
16
  git config --global user.name "Seu Nome"
17
  git config --global user.email "[email protected]"
18
  ```
19
 
20
  3. **Pre-commit Hooks**
 
21
  ```bash
22
  pip install pre-commit
23
  pre-commit install
@@ -26,12 +28,14 @@
26
  ## Padrões de Código
27
 
28
  ### 1. Estilo
 
29
  - PEP 8
30
  - Máximo 88 caracteres por linha
31
  - Docstrings em todas as funções/classes
32
  - Type hints obrigatórios
33
 
34
  Exemplo:
 
35
  ```python
36
  def process_frame(
37
  frame: np.ndarray,
@@ -50,7 +54,8 @@ def process_frame(
50
  ```
51
 
52
  ### 2. Estrutura de Arquivos
53
- ```
 
54
  src/
55
  ├── domain/
56
  │ ├── entities/
@@ -66,11 +71,13 @@ src/
66
  ```
67
 
68
  ### 3. Testes
 
69
  - pytest para testes unitários
70
  - pytest-cov para cobertura
71
  - Mocking para dependências externas
72
 
73
  Exemplo:
 
74
  ```python
75
  def test_process_frame():
76
  detector = WeaponDetector()
@@ -82,23 +89,15 @@ def test_process_frame():
82
  ## Fluxo de Trabalho
83
 
84
  ### 1. Branches
 
85
  - `main`: Produção
86
  - `develop`: Desenvolvimento
87
  - `feature/*`: Novas funcionalidades
88
  - `fix/*`: Correções
89
  - `release/*`: Preparação de release
90
 
91
- ### 2. Commits
92
- ```
93
- feat: Adiciona detecção em tempo real
94
- ^--^ ^------------------------^
95
- | |
96
- | +-> Descrição no presente
97
- |
98
- +-------> Tipo: feat, fix, docs, style, refactor
99
- ```
100
 
101
- ### 3. Pull Requests
102
  - Template obrigatório
103
  - Code review necessário
104
  - CI deve passar
@@ -107,6 +106,7 @@ feat: Adiciona detecção em tempo real
107
  ## CI/CD
108
 
109
  ### GitHub Actions
 
110
  ```yaml
111
  name: CI
112
 
@@ -130,12 +130,15 @@ jobs:
130
  ```
131
 
132
  ### Deploy
 
133
  1. Staging
 
134
  ```bash
135
  ./deploy.sh staging
136
  ```
137
 
138
  2. Produção
 
139
  ```bash
140
  ./deploy.sh production
141
  ```
@@ -143,6 +146,7 @@ jobs:
143
  ## Debugging
144
 
145
  ### 1. Logs
 
146
  ```python
147
  import logging
148
 
@@ -151,6 +155,7 @@ logger.info("Processando frame %d", frame_number)
151
  ```
152
 
153
  ### 2. Profiling
 
154
  ```python
155
  import cProfile
156
 
@@ -163,6 +168,7 @@ def profile_detection():
163
  ```
164
 
165
  ### 3. GPU Monitoring
 
166
  ```python
167
  import torch
168
 
@@ -173,11 +179,13 @@ def check_gpu():
173
  ## Otimizações
174
 
175
  ### 1. GPU
 
176
  - Batch processing
177
  - Memória pinned
178
  - Async data loading
179
 
180
  ### 2. CPU
 
181
  - Multiprocessing
182
  - NumPy vectorization
183
  - Cache de resultados
@@ -185,11 +193,13 @@ def check_gpu():
185
  ## Segurança
186
 
187
  ### 1. Dependências
 
188
  - Safety check
189
  - Dependabot
190
  - SAST scanning
191
 
192
  ### 2. Código
 
193
  - Input validation
194
  - Error handling
195
  - Secrets management
@@ -197,6 +207,7 @@ def check_gpu():
197
  ## Documentação
198
 
199
  ### 1. Docstrings
 
200
  ```python
201
  def detect_objects(
202
  self,
@@ -217,12 +228,14 @@ def detect_objects(
217
  ```
218
 
219
  ### 2. Sphinx
 
220
  ```bash
221
  cd docs
222
  make html
223
  ```
224
 
225
  ### 3. README
 
226
  - Badges atualizados
227
  - Exemplos práticos
228
- - Troubleshooting comum
 
12
  - Python Test Explorer
13
 
14
  2. **Configuração do Git**
15
+
16
  ```bash
17
  git config --global user.name "Seu Nome"
18
  git config --global user.email "[email protected]"
19
  ```
20
 
21
  3. **Pre-commit Hooks**
22
+
23
  ```bash
24
  pip install pre-commit
25
  pre-commit install
 
28
  ## Padrões de Código
29
 
30
  ### 1. Estilo
31
+
32
  - PEP 8
33
  - Máximo 88 caracteres por linha
34
  - Docstrings em todas as funções/classes
35
  - Type hints obrigatórios
36
 
37
  Exemplo:
38
+
39
  ```python
40
  def process_frame(
41
  frame: np.ndarray,
 
54
  ```
55
 
56
  ### 2. Estrutura de Arquivos
57
+
58
+ ```md
59
  src/
60
  ├── domain/
61
  │ ├── entities/
 
71
  ```
72
 
73
  ### 3. Testes
74
+
75
  - pytest para testes unitários
76
  - pytest-cov para cobertura
77
  - Mocking para dependências externas
78
 
79
  Exemplo:
80
+
81
  ```python
82
  def test_process_frame():
83
  detector = WeaponDetector()
 
89
  ## Fluxo de Trabalho
90
 
91
  ### 1. Branches
92
+
93
  - `main`: Produção
94
  - `develop`: Desenvolvimento
95
  - `feature/*`: Novas funcionalidades
96
  - `fix/*`: Correções
97
  - `release/*`: Preparação de release
98
 
99
+ ### 2. Pull Requests
 
 
 
 
 
 
 
 
100
 
 
101
  - Template obrigatório
102
  - Code review necessário
103
  - CI deve passar
 
106
  ## CI/CD
107
 
108
  ### GitHub Actions
109
+
110
  ```yaml
111
  name: CI
112
 
 
130
  ```
131
 
132
  ### Deploy
133
+
134
  1. Staging
135
+
136
  ```bash
137
  ./deploy.sh staging
138
  ```
139
 
140
  2. Produção
141
+
142
  ```bash
143
  ./deploy.sh production
144
  ```
 
146
  ## Debugging
147
 
148
  ### 1. Logs
149
+
150
  ```python
151
  import logging
152
 
 
155
  ```
156
 
157
  ### 2. Profiling
158
+
159
  ```python
160
  import cProfile
161
 
 
168
  ```
169
 
170
  ### 3. GPU Monitoring
171
+
172
  ```python
173
  import torch
174
 
 
179
  ## Otimizações
180
 
181
  ### 1. GPU
182
+
183
  - Batch processing
184
  - Memória pinned
185
  - Async data loading
186
 
187
  ### 2. CPU
188
+
189
  - Multiprocessing
190
  - NumPy vectorization
191
  - Cache de resultados
 
193
  ## Segurança
194
 
195
  ### 1. Dependências
196
+
197
  - Safety check
198
  - Dependabot
199
  - SAST scanning
200
 
201
  ### 2. Código
202
+
203
  - Input validation
204
  - Error handling
205
  - Secrets management
 
207
  ## Documentação
208
 
209
  ### 1. Docstrings
210
+
211
  ```python
212
  def detect_objects(
213
  self,
 
228
  ```
229
 
230
  ### 2. Sphinx
231
+
232
  ```bash
233
  cd docs
234
  make html
235
  ```
236
 
237
  ### 3. README
238
+
239
  - Badges atualizados
240
  - Exemplos práticos
241
+ - Troubleshooting comum
docs/development/development.md CHANGED
@@ -199,4 +199,4 @@ def profile_detection():
199
  - Multiprocessing
200
  - NumPy vectorization
201
  - Cache de resultados
202
- - Otimização de memória
 
199
  - Multiprocessing
200
  - NumPy vectorization
201
  - Cache de resultados
202
+ - Otimização de memória
docs/faq.md CHANGED
@@ -7,7 +7,74 @@
7
  O sistema utiliza um modelo de IA (OWL-ViT) para detectar objetos de risco em vídeos.
8
  O processamento pode ser feito em GPU ou CPU, com otimizações específicas para cada caso.
9
 
10
- ### Quais objetos são detectados?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
  #### Armas de Fogo
13
 
@@ -31,13 +98,13 @@ O processamento pode ser feito em GPU ou CPU, com otimizações específicas par
31
 
32
  ### Requisitos de Hardware
33
 
34
- #### GPU
35
 
36
  - NVIDIA T4 16GB (recomendado)
37
  - CUDA 11.8+
38
  - 16GB RAM
39
 
40
- #### CPU
41
 
42
  - 8+ cores
43
  - 32GB RAM
@@ -68,15 +135,15 @@ pip install torch torchvision --extra-index-url https://download.pytorch.org/whl
68
 
69
  ## Performance
70
 
71
- ### Como melhorar a performance?
72
 
73
- #### GPU
74
 
75
  - Use batch processing
76
  - Ative half precision
77
  - Otimize o cache de modelos
78
 
79
- #### CPU
80
 
81
  - Ative multiprocessing
82
  - Use vetorização NumPy
@@ -85,12 +152,12 @@ pip install torch torchvision --extra-index-url https://download.pytorch.org/whl
85
  ### Configurações Recomendadas
86
 
87
  ```plaintext
88
- # GPU T4
89
  GPU_MEMORY_FRACTION=0.9
90
  BATCH_SIZE=16
91
  USE_HALF_PRECISION=true
92
 
93
- # CPU
94
  MAX_WORKERS=8
95
  CACHE_SIZE=1000
96
  USE_MULTIPROCESSING=true
@@ -98,7 +165,7 @@ USE_MULTIPROCESSING=true
98
 
99
  ## Deployment
100
 
101
- ### Como fazer deploy no Hugging Face?
102
 
103
  1. Configure as credenciais:
104
 
@@ -119,7 +186,7 @@ USE_MULTIPROCESSING=true
119
  ./deploy.sh
120
  ```
121
 
122
- ### Monitoramento
123
 
124
  - Use os logs em `logs/app.log`
125
  - Monitore GPU com `nvidia-smi`
@@ -127,7 +194,7 @@ USE_MULTIPROCESSING=true
127
 
128
  ## Segurança
129
 
130
- ### Como proteger as credenciais?
131
 
132
  1. Use variáveis de ambiente:
133
 
@@ -142,4 +209,24 @@ USE_MULTIPROCESSING=true
142
 
143
  - Limite o tamanho dos vídeos
144
  - Verifique formatos permitidos
145
- - Sanitize inputs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  O sistema utiliza um modelo de IA (OWL-ViT) para detectar objetos de risco em vídeos.
8
  O processamento pode ser feito em GPU ou CPU, com otimizações específicas para cada caso.
9
 
10
+ ### O que é o OWL-ViT?
11
+
12
+ O OWL-ViT (Vision Transformer for Open-World Localization) é um modelo de IA que:
13
+
14
+ - Usa arquitetura Transformer para processar imagens
15
+ - Permite detecção zero-shot de objetos
16
+ - Aceita queries em linguagem natural
17
+ - Não precisa de treinamento específico para novos objetos
18
+
19
+ ### Problemas Conhecidos com OWL-ViT
20
+
21
+ #### Limitações do Modelo Ensemble
22
+
23
+ O modelo `owlv2-base-patch16-ensemble` apresenta incompatibilidades com processamento GPU:
24
+
25
+ - Conflitos com versões estáveis do Transformers
26
+ - Problemas de memória em GPUs com menos de 16GB
27
+ - Instabilidade em batch processing
28
+
29
+ **Solução Implementada:**
30
+
31
+ 1. Mudança para modelo base: `owlv2-base-patch16`
32
+ 2. Atualização do Transformers para branch de desenvolvimento:
33
+
34
+ ```bash
35
+ pip install git+https://github.com/huggingface/transformers.git
36
+ ```
37
+
38
+ 3. Ajustes nas configurações de memória GPU:
39
+
40
+ ```python
41
+ model = model.to(device='cuda', dtype=torch.float16)
42
+ ```
43
+
44
+ #### Comparação de Versões
45
+
46
+ 1. **Modelo Base**
47
+ - Mais estável
48
+ - Menor consumo de memória
49
+ - Compatível com mais GPUs
50
+
51
+ 2. **Modelo Ensemble**
52
+ - Maior precisão
53
+ - Requer mais recursos
54
+ - Melhor para CPU
55
+
56
+ ### Como fazer queries efetivas para o OWL-ViT?
57
+
58
+ Para melhores resultados, use estas técnicas:
59
+
60
+ 1. **Seja Específico**
61
+ - Bom: "uma pistola preta"
62
+ - Ruim: "arma"
63
+
64
+ 2. **Use Variações**
65
+ - "uma arma de fogo"
66
+ - "uma pistola"
67
+ - "um revólver"
68
+
69
+ 3. **Inclua Contexto**
70
+ - "uma faca na mão de alguém"
71
+ - "uma arma apontada"
72
+
73
+ 4. **Descreva Características**
74
+ - "uma faca com lâmina metálica"
75
+ - "um rifle com coronha"
76
+
77
+ ### Tipos de Objetos Detectados
78
 
79
  #### Armas de Fogo
80
 
 
98
 
99
  ### Requisitos de Hardware
100
 
101
+ #### Especificações GPU
102
 
103
  - NVIDIA T4 16GB (recomendado)
104
  - CUDA 11.8+
105
  - 16GB RAM
106
 
107
+ #### Especificações CPU
108
 
109
  - 8+ cores
110
  - 32GB RAM
 
135
 
136
  ## Performance
137
 
138
+ ### Otimizações de Sistema
139
 
140
+ #### Ajustes GPU
141
 
142
  - Use batch processing
143
  - Ative half precision
144
  - Otimize o cache de modelos
145
 
146
+ #### Ajustes CPU
147
 
148
  - Ative multiprocessing
149
  - Use vetorização NumPy
 
152
  ### Configurações Recomendadas
153
 
154
  ```plaintext
155
+ // Configurações para GPU T4
156
  GPU_MEMORY_FRACTION=0.9
157
  BATCH_SIZE=16
158
  USE_HALF_PRECISION=true
159
 
160
+ // Configurações para CPU
161
  MAX_WORKERS=8
162
  CACHE_SIZE=1000
163
  USE_MULTIPROCESSING=true
 
165
 
166
  ## Deployment
167
 
168
+ ### Processo de Deploy no Hugging Face
169
 
170
  1. Configure as credenciais:
171
 
 
186
  ./deploy.sh
187
  ```
188
 
189
+ ### Sistema de Monitoramento
190
 
191
  - Use os logs em `logs/app.log`
192
  - Monitore GPU com `nvidia-smi`
 
194
 
195
  ## Segurança
196
 
197
+ ### Gerenciamento de Credenciais
198
 
199
  1. Use variáveis de ambiente:
200
 
 
209
 
210
  - Limite o tamanho dos vídeos
211
  - Verifique formatos permitidos
212
+ - Sanitize inputs
213
+
214
+ ```text
215
+ HUGGINGFACE_TOKEN=seu_token
216
+ GPU_MEMORY_FRACTION=0.9
217
+ MAX_CONCURRENT_REQUESTS=2
218
+ ```
219
+
220
+ ```text
221
+ USE_GPU=true
222
+ GPU_DEVICE=0
223
+ ```
224
+
225
+ ```text
226
+ USE_GPU=false
227
+ ```
228
+
229
+ ```text
230
+ HF_SPACE_ID=seu-espaco
231
+ HF_TOKEN=seu_token
232
+ ```
docs/scenarios.md ADDED
@@ -0,0 +1,219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Cenários e Casos de Uso
2
+
3
+ ## Cenários de Produção
4
+
5
+ ### Alta Demanda
6
+
7
+ #### Múltiplas Requisições
8
+
9
+ - Sistema de fila com priorização
10
+ - Balanceamento GPU/CPU automático
11
+ - Cache inteligente de resultados
12
+
13
+ ```python
14
+ # Exemplo de configuração de fila
15
+ demo = demo.queue(
16
+ api_open=False,
17
+ max_size=10,
18
+ concurrency_count=2
19
+ )
20
+ ```
21
+
22
+ #### Processamento em Lote
23
+
24
+ - Agendamento de análises
25
+ - Otimização de recursos
26
+ - Relatórios consolidados
27
+
28
+ ### Recuperação e Resiliência
29
+
30
+ #### Tratamento de Falhas
31
+
32
+ ```python
33
+ try:
34
+ result = detector.process_video(video_path)
35
+ except GPUOutOfMemoryError:
36
+ # Fallback para CPU
37
+ result = cpu_detector.process_video(video_path)
38
+ except NetworkError:
39
+ # Retry com backoff exponencial
40
+ result = retry_with_backoff(process_video, video_path)
41
+ ```
42
+
43
+ #### Persistência de Estado
44
+
45
+ - Checkpoints de processamento
46
+ - Retomada após falhas
47
+ - Backup de configurações
48
+
49
+ ## Cenários de Integração
50
+
51
+ ### Sistemas de Vigilância
52
+
53
+ #### CCTV e Câmeras IP
54
+
55
+ ```python
56
+ # Exemplo de integração com RTSP
57
+ stream_url = "rtsp://camera.local/stream1"
58
+ detector.process_stream(stream_url)
59
+ ```
60
+
61
+ #### Sistemas Legados
62
+
63
+ - Suporte a formatos antigos
64
+ - APIs de compatibilidade
65
+ - Conversão de protocolos
66
+
67
+ ### Compliance e Segurança
68
+
69
+ #### LGPD/GDPR
70
+
71
+ - Retenção configurável de dados
72
+ - Anonimização automática
73
+ - Logs de auditoria detalhados
74
+
75
+ ```python
76
+ # Exemplo de política de retenção
77
+ retention_policy = {
78
+ "video_data": "7d",
79
+ "detection_logs": "30d",
80
+ "audit_logs": "365d"
81
+ }
82
+ ```
83
+
84
+ #### Segurança
85
+
86
+ - TLS/SSL para todas as conexões
87
+ - Autenticação JWT
88
+ - Rate limiting por IP/usuário
89
+
90
+ ## Limitações e Contornos
91
+
92
+ ### Detecção
93
+
94
+ #### Falsos Positivos
95
+
96
+ - Objetos similares (ex: guarda-chuvas vs. armas)
97
+ - Condições de baixa luminosidade
98
+ - Ângulos desfavoráveis
99
+
100
+ **Soluções:**
101
+
102
+ ```python
103
+ # Ajuste de confiança por contexto
104
+ if low_light_condition:
105
+ threshold = 0.7 # Mais restritivo
106
+ else:
107
+ threshold = 0.5 # Padrão
108
+ ```
109
+
110
+ #### Falsos Negativos
111
+
112
+ - Objetos parcialmente visíveis
113
+ - Movimento rápido
114
+ - Oclusões
115
+
116
+ **Mitigações:**
117
+
118
+ - Processamento de múltiplos frames
119
+ - Análise de sequência temporal
120
+ - Fusão de detecções
121
+
122
+ ### Performance
123
+
124
+ #### Gargalos Conhecidos
125
+
126
+ 1. **Vídeos Longos**
127
+
128
+ ```python
129
+ # Processamento em chunks
130
+ chunk_size = 60 # segundos
131
+ for chunk in video.split_chunks(chunk_size):
132
+ process_chunk(chunk)
133
+ ```
134
+
135
+ 2. **Alta Resolução**
136
+ - Downscaling automático
137
+ - Processamento em tiles
138
+ - Balanceamento qualidade/performance
139
+
140
+ #### Limites do Sistema
141
+
142
+ | Recurso | Limite | Observação |
143
+ |---------|--------|------------|
144
+ | Vídeo | 100MB | Por upload |
145
+ | Duração | 5min | Por análise |
146
+ | Usuários | 10 | Simultâneos |
147
+
148
+ ## Melhores Práticas
149
+
150
+ ### Preparação de Dados
151
+
152
+ #### Vídeos
153
+
154
+ - Compressão H.264/H.265
155
+ - Resolução máxima 1080p
156
+ - FPS entre 24-30
157
+
158
+ ```bash
159
+ # Exemplo de otimização com ffmpeg
160
+ ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium output.mp4
161
+ ```
162
+
163
+ #### Formato Ideal
164
+
165
+ - Codec: H.264
166
+ - Container: MP4
167
+ - Bitrate: 2-5 Mbps
168
+
169
+ ### Monitoramento
170
+
171
+ #### Métricas Críticas
172
+
173
+ ```python
174
+ metrics = {
175
+ "detection_rate": detections/total_frames,
176
+ "processing_time": end_time - start_time,
177
+ "gpu_utilization": gpu_util
178
+ }
179
+ ```
180
+
181
+ #### Sistema de Alertas
182
+
183
+ - Thresholds configuráveis
184
+ - Notificações em tempo real
185
+ - Ações automáticas
186
+
187
+ ### Backup e DR
188
+
189
+ #### Estratégia
190
+
191
+ 1. Backup incremental de dados
192
+ 2. Snapshot diário de configurações
193
+ 3. Replicação de logs
194
+
195
+ #### Recuperação
196
+
197
+ 1. Restore automatizado
198
+ 2. Testes periódicos
199
+ 3. Documentação detalhada
200
+
201
+ ## Expansão Futura
202
+
203
+ ### Novos Modelos
204
+
205
+ - Integração plug-and-play
206
+ - Versionamento de modelos
207
+ - A/B testing
208
+
209
+ ### Novas Plataformas
210
+
211
+ - Suporte a TPU
212
+ - Apple Neural Engine
213
+ - Edge devices
214
+
215
+ ### Novos Casos de Uso
216
+
217
+ - Análise comportamental
218
+ - Detecção de anomalias
219
+ - Rastreamento de objetos
docs/setup/installation.md CHANGED
@@ -3,12 +3,14 @@
3
  ## Requisitos do Sistema
4
 
5
  ### Hardware Recomendado
6
- - **GPU**: NVIDIA T4 16GB ou superior
7
- - **CPU**: 4+ cores
8
- - **RAM**: 16GB mínimo
 
9
  - **Armazenamento**: 10GB+ disponível
10
 
11
  ### Software Necessário
 
12
  - Python 3.10+
13
  - CUDA 11.8+ (para GPU)
14
  - Git
@@ -16,30 +18,35 @@
16
  ## Instalação Local
17
 
18
  1. Clone o repositório:
19
- ```bash
20
- git clone https://github.com/seu-usuario/hackatoon-1iadt.git
21
- cd hackatoon-1iadt
22
- ```
 
23
 
24
  2. Crie e ative um ambiente virtual:
25
- ```bash
26
- python -m venv venv
27
- source venv/bin/activate # Linux/Mac
28
- .\venv\Scripts\activate # Windows
29
- ```
 
30
 
31
  3. Instale as dependências:
32
- ```bash
33
- pip install -r requirements.txt
34
- ```
 
35
 
36
  4. Configure as variáveis de ambiente:
37
- ```bash
38
- cp .env.example .env
39
- ```
 
40
 
41
  Edite o arquivo `.env` com suas configurações:
42
- ```
 
43
  HUGGINGFACE_TOKEN=seu_token
44
  GPU_MEMORY_FRACTION=0.9
45
  MAX_CONCURRENT_REQUESTS=2
@@ -47,57 +54,67 @@ MAX_CONCURRENT_REQUESTS=2
47
 
48
  ## Configuração do Ambiente
49
 
50
- ### GPU (NVIDIA)
51
 
52
  1. Verifique a instalação do CUDA:
53
- ```bash
54
- nvidia-smi
55
- ```
 
56
 
57
  2. Ajuste as configurações de GPU em `.env`:
58
- ```
59
- USE_GPU=true
60
- GPU_DEVICE=0
61
- ```
62
 
63
- ### CPU
 
 
 
 
 
64
 
65
  Para usar apenas CPU:
66
- ```
 
67
  USE_GPU=false
68
  ```
69
 
70
- ## Deployment no Hugging Face
71
 
72
- 1. Configure as variáveis de ambiente do Hugging Face:
73
- ```bash
74
- cp .env.example .env.huggingface
75
- ```
 
 
 
76
 
77
  2. Edite `.env.huggingface`:
78
- ```
79
- HF_SPACE_ID=seu-espaco
80
- HF_TOKEN=seu_token
81
- ```
 
82
 
83
  3. Execute o deploy:
84
- ```bash
85
- ./deploy.sh
86
- ```
 
87
 
88
  ## Verificação da Instalação
89
 
90
  1. Execute os testes:
91
- ```bash
92
- pytest
93
- ```
 
94
 
95
  2. Inicie a aplicação:
96
- ```bash
97
- python app.py
98
- ```
99
 
100
- 3. Acesse: http://localhost:7860
 
 
 
 
101
 
102
  ## Troubleshooting
103
 
@@ -115,7 +132,7 @@ python app.py
115
  - Verifique credenciais do Hugging Face
116
  - Confirme permissões do espaço
117
 
118
- ### Logs
119
 
120
  - Logs da aplicação: `logs/app.log`
121
  - Logs do GPU: `logs/gpu.log`
@@ -123,6 +140,7 @@ python app.py
123
  ## Suporte
124
 
125
  Para problemas e dúvidas:
 
126
  1. Abra uma issue no GitHub
127
  2. Consulte a documentação completa
128
- 3. Entre em contato com a equipe de suporte
 
3
  ## Requisitos do Sistema
4
 
5
  ### Hardware Recomendado
6
+
7
+ - **Processador**: NVIDIA T4 16GB ou superior
8
+ - **Processamento**: 4+ cores
9
+ - **Memória**: 16GB mínimo
10
  - **Armazenamento**: 10GB+ disponível
11
 
12
  ### Software Necessário
13
+
14
  - Python 3.10+
15
  - CUDA 11.8+ (para GPU)
16
  - Git
 
18
  ## Instalação Local
19
 
20
  1. Clone o repositório:
21
+
22
+ ```bash
23
+ git clone https://github.com/seu-usuario/hackatoon-1iadt.git
24
+ cd hackatoon-1iadt
25
+ ```
26
 
27
  2. Crie e ative um ambiente virtual:
28
+
29
+ ```bash
30
+ python -m venv venv
31
+ source venv/bin/activate # Linux/Mac
32
+ .\venv\Scripts\activate # Windows
33
+ ```
34
 
35
  3. Instale as dependências:
36
+
37
+ ```bash
38
+ pip install -r requirements.txt
39
+ ```
40
 
41
  4. Configure as variáveis de ambiente:
42
+
43
+ ```bash
44
+ cp .env.example .env
45
+ ```
46
 
47
  Edite o arquivo `.env` com suas configurações:
48
+
49
+ ```plaintext
50
  HUGGINGFACE_TOKEN=seu_token
51
  GPU_MEMORY_FRACTION=0.9
52
  MAX_CONCURRENT_REQUESTS=2
 
54
 
55
  ## Configuração do Ambiente
56
 
57
+ ### Configuração NVIDIA
58
 
59
  1. Verifique a instalação do CUDA:
60
+
61
+ ```bash
62
+ nvidia-smi
63
+ ```
64
 
65
  2. Ajuste as configurações de GPU em `.env`:
 
 
 
 
66
 
67
+ ```plaintext
68
+ USE_GPU=true
69
+ GPU_DEVICE=0
70
+ ```
71
+
72
+ ### Modo CPU
73
 
74
  Para usar apenas CPU:
75
+
76
+ ```plaintext
77
  USE_GPU=false
78
  ```
79
 
80
+ ## Processo de Deploy
81
 
82
+ ### Deploy no Hugging Face
83
+
84
+ 1. Configure as variáveis de ambiente:
85
+
86
+ ```bash
87
+ cp .env.example .env.huggingface
88
+ ```
89
 
90
  2. Edite `.env.huggingface`:
91
+
92
+ ```plaintext
93
+ HF_SPACE_ID=seu-espaco
94
+ HF_TOKEN=seu_token
95
+ ```
96
 
97
  3. Execute o deploy:
98
+
99
+ ```bash
100
+ ./deploy.sh
101
+ ```
102
 
103
  ## Verificação da Instalação
104
 
105
  1. Execute os testes:
106
+
107
+ ```bash
108
+ pytest
109
+ ```
110
 
111
  2. Inicie a aplicação:
 
 
 
112
 
113
+ ```bash
114
+ python app.py
115
+ ```
116
+
117
+ 3. Acesse: <http://localhost:7860>
118
 
119
  ## Troubleshooting
120
 
 
132
  - Verifique credenciais do Hugging Face
133
  - Confirme permissões do espaço
134
 
135
+ ### Sistema de Logs
136
 
137
  - Logs da aplicação: `logs/app.log`
138
  - Logs do GPU: `logs/gpu.log`
 
140
  ## Suporte
141
 
142
  Para problemas e dúvidas:
143
+
144
  1. Abra uma issue no GitHub
145
  2. Consulte a documentação completa
146
+ 3. Entre em contato com a equipe de suporte
src/main.py CHANGED
@@ -135,7 +135,7 @@ def main():
135
  api_open=False,
136
  max_size=queue_size,
137
  status_update_rate="auto",
138
- concurrency_count=max_concurrent
139
  )
140
 
141
  # Launch
 
135
  api_open=False,
136
  max_size=queue_size,
137
  status_update_rate="auto",
138
+ default_concurrency_limit=max_concurrent
139
  )
140
 
141
  # Launch