几周前,我收到一位朋友的电子邮件,他当时正在参加一个教育技术会议。在邮件中,他提到了 PyGaze,一个我可能感兴趣的开源项目。
我对教育心理学有着浓厚的兴趣,因此,当我读到关于 PyGaze 的介绍时,我被深深吸引了。PyGaze 是一个用于 Python 眼动追踪的开源工具箱。网站上说它可以在 Linux 上运行,但我还想了解更多关于眼动追踪及其在心理学研究中的作用。我也想更多地了解这个项目,以及它如何为研究做出贡献,以及它对开源的意义。
在这次采访中,该项目的首席开发者 Edwin Dalmaijer,他在牛津大学实验心理学系从事研究和编程工作,对 PyGaze 以及眼动追踪在研究中的意义进行了精彩的描述。
大多数时候,人们看的地方也是他们注意力所在的地方。如果我记录下你在看哪里,我就能知道是什么吸引了你的注意力。PyGaze... 将来自不同制造商的各种眼动追踪器的代码捆绑到一个统一的接口中。
请介绍一下您自己和您的工作。您是开源爱好者吗?
作为一名实验心理学研究人员,我的工作需要我编写实验程序、分析程序,有时还需要编写完整的软件库或图形用户界面。在研究中,我们经常接触到非常晦涩的硬件,这些硬件执行非常特定的功能,例如跟踪测试对象的眼球运动或瞳孔反应、脑电波、握力以及你能想到的任何奇怪的东西。
这些硬件通常由小型供应商销售,他们没有时间提供直接支持或编写特定的编码文档。作为一名依赖这些产品的研究人员,你经常需要摸索 SDK 和 API,直到找到适合你的方法。
一旦我设法与这样一块晦涩的硬件进行通信,我就会将其功能集成到一个更用户友好的库中。PyGaze 就是一个很好的例子:它将来自不同制造商的各种眼动追踪器的代码捆绑到一个统一的接口中。我们还不断添加其他功能,包括游戏控制器和操纵杆、网络摄像头以及可以监测生理指标的设备。
显然,我所在领域的其他人也在做同样的事情。如果我们都共享我们的定制软件,那么每次我们需要使用新硬件时就不必重新发明轮子。因此,开源为我们节省了软件开发的时间和金钱。额外的好处是,同事们可以协作开发他们的软件,减少持久性错误的发生几率。你在 PyGaze 中看到了这种情况,越来越多的用户发现并解决问题。
不仅数据采集可能很麻烦;分析也可能变得非常复杂。学者们想出了非常巧妙的方法来查看他们的数据,并将他们的分析结果可视化成非常漂亮的图形。在这里,共享代码同样至关重要;它帮助我们共享好的代码并审查彼此的工作。这非常重要,因为脚本错误很容易犯,而且仅靠一双眼睛很难发现。
眼动追踪的目的是什么?这对您的研究有何帮助?
大多数时候,人们看的地方也是他们注意力所在的地方。如果我记录下你在看哪里,我就能知道是什么吸引了你的注意力。这对于基础研究非常重要,例如,当我们想知道什么特征吸引注意力时。这可以告诉我们使用哪种视觉信息来理解我们周围的世界。它在应用研究中也很有用——市场研究人员喜欢眼动追踪,因为它可以告诉他们人们在广告中看哪里。他们看到公司标志了吗,还是他们被穿着暴露的模特分散了注意力?(性并不总是奏效!)
此外,您的眼球运动的动态可以告诉我们各种各样的事情,关于什么会分散您的注意力,以及什么会激励您。通过密切监测您的扫视(非常快速的眼球运动)的速度和轨迹,我们可以了解很多关于注意力和运动系统的基本属性。
最后,我们可以使用眼动追踪器来测量瞳孔大小。目前人们对这项技术的兴趣再次达到顶峰,人们正在发现各种各样的事情。例如,您的瞳孔大小会在预期奖励时增大,也会在感到惊讶时增大(例如,因为没有获得奖励)。似乎瞳孔的大小也会根据您预期眼球移动的方向而增大或缩小。
开源软件,尤其是 Python,有什么特性使其如此适合您的工作?
嗯,首先,它是免费的。当我开始编程时,我还是个穷学生,买不起正版的 Matlab(我们领域的主要编程语言)。Python 是免费的,所以我转而使用它。
现在我已经习惯了它,我喜欢它的高层次性。有些人喜欢更底层的语言,这些语言允许你定义和控制一切(说的就是你,C!),但我喜欢用 Python 编程的快速和直接。东西就是能用,你不需要花很长时间来重新定义基本的东西。
除此之外,Python 非常通用。它拥有用于并行处理、多线程、套接字通信等方面的出色库。这些东西对于处理我们在实验心理学和认知神经科学中使用的那种晦涩的外围硬件至关重要。此外,当您需要非常具体的东西时(例如,监测您仓鼠的身体活动),很可能已经有人为此编写了一个库。您可以在 GitHub 上找到该库,供所有人使用和改进。
Python 用户往往非常热衷于分享他们的工作,并合作开展非常出色的项目(SciPy, NumPy, 和 matplotlib 对科学家来说都是必不可少的!)。这一点以及其用户友好的处理方式,使 Python 成为理想的通用编程语言。
在阅读您的研究论文《PyGaze:一个开源眼动追踪工具箱》后,我注意到 PyGaze 在 GitHub 上。对于您不断改进软件的努力来说,协作有多重要?
非常重要,因为我有时可能是一个糟糕的程序员。我往往不耐烦,忽略事情,而且有点 disorganized。有其他人查看我的代码并过滤掉错误会很有帮助。我真的需要在这里感谢 Sebastiaan Mathŏt,因为他更加细致,并且对如何组织和维护大型项目有更好的感觉。
PyGaze 有分支吗?这些分支是否对您的工作和 PyGaze 的开发有所帮助?
有很多分支。快速浏览一下 GitHub 告诉我现在有 25 个!最关键的是 Sebastiaan Mathŏt 的分支,因为所有新的 OpenSesame 集成都来自这里。OpenSesame 是一个用于社会科学的实验构建器。心理学家和神经科学家可以使用它,通过将各个构建块拖放到时间轴上,在图形环境中创建他们的实验。有些人更喜欢这种方式而不是编程他们的实验,因为它需要的技术知识较少,而且在某些情况下实际上可以更快。
Sebastiaan 已经为 OpenSesame 编写了 PyGaze 插件,以便人们现在可以使用它来访问 PyGaze 支持的各种眼动追踪器。
您认为 PyGaze 项目在短期内的发展方向是什么?您对该项目有长期目标吗?
短期来看,我们正在进行许多幕后工作,包括更好的变量管理和消除一些烦人的错误。从长远来看,我们希望能够支持更多的眼动追踪器,并支持更多晦涩的外围设备!我已经开始再次研究脑电图(EEG),所以我预计未来会对此提供一些支持。
此外,我一直在开发一个分析套件,以补充现有的实验库。它基本上将是一个带有相关库的 GUI,用于分析眼动追踪数据。它应该支持 PyGaze 支持的相同范围的追踪器,并且应该允许人们对注视数据、扫视和瞳孔测量进行统计和可视化。
5 条评论