眼动追踪指标——机器学习
眼球追踪 是研究人员追捧的重要且必不可少的领域。眼动追踪也是一个新兴领域,有它的好处并被以多种方式使用。
Fixation 和 Saccade是眼球追踪中使用的眼球运动的两个基本组成部分。
- 扫视是在注视之间快速或立即的眼球运动,将视线从一个位置移动到另一个位置。
- 注视点是两个扫视之间的一个点,在此期间眼睛在一段时间内不移动,是静止的。
- 视觉输入发生在注视期间,因为眼睛在同一空间停留一段时间不动。
固定点:
凝视是凝视对象的最常见特征,眼动追踪研究人员经常通过分析来得出他们有兴趣进行深入而严格研究的认知过程或状态的结论。凝视是我们的眼睛基本上停下来或停下来检查它正在看的场景。眼睛的中央小凹视觉被暂停在一个地方,这样视觉系统就可以消耗关于它是前面场景的详细信息。本质上作为属性的注视是从注视点构建的。
凝视点从技术上讲可以告诉我们在任何给定时间我们的眼睛在看什么。 IE
Consider an eye tracker will collect data of sampling rate of about 80 Hz, we will end up with 80 individual gaze points per second and a gaze point will be reported every 12.5 milliseconds.
i.e. 1 sec = 1000ms
Since we have 80 gaze points
1000 ms / 80 = 12.5 ms.
当一个序列或一系列凝视点在时间或空间上彼此非常接近时,它们形成一束凝视点,称为凝视簇,而这个凝视簇就构成了一个注视点。
固视是由非常微小和缓慢的眼球手势(也称为微跳视)组成的,可帮助眼睛与目标对齐并避免知觉褪色(注视眼球运动)
因此,注视是视觉注意力的极好且最有价值的衡量标准。
扫视:
扫视是眼球运动,我们的眼睛(中央凹)从一个兴趣点快速移动到另一个兴趣点。由于我们的眼球在扫视过程中运动速度非常快,因此视网膜读取的图像质量很差,接收到的信息也很模糊。 Saccade 也是我们的视网膜保持其输入分辨率的一种方式。我们的眼睛无法理解它所看到的清晰描述。因此,我们可以说通过眼睛的信息输入主要发生在注视期间。
扫视既可以是非强制性的,也可以是强制性的,两只眼睛也可以朝同一方向移动。跳视并不总是线性发生。
为什么我们需要计算 Saccade?
- Saccade 计算是医学领域的福音,因为它有助于诊断许多与运动相关的疾病
- 随着眼动追踪技术的进步,在检测到跳动速度后,可以通过跳动异常发现Much Hypo kinetic和Hypo kinetic疾病。
- 通过检测水平和垂直扫视,还可以检测到帕金森、进行性上核麻痹等疾病。
- 同样在未来几天,它可以用于市场研究领域,通过找出潜在用户在线购买商品或在线阅读文章时最常盯着屏幕的位置。
如何计算扫视速度?
为了让我们知道我们的眼睛究竟在看哪里,
- 首先在眼动追踪设备或网络摄像头的帮助下,我们检测眼睛并在给定时间将注视点定位为 (x, y) 坐标。
- 在此之后,我们可以使用多种方法来检测跳视速度,例如 Sav-Golay 滤波器、简单的样本间差异、保持跳视峰值的一维双边滤波器。
- 简短的方法是像Matlab中的GRADIENT这样的两点中心差。
此外,我们可以使用最小二乘最优方法通过saccademodel算法在一系列 (x, y) 点上从Python跟踪的凝视点中找到扫视反应时间和扫视持续时间。
1)通过pip命令安装saccademodel
pip install saccademodel
2) 导入扫视模型并输入眼点。
Python3
# loading libraries
import saccademodel
input_eye_points = [[130.012, 404.231],
[129.234, 403.478],
[None, None],
[133.983, 450.044]]
# training the model
results = saccademodel.fit(input_eye_points)
print(results)
Python3
# Number of samples per second
framerate = 80.0
saccadic_reaction_time = len(results.source_points) / framerate
saccade_duration = len(results.saccade_points) / framerate
输出:
{'source_points': [[130.012, 404.231], [129.234, 403.478]],
'saccade_points': [[129.234, 403.478], [133.983, 450.044]],
'target_points': [],
'mean_squared_error': 71.36571893749988}
3)现在如果我们知道帧速率,我们可以通过将长度转换为秒来计算扫视反应时间和扫视持续时间:
蟒蛇3
# Number of samples per second
framerate = 80.0
saccadic_reaction_time = len(results.source_points) / framerate
saccade_duration = len(results.saccade_points) / framerate
结论:
总而言之,假设我们正在观看汽车在同一条道路上启动并到达目标,启动和目标变成注视,并且在中间跟随汽车的眼球运动变成扫视。