3.1 KiB
3.1 KiB
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é :
"models": {
"vision": "owl-v2", # Modèle principal
...
}
Fallback Automatique
Le système essaie les modèles dans cet ordre :
- Modèle principal configuré (owl-v2 par défaut)
- Grounding DINO
- 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 :
"llm": "qwen3-vl:8b"
Installation des Dépendances
# 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
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