L’entrée gestuelle et la reconnaissance de gestes
Quelques exemples de systèmes à entrée gestuelle, et d’ensembles de gestes …
a) rectangle b) ellipse c) ligne d) groupe e) copie f) rotation g) supprimer (“x”) Rubine, “Specifying gestures by example”, SIGGRAPH 1991, s+example s+example
Wobbrock, Wilson, and Li. Gestures without libraries, toolkits or training: a $1 recognizer for user interface prototypes. UIST toolkits+training+recognizer
Le Graffiti
EdgeWrite ( ) Une façon mécanique de simplifier la reconnaissance de gestes, avec des contraintes physiques
EdgeWrite Comment distinguer ces gestes? Réponse: trouver l’ordre dans lequel les “coins” sont visités, et chercher la séquence de coins dans un dictionnaire
Tivoli Moran, Chiu, van Melle, and Kurtenbach. Implicit Structure for Pen-based Systems within a Freeform Interaction Paradigm, CHI based+systems+freeform+interaction
Tivoli Moran, Chiu, van Melle, and Kurtenbach. Implicit Structure for Pen-based Systems within a Freeform Interaction Paradigm, CHI based+systems+freeform+interaction
Comment fait Tivoli pour retrouver les rangées et colonnes dans des ensembles d’encre? Réponse au prochain diapo…
Tivoli Moran, Chiu, van Melle, and Kurtenbach. Implicit Structure for Pen-based Systems within a Freeform Interaction Paradigm, CHI based+systems+freeform+interaction
Menu radial hiéarchique Tiré de la thèse doctorale de Gord Kurtenbach
Combinaison de sélection rectangle et lasso À retenir! Question: comment l’ordinateur peut-il distinguer entre le geste à gauche et celui à droite? Réponse: vérifier si (length_of_ink_trail) ÷ (straight_line_distance_from_start_to_end_of_drag) > 2.5
Reconnaissance de gestes
Comment distinguer les gestes dans un “Marking Menu” hiéarchique? Tiré de la thèse doctorale de Gord Kurtenbach
Comment trouver un “coin” dans un geste? Lorsque le geste est bruité ? (voir notes écrites)
Dabbleboard
Dabbleboard
Dabbleboard Widgets pour déplacer, dupliquer, supprimer, redimensionner Clic + touches de clavier: saisir du texte Clic + clic + drag: sélection rectangle
Fureteur web
Samsung Galaxy Note
Comment permettre à un utilisateur (ou un concepteur) de définir des nouveaux gestes sans écrire du code ? Spécifier les nouveaux gestes avec des exemplaires ! –Nécessite de faire du “pattern matching” entre les exemplaires de gestes pré-fournis, et chaque geste entré pendant l’interaction
Rubine, “Specifying gestures by example”, SIGGRAPH 1991, s+example s+example
Rubine, “Specifying gestures by example”, SIGGRAPH 1991, s+example s+example
La reconnaissance de gestes avec l’algorithme de Rubine (1991) Chaque geste entré (ou exemple de geste) est réduit à un vecteur de caractéristiques (“feature vector”) et correspond donc à un point multidimensionnel. Il s’agit alors de classifier ces points parmi les catégories de gestes. Taux de reconnaissance selon les tests de Rubine > 95% À retenir!
Rubine (1991)
vecteur de caractéristiques d'un exemplairegeste à classifier
1ère solution: comparer la distance entre le nouveau geste et chaque exemplaire (recherche du plus proche voisin / "nearest neighbor") - Comment calculer cette distance? - Combien de temps cela prendra? (Supposons F “features” (donc un espace à F dimensions), C classes (ou sortes de gestes), et E exemplaires par classe). À retenir!
Distance entre le geste à classifier et un exemplaire À retenir!
2ième solution: pré-calculer le centroïde de chaque classe d’exemplaires (k-moyennes / "k-means") - Comment pré-calculer ces centroïdes? - Combien de temps cela prendra? - Comment ensuite classer le nouveau geste? - Combien de temps cela prendra? À retenir! centroïde
Calcul de centroïde: Distance entre le geste à classifier et un centroïde: À retenir!
3ième solution (proposée par Rubine): pré-calculer des hyperplans pour séparer les exemplaires (machine à vecteurs de support / "Support Vector Machine" ou SVM). Voir son article pour les détails. Ci-dessous, un exemple d’un cas qui serait mieux classifié avec l’approche par hyperplans qu’en comparant des centroïdes. (Notez qu’en pratique, ces cas sont peut-être rares, et la complexité de programmer le calcul des hyperplans ne vaut peut- être pas la peine.) Ligne pointillée: mediatrice entre les centroïdes Ligne solide: hyperplan qui sépare les exemplaires À retenir!
temps pour pré- calculer temps pour classifier un geste fiable? 1. plus proche voisin aucunO( C E F )toujours 2. k-moyennes / centroïdes O(C E F) pour trouver les centroïdes O( C F )si les exemplaires sont linéairement séparables ET chaque classe a environ le même écart type 3. machine à vecteurs de support / hyperplans / approche de Rubine Dépend de l’implementation. Un algorithme itératif, à titre d’exemple, prend O( (nombre d'itérations) C 2 E F ) O( C F )si les exemplaires sont linéairement séparables Soit: F “features” (donc un espace à F dimensions), C classes (ou sortes de gestes), et E exemplaires par classe Remarque: l'approche 3 est la plus compliquée à programmer, tout en étant moins rapide que l'approche 2 et moins fiable que l'approche 1. Donc, je vous conseille d'essayer les approches 1 ou 2 avant d'essayer l'approche 3. À retenir!
Le reconnaissance de gestes avec l’algorithme à “$1” (Wobbrock et al., 2007) $1 n'utilise pas de vecteurs de caractéristiques; il compare plutôt la géométrie d'un geste avec la géométrie de chaque exemplaire, point-par- point. Cela nécessite qu'ils aient tous le même nombre de points. Tel que présenté dans l’article 2007 de Wobbrock et al., l’approche $1 utilise seulement des opérations mathématiques de base, est simple à implémenter en peu de code sans librairies, et est rapide. Toutefois, cela est en comparaison à la machine à vecteurs de support de Rubine. Si on simplifie l’approche de Rubine pour classifier les vecteurs de caractéristiques avec plus proche voisin ou k-moyennes (tel que montré dans les diapos précédents), alors l’approche par vecteurs de caractéristiques devient toute aussi simple à implementer et possiblement plus rapide que $1 Taux de reconnaissance de $1 supérieur à Rubine, tel que mesuré par Wobbrock et al. Une des étapes clés: rééchantillonage ("resampling") du geste, pour que le geste et les exemplaires aient tous le même nombre de points. Temps pour classifier un geste: O( C E N ), où C est le nombre de classes, E le nombre d'exemplaires par classe, et N le nombre de points par exemplaire (voir notes écrites) À retenir!
Wobbrock, Wilson, and Li. Gestures without libraries, toolkits or training: a $1 recognizer for user interface prototypes. UIST
Wobbrock, Wilson, and Li. Gestures without libraries, toolkits or training: a $1 recognizer for user interface prototypes. UIST
Wobbrock, Wilson, and Li. Gestures without libraries, toolkits or training: a $1 recognizer for user interface prototypes. UIST
Wobbrock et al. (2007)