几周前,我收到一位朋友的电子邮件,他正在参加一个教育技术会议。在邮件中,他提到了 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 条评论