Files
Geniusia_v2/geniusia2/VISION_MODELS_IMPLEMENTATION.md
2026-03-05 00:20:25 +01:00

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