Python 驱动的开源眼动追踪工具

还没有读者喜欢这篇文章。
open source button on keyboard

Opensource.com

几周前,我收到一位朋友的电子邮件,他正在参加一个教育技术会议。在邮件中,他提到了 PyGaze,一个我可能会感兴趣的开源项目。

我对教育心理学有浓厚的兴趣,因此我对 PyGaze 的相关介绍非常着迷——PyGaze 是一个用于 Python 中眼动追踪的开源工具箱。网站告诉我它可以在 Linux 上运行,但我还想了解更多关于眼动追踪及其在心理学研究中的作用。我也想更多地了解这个项目,以及它如何为研究做出贡献,以及它对开源的意义。

在这次访谈中,该项目的首席开发者 Edwin Dalmaijer,他在牛津大学实验心理学系从事研究和编程工作,对 PyGaze 进行了精彩的描述,并阐述了眼动追踪在研究中的重要意义。

大多数时候,人们的目光所及之处也是他们注意力所在之处。如果我记录下你正在看哪里,我就能弄清楚是什么吸引了你的注意力。PyGaze... 将来自不同制造商的大量不同眼动追踪器的代码捆绑到一个统一的接口中。

请谈谈您和您的工作。您是一位开源爱好者吗?

我在实验心理学领域作为研究人员的工作需要我编写实验程序、分析程序,有时甚至是整个软件库或图形用户界面。在研究中,我们经常处理非常晦涩的硬件,这些硬件执行非常特定的功能,例如追踪测试对象的眼球运动或瞳孔反应、脑电波、握力以及你能想到的任何奇怪的东西。

这些硬件通常由小型供应商销售,他们没有时间提供直接支持或特定的编码文档。作为依赖这些产品的研究人员,您通常会破解 SDK 和 API,直到找到适合您的解决方案。

一旦我设法与这样一个晦涩的硬件进行通信,我就会将其功能整合到一个更用户友好的库中。PyGaze 就是一个很好的例子:它将来自不同制造商的大量不同眼动追踪器的代码捆绑到一个统一的接口中。我们也在不断添加其他功能,包括游戏控制器和操纵杆、网络摄像头以及可以监测生理学的设备。

显然,我所在领域的其他人也在做同样的事情。如果我们都分享我们的自定义软件,我们就无需在每次需要使用新硬件时都重新发明轮子。因此,开源为我们节省了软件开发的时间和金钱。额外的好处是,同事可以协作开发软件,减少持久性错误的发生机会。您可以看到 PyGaze 正在发生这种情况,越来越多的用户发现并解决问题。

不仅仅是数据采集可能很麻烦;分析也可能变得非常复杂。学者们想出了非常聪明的方法来查看他们的数据,并将他们的分析结果以非常漂亮的图形可视化。在这里,代码共享也同样至关重要;它帮助我们分享好的代码并仔细审查彼此的工作。这非常重要,因为脚本错误很容易犯,并且仅凭一双眼睛很难发现。

眼动追踪的目的是什么?它如何帮助您的研究?

大多数时候,人们的目光所及之处也是他们注意力所在之处。如果我记录下你正在看哪里,我就能弄清楚是什么吸引了你的注意力。这对于基础研究非常重要,例如,当我们想知道什么特征吸引注意力时。这可以告诉我们使用什么样的视觉信息来理解我们周围的世界。它在应用研究中也很有用——营销研究人员喜欢眼动追踪,因为它能告诉他们人们在广告中关注哪里。他们会看到公司标志吗?还是他们被穿着暴露的模特分散了注意力?(性感并不总是奏效!)

此外,您的眼球运动动力学可以告诉我们各种各样的事情,例如什么会分散您的注意力,以及什么会激励您。通过密切监测您的扫视(非常快速的眼球运动)的速度和轨迹,我们可以了解很多关于注意力和运动系统的基本属性。

最后,我们可以使用眼动追踪器来测量瞳孔大小。人们对这项技术的兴趣目前再次达到顶峰,并且人们正在发现各种各样的事情。例如,您的瞳孔大小会在期待奖励时增大,也会在感到惊讶时增大(例如,没有得到奖励)。似乎瞳孔也会根据您预期眼球移动的方向来增大或缩小。

开源软件,特别是 Python,有哪些特性使其非常适合您的工作?

嗯,首先,它是免费的。当我开始编程时,我还是一个贫穷的学生,买不起正版的 Matlab(我们领域的主要编程语言)。Python 是免费的,所以我转而使用它。

现在我已经习惯了,我喜欢它的高阶性。有些人更喜欢底层语言,它们允许您定义和控制一切(说的就是你,C!),但我喜欢用 Python 编程的快速和便捷。程序运行起来很顺畅,您不必花费大量时间重新定义基本功能。

最重要的是,Python 非常通用。它拥有出色的库,用于并行处理、多线程、套接字通信等等。这些对于处理我们在实验心理学和认知神经科学中使用的那种晦涩的外围硬件至关重要。此外,当您需要非常具体的东西时(例如,监测您仓鼠的身体活动),很可能已经有人为此编写了一个库。您可以在 GitHub 上找到该库,供所有人使用和改进。

Python 用户倾向于非常热衷于分享他们的工作,并合作开展非常优秀的项目(SciPyNumPymatplotlib 对于科学家来说都是不可或缺的!)。这以及其用户友好的处理方式,使 Python 成为理想的通用编程语言。

