46

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

为了解决这个问题,我一直在研究将机器学习算法应用于真实人类鼠标运动生物特征的方法,以便通过从记录的真实人类运动中学习来合成鼠标运动。用户将编译记录运动的配置文件,以训练该程序以用于综合目的。

我已经搜索了几个星期,并阅读了几篇关于在生成鼠标动力学中应用逆向生物特征的文章,例如Inverse Biometrics for Mouse Dynamics;然而,他们倾向于专注于从随机生成的动态中生成真实的时间,而我希望生成从特定A 到 B 的路径。另外,我实际上仍然需要想出一条路径,而不仅仅是几个从一测得的动力学。

有没有人有一些指针可以帮助菜鸟?

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

4

7 回答 7

14

菲特定律很好地估计了定位鼠标指针所需的时间。在派生部分有一个简单的解释,我认为您可以将其用作应用程序的基本构建块之一。从大动作开始,在动作的方向和长度上放一些不准确的地方,然后做一个较小的修正动作等等……

于 2011-08-14T21:19:14.717 回答
11

首先,我猜你记录了从 A 到 B 的人类鼠标运动。因为否则,尝试为这种运动合成模型对我来说似乎是不可能的。

其次,如何测量与“直接”路径的偏差,可能与时间有关。我实际上怀疑不同角度、路径长度等的运动看起来不同,但也许你可以先尝试一个标准化模型,你只是拉伸(在空间和时间上)并根据需要旋转。

三是学习。最简单的事情是只收集一组真实动作(以我上面讨论的形式),并从该集合中采样。评估它的样子。如果你真的想要一个概率模型,那么你必须评估什么样的模型适合。用高斯噪声来模糊直接路径是否足以让您从训练集中学习其参数?还是一些(正弦)波浪形偏差?或者为“接近按钮”和“最终更正”单独的模型。菲茨定律可能对评估有用。

于 2011-08-22T11:04:29.647 回答
2

这个问题让我想起了我多年前知道的一个网站,所以我访问了它并发现了这个关于该主题的深入讨论

时间是如此相似,以至于让我认为这个问题在某种程度上是相关的。事实上,线程中的某个人链接到您所做的同一篇文章。如果它不相关,那么有一个链接可以指向很多人讨论你在想什么。

于 2011-09-12T08:33:27.773 回答
1

我认为问题没有那么明确。有一个重要的概念到目前为止没有提到,那就是上下文。当 Chrome 获得焦点时,我屏幕上的鼠标移动与 Vim 获得焦点时的移动有很大不同。

于 2011-08-15T07:07:22.107 回答
1

鼠标移动的方式因设备类型、操作类型、所涉及的 UI 元素、对 UI 的熟悉程度、用户尝试完成任务的速度、用户的技能、初始失败而异用户(例如未点击)、用户的情绪状态(以及许多其他因素)。您是否计划创建几种路径策略以对应不同的上下文?另外,您对要欺骗的算法了解多少?我假设不广泛,或者您只需直接针对该算法进行编程。

如果一个人正在查看路径,他们可能能够识别与路径策略相关的状态,并且如果他们将其识别为人类状态(例如,用户正在匆忙、未点击、快速关闭),则可能更容易被愚弄结果弹出窗口,再慢一点尝试)。UI 不仅与大小和位置有关。我经常快速指向一个工具栏,然后在选项之间滑动,直到找到我的目标。另一个例子是,当我扫描我的目标或将鼠标悬停在我正在阅读的文本上时,我通常会暂停菜单项。您是在尝试模仿人类行为还是仅仅模仿他们的鼠标动作(因为我认为他们是在臀部连接的)?

于 2011-08-26T15:19:23.063 回答
1

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

就个人而言,我觉得软件专家在培训视频中移动鼠标的速度太快了。我更喜欢我见过的截屏视频软件采用的方法,它总是从点 A --> B 线性移动鼠标。诀窍是,无论距离如何,视频中的每一次鼠标移动总是花费相同的时间,比如说3/4 秒,然后是鼠标点击音效。

我相信他们以这种方式移动鼠标,因为这样观众可以通过鼠标在开始时移动的方向和速度来预测鼠标的着陆区域。在训练的情况下,我认为像这样的常规动作对眼睛更温和,可能更容易记忆/回忆。

于 2011-08-26T18:18:09.077 回答
0

您是否考虑过在您的应用程序中添加鼠标跟踪,以便从本质上记录用户如何移动鼠标然后分析记录?

我最近没有对此进行研究,但我相信 Swing 应用程序中的 MouseListener 可以获得您需要的信息。

于 2011-08-14T20:53:33.397 回答