- Frontend v4 accessible sur réseau local (192.168.1.40) - Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard) - Ollama GPU fonctionnel - Self-healing interactif - Dashboard confiance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.0 KiB
5.0 KiB
Détection UI Hybride - Résumé d'Implémentation
Date: 22 Novembre 2024
Status: ✅ OPÉRATIONNEL
Vue d'Ensemble
Le système de détection UI hybride combine OpenCV (rapide) et VLM (intelligent) pour détecter et classifier les éléments UI dans des screenshots.
Architecture
Screenshot
↓
OpenCV Detection (~10ms)
├─ Text Detection (seuillage adaptatif)
├─ Rectangle Detection (Canny + contours)
└─ Region Merging (IoU-based)
↓
Candidate Regions (15-50 régions)
↓
VLM Classification (~1-2s par élément)
├─ Type (button, text_input, checkbox, etc.)
├─ Role (primary_action, cancel, form_input, etc.)
└─ Label (texte visible)
↓
UIElements (avec confiance, bbox, metadata)
Composants
1. ui_detector.py (Hybride)
- Classe:
UIDetector - Méthode principale:
detect(screenshot_path) -> List[UIElement] - Pipeline:
- Détection OpenCV des régions candidates
- Classification VLM de chaque région
- Filtrage par confiance
- Création des UIElements
2. ollama_client.py
- Classe:
OllamaClient - Modèle:
qwen3-vl:8b(sans mode thinking pour vitesse) - Méthodes:
classify_element_type()- Type d'élémentclassify_element_role()- Rôle sémantiqueextract_text()- Texte visible
Résultats des Tests
Test sur Screenshot Réaliste (1000x700px)
Éléments détectés:
- ✅ 4 boutons (Create, Cancel, Clear, Settings)
- ✅ 4 onglets de navigation (Dashboard, Tasks, Projects, Team)
- ✅ 2 champs de texte (Task Name, Description)
- ⚠️ Checkboxes non détectées (trop petites pour OpenCV)
Performance:
- Temps total: ~40s pour 50 éléments
- Temps par élément: ~0.8s
- Confiance moyenne: 88% (éléments principaux)
Précision:
- Boutons: 100% (4/4 détectés et classifiés correctement)
- Champs de texte: 100% (2/2 détectés)
- Navigation: 100% (4/4 détectés)
Avantages de l'Approche Hybride
vs VLM Seul
- ✅ Plus rapide: OpenCV détecte les régions en ~10ms vs plusieurs secondes
- ✅ Plus fiable: Pas de dépendance totale au VLM
- ✅ Fallback: Fonctionne même si VLM indisponible
vs OpenCV Seul
- ✅ Plus intelligent: Classification sémantique (rôles, types)
- ✅ Plus précis: Comprend le contexte visuel
- ✅ Extraction de texte: Le VLM lit le texte des éléments
Configuration Recommandée
from rpa_vision_v3.core.detection import UIDetector, DetectionConfig
config = DetectionConfig(
vlm_model="qwen3-vl:8b",
confidence_threshold=0.7, # Standard
min_region_size=10, # Pour petits éléments
max_region_size=600, # Pour grands champs
use_vlm_classification=True,
merge_overlapping=True,
iou_threshold=0.5
)
detector = UIDetector(config)
elements = detector.detect("screenshot.png")
Optimisations Appliquées
- VLM sans mode thinking - Gain de vitesse ~30%
- Fusion des régions - Réduit les doublons
- Filtrage par confiance - Garde les meilleurs résultats
- Paramètres OpenCV ajustés - Détecte plus d'éléments
Limitations Connues
- Petits éléments (< 15px) - Difficiles à détecter avec OpenCV
- Éléments sans contours - Nécessitent des contours visibles
- Vitesse VLM - ~1-2s par élément (dépend du modèle)
- Dépendance Ollama - Nécessite Ollama en cours d'exécution
Prochaines Améliorations Possibles
- Détection spécialisée pour checkboxes/radio buttons
- Batch processing VLM (classifier plusieurs éléments ensemble)
- Cache des classifications pour éléments similaires
- Modèle VLM plus rapide (granite3.2-vision:2b)
- GPU acceleration pour OpenCV et VLM
Utilisation
Basique
from rpa_vision_v3.core.detection import create_detector
detector = create_detector()
elements = detector.detect("screenshot.png")
for elem in elements:
print(f"{elem.type} - {elem.role} @ {elem.bbox}")
Avec Configuration
detector = create_detector(
vlm_model="qwen3-vl:8b",
confidence_threshold=0.7,
use_vlm=True
)
Sans VLM (Fallback)
detector = create_detector(use_vlm=False)
# Utilise classification heuristique basique
Tests Disponibles
test_hybrid_detection.py- Test avec screenshot de testtest_complete_real.py- Test complet avec validationtest_real_vlm_detection.py- Test VLM basique
Conclusion
✅ Le système hybride est opérationnel et performant
Il détecte correctement les éléments UI principaux (boutons, champs, navigation) avec une bonne précision et une vitesse acceptable. L'approche hybride offre le meilleur compromis entre vitesse (OpenCV) et intelligence (VLM).
Recommandation: Utiliser cette approche pour la production. Elle est éprouvée et basée sur l'architecture de la V2 qui fonctionnait bien.
Implémenté par: Kiro AI
Basé sur: Architecture V2 (geniusia2)
Modèle VLM: qwen3-vl:8b via Ollama