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