studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java machine-learning biometrics

java - para - manual de programacion android pdf



Cómo aprender el movimiento del mouse? (7)

He estado intentando desarrollar un método para sintetizar el movimiento del ratón humano en una aplicación mía durante las últimas semanas. Al principio utilicé técnicas simples como la interpolación de polinomios y spline, sin embargo, incluso con un poco de ruido, el resultado aún no parecía lo suficientemente humano.

En un esfuerzo por remediar este problema, he estado investigando formas de aplicar algoritmos de aprendizaje automático sobre la biometría del movimiento del ratón humano real para sintetizar los movimientos del ratón aprendiendo de los humanos reales grabados. Los usuarios estarían compilando un perfil de movimientos grabados que entrenarían el programa para fines de síntesis.

He estado buscando por algunas semanas y he leído varios artículos sobre la aplicación de biometría inversa en la generación de dinámicas de ratón, como Inverse Biometrics for Mouse Dynamics ; sin embargo, tienden a centrarse en generar tiempo realista a partir de dinámicas generadas aleatoriamente , mientras yo esperaba generar un camino de específicamente A a B. Además, aún necesito tener que encontrar un camino, no solo unos pocos. dinámica medida a partir de uno.

¿Alguien tiene algunos consejos para ayudar a un novato?

Actualmente, las pruebas se realizan grabando movimientos y haciendo que yo y muchos otros desarrolladores miren la reproducción. Idealmente, el movimiento podrá engañar tanto a un clasificador biométrico automático como a un Homo sapien real, vivo y respirador.


¿Ha considerado agregar el seguimiento del mouse a su aplicación para que esencialmente registre cómo el usuario mueve el mouse y luego analizar las grabaciones?

No he investigado esto recientemente, pero creo que una aplicación MouseListener en Swing obtiene la información que necesita.


¿Quieres simular el movimiento del ratón humano porque estás haciendo un entrenamiento en línea en tiempo real para tu juego? Si sus secuencias de entrenamiento son estáticas, simplemente registre los movimientos de su mouse y haga clic en el botón de mouse con el mouse. Ningún movimiento del mouse se sentirá "lo suficientemente real" para ti más que el tuyo.

Personalmente, creo que los expertos en software mueven sus ratones demasiado rápido en videos de entrenamiento. Prefiero un enfoque adoptado por el software de video screencast que he visto que siempre mueve el mouse linealmente desde el punto A -> B. El truco fue que cada movimiento del mouse realizado en el video siempre tomaba el mismo tiempo independientemente de la distancia, por ejemplo 3/4 de segundo y luego seguido por un clic de mouse.

Creo que movieron el mouse de esta manera porque entonces el espectador podía anticipar el área de aterrizaje del mouse según la dirección y la velocidad con la que el mouse se movía al inicio. En una situación de entrenamiento, supongo que los movimientos regulares como este son más suaves en el ojo y quizás más fáciles de retener / recordar.


Esta pregunta me recordó un sitio web que conocía hace años, así que lo visité y encontré esta discusión en profundidad sobre el tema .

El momento es tan similar que me hace pensar que esta pregunta está relacionada de alguna manera. De hecho, alguien en el hilo vinculado al mismo artículo que hiciste. Si no está relacionado, bueno, hay un enlace a mucha gente discutiendo exactamente en lo que estás pensando.


La forma en que se mueve un mouse varía según el tipo de dispositivo, el tipo de acción, los elementos de UI involucrados, la familiaridad con la UI, la velocidad a la que el usuario intenta completar su tarea, la habilidad del usuario, la falla inicial del usuario (por ejemplo, miss-clicks), el estado emocional del usuario (y muchos otros factores). ¿Planeas crear varias estrategias para encajar en diferentes contextos? ¿Qué tan bien conoces el algoritmo que intentas engañar? Supongo que no de forma exhaustiva o simplemente se programa directamente en contra de ese algoritmo.

Si un humano está mirando la ruta, podría ser capaz de identificar el estado asociado con una estrategia de ruta y puede estar más inclinado a ser engañado si lo identifica como un estado humano (por ejemplo, el usuario está corriendo, no hace clic, cierra rápidamente una ventana emergente resultante, intenta de nuevo más lento). La interfaz de usuario entra en juego no solo con el tamaño y la posición. A menudo apunto rápidamente a una barra de herramientas, luego deslizo sobre las opciones hasta que llegue a mi objetivo. Otro ejemplo es que, por lo general, hago una pausa en los elementos del menú mientras escaneo mi objetivo o coloco el cursor sobre el texto que estoy leyendo. ¿Estás tratando de emular el comportamiento humano o simplemente sus movimientos con el mouse (porque creo que están unidos por la cadera)?


No creo que el problema esté bien definido. Hay una noción importante no mencionada hasta ahora, que es el contexto. El movimiento del mouse en mi pantalla cuando Chrome tiene foco es masivamente diferente que el movimiento cuando Vim tiene foco.


Primero, supongo que grabas los movimientos del ratón humano de A a B. Porque de lo contrario, no me parece posible intentar sintetizar un modelo para tal movimiento.

En segundo lugar, ¿qué hay de medir las desviaciones de la ruta "directa", tal vez en relación con el tiempo. De hecho, sospecho que los movimientos se ven diferentes para diferentes ángulos, longitudes de trayectoria, etc., pero tal vez primero puedas probar un modelo normalizado, que simplemente estires (en espacio y tiempo) y rotarás como lo necesites.

Tercero, el aprendizaje. Lo más fácil sería tener una colección de movimientos reales (en la forma que discutí anteriormente), y una muestra de esa colección. Evaluar cómo se ve eso. Si realmente quieres un modelo probabilístico, entonces debes evaluar qué tipo de modelos encajan. ¿es suficiente para desenfocar la ruta directa con ruido gaussiano cuyos parámetros aprendes de tu conjunto de entrenamiento? ¿O alguna desviación ondulada (sin-)? O modelos separados para "acercarse al botón" y "correcciones finales". La ley de Fitts podría ser útil para la evaluación.


La ley de Fitt ofrece una muy buena estimación del tiempo necesario para posicionar el puntero del mouse. En la sección de derivation hay una explicación simple, creo que podría usar esto como uno de los componentes básicos de su aplicación. Comience con movimientos grandes, ponga un poco de inmadurez tanto en la dirección como en la longitud del movimiento, luego haga un movimiento de corrección más pequeño y así sucesivamente ...