46 votes

Comment apprendre le mouvement de la souris ?

Depuis quelques semaines, je tente de développer un moyen de synthétiser des mouvements de souris de type humain dans une de mes applications. Au début, j'ai utilisé des techniques simples comme l'interpolation polynomiale et spline, mais même avec un peu de bruit, le résultat ne semblait pas suffisamment humain.

Afin de remédier à ce problème, j'ai effectué des recherches sur les moyens d'appliquer des algorithmes d'apprentissage automatique à la biométrie des mouvements de la souris humaine afin de synthétiser les mouvements de la souris en apprenant à partir des enregistrements. réel humaines. Les utilisateurs compileraient un profil de mouvements enregistrés qui entraînerait le programme à des fins de synthèse.

J'ai cherché pendant quelques semaines et j'ai lu plusieurs articles sur l'application de la biométrie inverse dans la génération de la dynamique des souris, tels que Biométrie inverse pour la dynamique de la souris ; ils ont toutefois tendance à se concentrer sur la génération d'un temps réaliste de généré de manière aléatoire dynamique, alors que j'étais en espérant pour générer un chemin à partir de spécifiquement A à B. De plus, je dois encore trouver un chemin, et pas seulement quelques dynamiques mesurées à partir d'un chemin.

Quelqu'un a-t-il quelques conseils à donner à un novice ?

Actuellement, les tests sont effectués en enregistrant les mouvements et en demandant à moi-même et à plusieurs autres développeurs de regarder la lecture. Idéalement, le mouvement doit pouvoir tromper à la fois un classificateur biométrique automatique, ainsi que un vrai, vivant, respirant Homo sapiens, aussi.

14voto

Karoly Horvath Points 45145

La loi de Fitt donne une très bonne estimation du temps nécessaire pour positionner le pointeur de la souris. Dans le dérivation section il y a une explication simple, je pense que vous pourriez l'utiliser comme l'un des éléments de base de votre application. Commencez par de grands mouvements, mettez de l'incertitude à la fois dans la direction et la longueur du mouvement, puis faites un mouvement de correction plus petit et ainsi de suite...

10voto

Michael Kutschke Points 171

D'abord, je suppose que vous enregistrez les mouvements de la souris humaine de A à B. Parce que sinon, essayer de synthétiser un modèle pour un tel mouvement ne me semble pas possible.

Deuxièmement, pourquoi ne pas mesurer les déviations de la trajectoire "directe", peut-être en fonction du temps. Je soupçonne que les mouvements sont différents selon l'angle, la longueur de la trajectoire, etc., mais vous pouvez peut-être essayer d'abord un modèle normalisé, que vous pouvez étirer (dans l'espace et le temps) et faire pivoter selon vos besoins.

Troisièmement, l'apprentissage. Le plus simple serait d'avoir une collection de mouvements réels (sous la forme dont j'ai parlé plus haut), et d'échantillonner à partir de cette collection. Évaluer comment cela se présente. Si vous voulez vraiment un modèle probabiliste, vous devez évaluer quel type de modèle convient. Est-il suffisant de brouiller le chemin direct avec un bruit gaussien dont vous apprenez les paramètres à partir de votre ensemble d'entraînement ? Ou une déviation (sin-)ondulée ? Ou des modèles distincts pour "se rapprocher du bouton" et "les corrections finales". La loi de Fitts pourrait être utile pour l'évaluation.

2voto

Evan Cordell Points 2591

Cette question m'a fait penser à un site web que je connaissais il y a des années, alors je l'ai visité et j'ai trouvé cette discussion approfondie sur le sujet .

Le timing est tellement similaire que je pense que cette question est liée d'une certaine manière. En fait, quelqu'un dans le fil de discussion a fait un lien vers le même article que vous. Si ce n'est pas lié, eh bien, il y a un lien vers beaucoup de gens qui discutent exactement de ce à quoi vous pensez.

1voto

carlosdc Points 7059

Je ne pense pas que le problème soit si bien défini que ça. Il y a une notion importante non mentionnée jusqu'à présent, qui est le contexte. Le mouvement de la souris sur mon écran lorsque Chrome a le focus est très différent du mouvement lorsque Vim a le focus.

1voto

DWoldrich Points 635

Vous souhaitez simuler un mouvement de souris semblable à celui d'un humain parce que vous effectuez un entraînement en ligne en temps réel pour votre jeu ? Si vos séquences d'entraînement sont statiques, il vous suffit d'enregistrer les mouvements de votre souris et de jouer un effet sonore de clic de souris à chaque fois que vous cliquez sur le bouton de la souris. Aucun mouvement de souris ne vous paraîtra plus "réel" que le vôtre.

Personnellement, je trouve que les experts en logiciels déplacent leur souris trop rapidement dans les vidéos de formation. Je préfère l'approche adoptée par un logiciel de screencast vidéo que j'ai vu, qui déplace toujours la souris de façon linéaire du point A --> B. L'astuce était que chaque mouvement de souris effectué dans la vidéo prenait toujours le même temps, quelle que soit la distance, disons 3/4 de seconde, et était suivi d'un effet sonore de clic de souris.

Je crois qu'ils ont déplacé la souris de cette façon parce que le spectateur pouvait alors anticiper la zone d'atterrissage de la souris en fonction de la direction et de la vitesse de déplacement de la souris au départ. Dans une situation de formation, je suppose que des mouvements réguliers comme celui-ci sont plus doux pour l'œil et peut-être plus faciles à retenir/rappeler.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X