如何学习鼠标移动?

在过去的几个星期里,我一直在尝试开发一种在我的应用程序中合成类人鼠标运动的方法。 在开始时,我使用了多项式和样条插值等简单的技术,但是即使有一点噪音,结果仍然没有出现足够像人的样子。

为了解决这个问题,我一直在研究如何将机器学习algorithm应用到真实的人类鼠标运动生物特征识别上,以通过从logging的真实人类学习中学习鼠标运动来合成鼠标运动。 用户将编辑一个logging动作的configuration文件,将训练=合成目的的程序。

我一直在寻找几个星期,阅读了几篇关于应用逆生物识别技术来生成鼠标动力学的文章,例如用于鼠标动力学的逆生物识别技术 ( Inverse Biometrics for Mouse Dynamics ) 但是,他们往往把注意力集中在从随机生成的dynamic生成逼真的时间上,而我希望能够从A到B生成一条path。另外,我仍然需要想出一条path,而不仅仅是一条pathdynamic测量一个。

有没有人有几个帮助noob的指针?

目前,testing是通过录制动作完成的,让我和其他几个开发人员观看播放。 理想情况下,运动将能够欺骗一个自动生物识别分类器, 以及一个真实,活的呼吸智人。

首先,我想你logging从A到B的人类鼠标动作。因为否则,试图综合这种动作的模型对我来说似乎是不可能的。

其次,如何衡量与“直接”path的偏差,可能与时间有关。 我真的怀疑,不同的angular度,path长度等运动看起来不同,但也许你可以先尝试一个规范化的模型,你只是伸展(在空间和时间)和旋转,如你所需要的。

第三,学习。 最简单的事情就是只收集一些真正的动作(以我上面讨论的forms),并从该集合中抽取样本。 评估如何看起来像。 如果你真的想要一个概率模型,那么你必须评估什么样的模型适合。 用你从训练集中学习的参数来模糊直接path,足以模拟高斯噪声吗? 或者一些(sin-)波浪的偏差? 或“靠近button”和“最终更正”的单独模型。 费茨法则可能对评估有用。

Fitt定律给出了定位鼠标指针所需的时间。 在派生部分有一个简单的解释,我认为你可以使用这个作为你的应用程序的基本构build块之一。 从大动作开始,在动作的方向和长度上做一些不准确的动作,然后做一个小的动作,等等…

这个问题让我想起了几年前我所知道的一个网站,所以我去看了一下,发现了这个话题的深入讨论 。

时间是如此相似,以至于让我觉得这个问题在某种程度上是相关的。 事实上,在线程中的某个人链接到您所做的相同的文章。 如果不相关,那么很多人都会讨论到你在想什么。

我不认为这个问题是完全明确的。 目前还没有提到一个重要的概念,即上下文。 当Chrome拥有焦点时,我的屏幕上的鼠标移动与Vim聚焦时的移动大不相同。

鼠标移动的方式根据设备types,操作types,涉及的UI元素,对UI的熟悉程度,用户尝试完成任务的速度,用户的技能,初始失败(例如错过点击),用户的情绪状态(以及许多其他因素)。 你打算创build几个对应不同的上下文的path策略? 另外你怎么知道你试图欺骗的algorithm? 我假设不是广泛的,或者你会直接针对该algorithm进行编程。

如果一个人正在观察path,他们可能能够识别与path策略相关联的状态,并且如果他们将其识别为人类状态,则可能更倾向于被愚弄(例如,用户正在冲刺,错过点击,快速closures结果popup,再次尝试更慢)。 用户界面不仅仅是大小和位置。 我经常快速指向一个工具栏,然后滑动选项,直到我到达我的目标。 另一个例子是,当我扫描我的目标或hover在我正在阅读的文本上时,我通常在菜单项上暂停。 你试图模仿人类的行为,或者只是模仿他们的鼠标移动(因为我认为他们是在髋关节join)?

你是否想模拟人类的鼠标移动,因为你正在为你的游戏进行实时在线培训? 如果您的训练序列是静态的,只要logging您的鼠标移动,并在您单击鼠标button时播放鼠标点击音效。 没有鼠标移动会比你自己的感觉更“真实”。

就我个人而言,我感觉软件专家在训练video中移动鼠标太快了。 我更喜欢screencastvideo软件所采用的方法,我总是从A点 – > B线性地移动鼠标。诀窍是,无论距离如何,video中的每个鼠标移动总是花费相同的时间量3/4秒,然后是鼠标点击音效。

我相信他们以这种方式移动了鼠标,因为这样观察者就可以通过鼠标在开始移动的方向和速度来预测鼠标的着陆区域。 在训练情况下,我认为像这样的定期运动更为温和,也许更容易保留/回忆。

您是否考虑过将鼠标追踪添加到您的应用程序中,以便您基本logging用户如何移动鼠标,然后分析logging?

我最近还没有看到这个,但我相信Swing应用程序中的MouseListener可以获取所需的信息。