116 lines
3.1 KiB
Markdown
116 lines
3.1 KiB
Markdown
# Implémentation des Modèles de Vision
|
|
|
|
## Modèles Implémentés
|
|
|
|
### 1. OWL-v2 (Open-World Localization v2)
|
|
- **Source**: Google Research / HuggingFace
|
|
- **Modèle**: `google/owlv2-base-patch16-ensemble`
|
|
- **Capacités**: Détection d'objets open-vocabulary (peut détecter n'importe quel objet décrit en texte)
|
|
- **Avantages**: Très flexible, bonne précision
|
|
- **Inconvénients**: Plus lent que YOLO
|
|
|
|
### 2. Grounding DINO
|
|
- **Source**: IDEA Research / HuggingFace
|
|
- **Modèle**: `IDEA-Research/grounding-dino-tiny`
|
|
- **Capacités**: Détection d'objets avec grounding textuel
|
|
- **Avantages**: Bon équilibre vitesse/précision
|
|
- **Inconvénients**: Nécessite des prompts bien formulés
|
|
|
|
### 3. YOLO-World
|
|
- **Source**: Ultralytics
|
|
- **Modèle**: `yolov8s-worldv2.pt`
|
|
- **Capacités**: Détection ultra-rapide avec vocabulaire ouvert
|
|
- **Avantages**: Très rapide, temps réel
|
|
- **Inconvénients**: Moins précis sur des objets UI complexes
|
|
|
|
## Configuration
|
|
|
|
Dans `config.py`, le modèle principal est configuré :
|
|
```python
|
|
"models": {
|
|
"vision": "owl-v2", # Modèle principal
|
|
...
|
|
}
|
|
```
|
|
|
|
## Fallback Automatique
|
|
|
|
Le système essaie les modèles dans cet ordre :
|
|
1. Modèle principal configuré (owl-v2 par défaut)
|
|
2. Grounding DINO
|
|
3. YOLO-World
|
|
|
|
Si un modèle échoue ou ne trouve rien, le suivant est automatiquement essayé.
|
|
|
|
## Utilisation avec Qwen3-VL
|
|
|
|
Le système utilise **Qwen3-VL:8b** via Ollama pour :
|
|
- Analyser les screenshots
|
|
- Générer des descriptions d'actions
|
|
- Raisonnement visuel sur les tâches
|
|
|
|
Configuration dans `config.py` :
|
|
```python
|
|
"llm": "qwen3-vl:8b"
|
|
```
|
|
|
|
## Installation des Dépendances
|
|
|
|
```bash
|
|
# Transformers pour OWL-v2 et Grounding DINO
|
|
pip install transformers torch
|
|
|
|
# Ultralytics pour YOLO-World
|
|
pip install ultralytics
|
|
|
|
# Ollama doit être installé séparément
|
|
# https://ollama.ai/
|
|
```
|
|
|
|
## Téléchargement des Modèles
|
|
|
|
Les modèles sont téléchargés automatiquement au premier usage :
|
|
- OWL-v2 : ~1.5 GB
|
|
- Grounding DINO : ~600 MB
|
|
- YOLO-World : ~50 MB
|
|
|
|
## Performance
|
|
|
|
| Modèle | Vitesse | Précision | Mémoire GPU |
|
|
|--------|---------|-----------|-------------|
|
|
| OWL-v2 | Lent (~2s) | Excellente | ~4 GB |
|
|
| Grounding DINO | Moyen (~1s) | Bonne | ~2 GB |
|
|
| YOLO-World | Rapide (~0.1s) | Moyenne | ~1 GB |
|
|
|
|
## Exemple d'Utilisation
|
|
|
|
```python
|
|
from core.utils.vision_utils import VisionUtils
|
|
import numpy as np
|
|
|
|
# Initialiser
|
|
vision = VisionUtils()
|
|
|
|
# Détecter un bouton
|
|
frame = np.array(...) # Screenshot
|
|
detections = vision.detect("button", frame)
|
|
|
|
# Avec modèle spécifique
|
|
detections = vision.detect("icon", frame, model="yolo")
|
|
```
|
|
|
|
## Résolution des Problèmes
|
|
|
|
### Erreur: "'list' object has no attribute 'dtype'"
|
|
✅ **Résolu** : Les arguments de `detect()` étaient inversés. Maintenant corrigé.
|
|
|
|
### Modèle ne se charge pas
|
|
- Vérifier la connexion internet (téléchargement initial)
|
|
- Vérifier l'espace disque disponible
|
|
- Vérifier que CUDA est disponible si GPU utilisé
|
|
|
|
### Détections vides
|
|
- Essayer avec un prompt plus descriptif
|
|
- Le système essaiera automatiquement les autres modèles
|
|
- Vérifier que l'élément est visible dans le screenshot
|