@libs-scripts-mep/mpai
Version:
Inference MPAI client
174 lines (119 loc) • 4.98 kB
Markdown
# MPAI — Métodos e Processos com IA
Ferramenta para captura de imagens, treinamento e inferência com modelos YOLOv8 (Ultralytics).
## ✨ Funcionalidades
- Captura de imagens com controle de parâmetros da câmera.
- Treinamento de modelos YOLOv8 (modo detect).
- Inferência em imagens e streaming de vídeo.
## 📦 Instalação
```bash
npm install @libs-scripts-mep/mpai
```
## 🔁 Atualização
```bash
npm update @libs-scripts-mep/mpai
```
## 🧹 Desinstalação
```bash
npm uninstall @libs-scripts-mep/mpai
```
## ⚙️ Dependências (Python)
> 💡 Recomendado: execute inference/dep_checker.py para instalar dependências compatíveis automaticamente (detecta e usa ambiente virtual se existir).
Ou instale manualmente:
```bash
pip install opencv-python pillow numpy ultralytics pyyaml websockets
```
## 🧪 Ambiente Virtual (opcional)
O comando abaixo cria um ambiente virtual para o projeto. O ambiente virtual pode ser ativado manualmente, ou seja, execute o comando abaixo na raiz do projeto.
```bash
python -m venv .venv
```
### Ativação:
> ⚠️ A ativação deve ser feita sempre que abrir o VS Code. Do contrário, será considerado o ambiente global.
PowerShell:
```powershell
.venv\Scripts\Activate.ps1
```
CMD:
```bash
.venv\Scripts\activate
```
Bash/Linux:
```bash
source .venv/bin/activate
```
## 📂 Dataset
O dataset é um conjunto de imagens anotadas no formato YOLO. Para criar o seu:
1. Use o script `data_collection/image_collector.py` para capturar imagens com variações de iluminação e ângulos.
2. As imagens vão para: `dataset/missing_annotation_images/`
3. Anote as imagens com ferramentas como [Make Sense](https://www.makesense.ai/)
4. Exporte no formato YOLO e organize:
```
dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
└── clases.txt # deve conter as classes anotadas na ordem correta, conforme utilizado na ferramenta de anotação
└── data.yaml # arquivo que será modificado pelo script `generate_data_yaml.py`
```
5. Execute o script `generate_data_yaml.py` para gerar o data.yaml.
> 💡 Dica: Separe as imagens anotadas para treino/validação antes de mover, para evitar confusão.
### 🛑 Ignorando dataset no Git
Adicione o seguinte ao `.gitignore` do repositório do script
```
node_modules/@libs-scripts-mep/mpai/dataset/*
!node_modules/@libs-scripts-mep/mpai/dataset/**/.gitkeep
!node_modules/@libs-scripts-mep/mpai/dataset/**/*.yaml
```
## 🏋️♂️ Treinamento
### Modelos disponíveis
| Modelo | Tamanho | Velocidade | Precisão | Indicação |
| --------- | ------- | -------------- | ----------- | ------------------------------- |
| `yolov8n` | \~6 MB | 🔥 Muito rápido | Baixa | Testes, dispositivos embarcados |
| `yolov8s` | \~11 MB | ⚡ Rápido | Média-baixa | Tempo real, baixa latência |
| `yolov8m` | \~25 MB | ⚖️ Balanceado | Média | GPU ou CPU robusta |
| `yolov8l` | \~45 MB | 🐢 Mais lento | Alta | Workstations com GPU |
| `yolov8x` | \~65 MB | 🐌 Lento | Muito alta | GPUs potentes |
um dos modelos acima deve ser indicado no `train.py`
```python
model = YOLO('yolov8m.pt')
```
> Atualmente este projeto suporta apenas o modo detect.
### Exemplo de treinamento:
``` python
# model_training/train.py
model.train(
data='data.yaml',
epochs=100,
imgsz=640,
batch=8,
project='runs',
name='meu_projeto',
exist_ok=True,
augment=True,
degrees=5,
scale=0.3,
fliplr=0.5,
flipud=0.1,
device='cpu' # ou '0' para GPU
)
```
### ⚠️ Treinamento com GPU
Versões do pytorch e torchvision especificas devem ser instaladas, dependendo do modelo da GPU (supoerte aos CUDA cores) da sua máquina.
Verifique os requisitos em [pytorch.org](https://pytorch.org/get-started/locally/).
### Parâmetros importantes
data: caminho do arquivo .yaml gerado pelo script `model_training\generate_data_yaml.py`
- `batch`: depende da RAM ou VRAM (tente 8 ou 16)
- `imgsz`: resolução da imagem
- `device`: "cpu" ou "0" (GPU)
- `augment`: habilita técnicas como rotação, flip e escala
- `pretrained`: usar pesos base (default: True)
## 🔍 Inferência
Você pode usar o script `mpai-server.py` para disponibilizar o modelo treinado via serviço HTTP, e o `mpai-client.js` para enviar imagens (base64) e receber as detecções.
Ou se preferir fazer um teste rápido do modelo treinado, usando o script `inference/infer_webcam_yolo.py`, apenas apontando o caminho para o modelo treinado:
``` python
# inference/infer_webcam_yolo.py
RELATIVE_PATH = "../../your/model/path/weights/best.pt"
```