从阅读您的研究论文《PyGaze:一个开源的眼动追踪工具箱》中,我注意到 PyGaze 在 GitHub 上。对于您不断改进软件的努力,协作有多重要?

非常重要,因为我有时可能是一个糟糕的程序员。我往往会不耐烦、忽略细节,并且有点 disorganized(无组织)。有其他人查看我的代码并过滤掉错误会很有帮助。我真的要感谢 Sebastiaan Mathŏt,他更加细致,并且对如何组织和维护大型项目有更好的感觉。

PyGaze 有任何分支吗?这些分支是否对您的工作和 PyGaze 的开发有所帮助?

有很多分支。在 GitHub 上快速浏览一下,我知道现在有 25 个分支!最关键的是 Sebastiaan Mathŏt 的分支,因为所有新的 OpenSesame 集成都来自这里。OpenSesame 是一个用于社会科学的实验构建器。心理学家和神经科学家可以使用它,通过将各个构建块拖放到时间轴上来在图形环境中创建他们的实验。有些人更喜欢这种方式而不是编程实验,因为它需要的技术知识较少,并且在某些情况下实际上可以更快。

Sebastiaan 为 OpenSesame 编写了 PyGaze 插件,以便人们现在可以使用它来访问 PyGaze 支持的各种眼动追踪器。

您认为 PyGaze 项目在短期内的发展方向是什么?您对该项目有长期目标吗?

短期来看,我们正在研究很多幕后工作,包括更好的变量管理和消除一些烦人的错误。从长远来看,我们希望能够支持更多的眼动追踪器,并支持更多晦涩的外围设备!我已经开始再次使用脑电图 (EEG),所以我预计未来会对 EEG 提供一些支持。

此外,我一直在开发一个分析套件,以补充现有的实验库。它基本上是一个 GUI,带有一个用于分析眼动追踪数据的相关库。它应该支持 PyGaze 支持的相同范围的追踪器,并且应该允许人们对注视数据、扫视和瞳孔测量进行统计和可视化。

标签
User profile image.
教育家、企业家、开源倡导者、终身学习者、Python 教师。教育心理学硕士,教育领导学硕士,Linux 系统管理员。

5 条评论

是否有分支正在修改 PyGaze 以控制没有手臂控制能力的电脑鼠标?此外,使用什么硬件来检测眼球注视?是否有某种类型的推断视网膜反射相机?

Rick... 我已请 Edwin 发表评论,稍后会对您的问题进行解答。

回复 ,作者:Rick Weinberg (未验证)

都是好问题!

1) 据我所知,还没有人成功尝试使用 PyGaze 来进行光标控制。坦率地说,可能有比 PyGaze 更好的方法来做到这一点,因为它是一个如此高阶的库。主要关注点是全屏心理学实验,而不是与操作系统的底层集成。话虽如此,大多数处理眼动追踪器通信的代码都是在没有太多开销的情况下编写的,接近原始 API 或 SDK。如果您希望它在 Python 中使用,并支持多种类型的追踪器,这将使其成为修改以进行光标控制的理想库。

2) 该硬件是专用设备,由 SR Research (EyeLink)、SensoMotoric Instruments、Tobii 和 The EyeTribe 等公司生产。这些都是(红外)摄像头,它们的图像被输入到旨在找到瞳孔和红外光源反射的算法中。有关这些算法的更多信息,请参见:http://www.pygaze.org/2015/06/webcam-eye-tracker/

回复 ,作者:Rick Weinberg (未验证)

我很想修改 PyGaze 以允许眼球注视并控制鼠标。我只是认为我还没有掌握这项技能。此外,我对破解硬件很感兴趣。我见过 Tobii EyeGaze 设备,它的价格为 14,000 美元。我想通过使“改善生活设备”对所有需要它们的人都负担得起来“颠覆”辅助技术市场。所以我想问一下,是否有任何开源硬件可以帮助我破解推断视网膜反射相机?

我应该从这个问题开始的。非常感谢您回答我的问题。您的回答非常有帮助且内容广泛。我的最终目标是举办一个特殊教育黑客马拉松,将各种事物结合起来,制造事物并修改现有事物,以帮助有学习差异、特殊需要和经济困难的人。

回复 ,作者:Edwin (未验证)

伟大的计划!幸运的是,您并非孤军奋战,因此您不必重新发明轮子。

有一些相对便宜的眼动追踪器是面向消费者的。例如,EyeTribe 仅售 100 美元出头(他们宣传价格为 99 美元,但这不包括增值税和运费):请参阅 http://theeyetribe.com/ (缺点是它只有 60 赫兹;对于大多数消费者用途来说已经足够了,但不一定适用于研究。)

此外,还有开源硬件/软件项目

- openEyes(开源硬件,开源软件)是一个非常有前途的项目:http://thirtysixthspan.com/openEyes/

- Pupil(闭源(?) 硬件,开源软件)是一个很酷的项目,用于头戴式追踪器,可以以 120 赫兹的速度记录;请参阅 https://pupil-labs.com/

- Ogama(无硬件,开源软件)是一个越来越受欢迎的项目。我没有用过,但它看起来不错:http://www.ogama.net/

您可以在 COGAIN 网站上找到相当完整的概述:http://wiki.cogain.org/index.php/Eye_Trackers

祝您的项目好运!

回复 ,作者:Rick Weinberg (未验证)

Creative Commons License本作品根据 知识共享许可协议 4.0 版本发布。
© . All rights reserved.