参考PupilNet: Convolutional Neural Networks for Robust Pupil Detection - 云+社区 - 腾讯云
摘要
实时、准确和健壮的瞳孔检测是普及的基于视频的眼球跟踪的必要前提。 然而,由于快速的光照变化、瞳孔遮挡、非中心和离轴眼记录以及眼的生理特征,在真实场景中自动检测瞳孔是一个复杂的挑战。 在本文中,我们提出并评价了一种新的基于双卷积神经网络流程的方法。 在它的第一阶段,流程使用卷积神经网络和从缩小的输入图像的子区域进行粗瞳孔位置识别,以减少计算成本。 第二阶段使用从初始瞳孔位置估计周围的小窗口衍生出的子区域,使用另一种卷积神经网络来优化这个位置,与目前性能最好的算法相比,瞳孔检测率提高了25%。 可根据要求提供注释数据集。
1、介绍
一个多世纪以来,眼球运动的观察和测量被用于全面了解人类动眼肌和视觉感知系统的工作原理,为认知过程和行为提供了关键的见解。 眼球追踪装置是观察眼球运动的相当现代的工具。 在早期阶段,由于眼球追踪系统施加的限制,例如尺寸、重量、电缆连接和对被试本身的限制,眼球追踪仅限于静态活动,如阅读和图像感知。 随着基于视频的眼动跟踪技术的最新发展,眼动跟踪已经成为许多领域认知行为研究的重要工具,从实时和复杂的应用(例如,基于眼动跟踪输入和基于注视的交互的驾驶辅助)到要求较低的用例。 例如网页的可用性分析。 此外,在未来,基于视频的眼睛跟踪似乎具有广泛和不引人注目的前景,使以前只能想象的研究和应用成为可能。
虽然基于视频的眼动跟踪在实验室条件下表现令人满意,但许多研究报告称,当这些眼动跟踪器用于自然环境中的任务时,例如驾驶和购物,会出现困难和低瞳孔检测率。 在这样的真实场景中,噪声的主要来源是不可靠的瞳孔信号,主要与基于图像的瞳孔检测的复杂挑战有关。 [28]总结了在使用这种眼球追踪器时出现的各种困难,如改变照明、运动模糊和由于睫毛造成的瞳孔遮挡。 快速变化的光照条件主要出现在受试者快速移动(如驾驶)或相对于不均匀分布光源旋转的任务中,而运动模糊可能是由图像传感器在快速眼球运动(如扫视)中捕捉图像造成的。 此外,眼镜(如眼镜和隐形眼镜)可能导致大量和多种形式的反射(图1a和图1b),相对于眼动仪的非居中或离轴位置可能导致瞳孔检测问题,例如,当瞳孔被黑暗区域包围时(图1c)。 其他困难通常是由眼睛的生理特征引起的,这可能会干扰检测算法(图1d)。 因此,这些研究中收集的数据必须经过人工后处理,这是一个费力和耗时的过程。 此外,这种后处理对于依赖瞳孔监测的实时应用(如驾驶或手术辅助)是不可能的。 因此,实时、准确、鲁棒的瞳孔检测是普及的基于视频的眼球跟踪的必要前提。
最先进的瞳孔检测方法等的范围从相对简单的方法结合阈值和质心估计[25]更多的阐述方法,试图找出存在的反射的眼睛图像并应用瞳孔检测方法特别适合处理这样的挑战[7]——一个全面审查 见第二节。 尽管在现实场景中,这些算法比早期的方法有了实质性的改进,但在许多重要的现实用例中,这些算法的检测率仍然不令人满意(低至34%)。 然而,在这项工作中,我们展示了精心设计和训练的卷积神经网络(CNN),它依赖统计学习而不是手工启发式,是自动瞳孔检测领域的重大进展。 cnn在许多模式识别任务(例如,数字识别,图像分类)上的表现已经达到了人类水平。 这些网络试图模仿视觉处理系统的行为,并基于视觉感知研究的见解而设计。
我们提出了一种基于图像的瞳孔检测的双卷积神经网络管道。 第一流程阶段在输入图像的缩小版本的子区域上使用浅层CNN,以快速推断出瞳孔位置的粗略估计。 这种粗估计使得第二阶段只考虑原始图像的一小部分区域,从而减轻了噪声的影响,降低了计算成本。 然后,第二流程阶段对粗位置估计周围的一个小窗口进行采样,并通过使用第二个CNN评估从该窗口导出的子区域来改进初始估计。 我们专注于鲁棒学习策略(批量学习),而不是更精确的策略(随机梯度下降),因为适配方法必须有效地处理噪声(如光照、遮挡、干扰)。
背后的动机提出了流程:(i)来减少噪音的粗估计瞳孔位置,(2)可靠地检测准确的瞳孔位置从最初的估计,和(3)提供一种有效的方法,它可以运行在实时硬件架构GPU没有访问。 此外,我们提出了一种在线生成训练数据的方法,从而适用于在线场景下的瞳孔中心检测任务。 我们从质量和效率两方面评估了不同CNN配置的性能,并报告了相对于最新技术的显著改进。
2、相关工作
在过去的二十年中,已有几种算法解决了基于图像的瞳孔检测问题。 Pérez等人首先对图像进行阈值,并计算得到的暗像素的质心。 这个过程在之前估计的质心周围的区域反复进行,以确定一个新的质心,直到收敛。 由Li等人提出的Starburst算法,首先去除角膜反射,然后使用基于特征的迭代方法定位瞳孔边缘点。 基于RANSAC算法,确定最佳拟合椭圆,并采用基于模型的优化方法确定最终椭圆参数。 Long等人首先对图像进行向下采样,并在那里搜索瞳孔的近似位置。 进一步对该位置周围的图像区域进行处理,并采用基于平行四边形的对称质心算法对瞳孔中心进行定位。 在另一种方法中,Lin等人对图像进行阈值,通过形态学操作去除伪影,并应用内接平行四边形确定瞳孔中心。 Keil等人首先定位角膜反射;然后对输入图像进行阈值设置,在角膜反射的邻接处搜索瞳孔斑点,以属于斑点的像素质心为瞳孔中心。 Agustin等人对输入图像进行阈值,提取瞳孔和虹膜之间轮廓上的点,然后利用RANSAC方法将点拟合到一个椭圆,消除可能的异常值。 Swirski等人首先使用haar类特征进行粗定位。 采用k-means聚类对粗位置的强度直方图进行聚类,然后采用改进的基于ransac的椭圆拟合。 上述方法在受控环境(即实验室条件)中显示出良好的检出率和稳健性。
最近的两种方法,SET和ExCuSe,明确地解决了上述与自然环境中瞳孔检测相关的挑战。 SET首先根据亮度阈值提取瞳孔像素。 然后对得到的图像进行分割,并使用凸包方法提取分割边界。 根据分段的正弦分量对椭圆进行拟合,选取最接近圆的椭圆作为瞳孔。 [7]首先根据强度直方图对输入图像进行反射分析。 然后利用边缘检测器、形态学运算和角积分投影函数等处理步骤提取瞳孔轮廓。 最后,用直接最小二乘法拟合出直线的椭圆。 尽管后两种方法相对于之前的方法有了实质性的改进,但噪声仍然是一个主要问题。 因此,在许多在线现实应用中至关重要的鲁棒检测仍然是一个开放和具有挑战性的问题。
3、方法
该算法的总体工作流如图2所示。 在第一阶段,对图像进行缩小,并将图像分成重叠的子区域。 这些子区域由第一个CNN评估,并使用引起CNN反应最高的子区域的中心作为粗瞳孔位置估计。 然后,这个初步估计被送入第二管道阶段。 在这一阶段,使用第二个CNN对原始输入图像中瞳孔位置的初始估计周围的子区域进行评估。 最终选取引起CNN反应最高的子区域的中心作为瞳孔中心位置。 这种两步方法的优点是,由于图像的双三次降尺度,第一步(即粗定位)必须处理更少的噪声,因此,涉及的计算成本比在完整的放大图像上检测瞳孔更少。
在下面的小节中,我们将详细描述这些管道阶段和它们的CNN结构,然后是每个CNN所采用的训练过程。
3.1、粗定位阶段
本文使用的移动眼动仪生成的灰度输入图像大小为384×288像素。 直接在这种尺寸的图像上使用cnn将需要大量的资源,因此在计算上也会很昂贵,这阻碍了它们在最先进的移动眼球追踪器中的使用。 因此,第一阶段的目的之一是通过提供一个粗略的估计来减少计算成本,而这个粗略估计又可以用来减少瞳孔精确位置的搜索空间。 然而,这一步骤的主要原因是为了减少噪音,这些噪音可能由不同的相机距离、改变头戴式眼动仪之间的感觉系统、相机本身的运动或使用未校准的相机(如焦距或白平衡)引起。 为了实现这一目标,首先使用双三次插值对输入图像进行缩小,该插值在二维空间中使用三次多项式来评估结果值。 在我们的实现中,我们使用了4倍的降比例因子,得到了96 × 72像素的图像。 考虑到这些图像包含整个眼睛,我们选择了24 × 24像素的CNN输入尺寸,以保证瞳孔完全包含在缩小后的图像的一个子区域内。 缩小后的图像通过移动一个像素的24 × 24像素窗口来提取子区域(见图3a),并由CNN评估,得到区间[0,1]内的评级(见图3b)。 这些评级代表CNN的信心,学生中心是在次区域。 因此,选取评价最高的子区域的中心作为粗瞳孔位置估计。
第一阶段CNN的核心架构如图4所示。 第一层是卷积层,卷积核为5 × 5个像素,卷积步长为1,不使用padding。 卷积层之后是平均池化层,窗口大小为4 × 4像素,步长为4像素,与深度为1的全连接层相连。 然后将输出输入到单个感知器,负责在区间[0,1]内生成最终评级。 我们已经评估了这个架构在卷积层中不同数量的过滤器和在完全连接层中不同数量的感知器;这些值将在第5节中报告。 所选架构背后的主要思想是卷积层学习基本特征,如边缘,逼近瞳孔结构。 平均池化层使CNN对这些特征的小平移和模糊(例如,由于输入图像的初始降尺度)具有鲁棒性。 全连接层包含了更深层次的知识,即如何结合学习到的特征,使用logistic激活函数生成最终评分,对瞳孔位置进行粗检测。
3.2、微调位置阶段
虽然第一阶段得到了一个准确的瞳孔位置估计,但由于降尺度步引入的固有误差,它缺乏精度。 因此,有必要改进这一估计。 这种改进可以通过对粗瞳孔位置估计周围的小窗口应用类似于第2节中描述的方法来尝试。 然而,由于使用这个小窗口并不能缓解前面提到的大多数挑战,我们选择使用第二个CNN来评估原始图像中粗糙估计周围的子区域。
第二阶段CNN采用与第一阶段(即卷积)相同的架构模式(即平均池)、全连接)、单一逻辑感知器),因为它们的动机是类似的。 然而,这个CNN操作在更大的输入分辨率,以提供更高的精度。 直观地,这个CNN的输入图像将是96 × 96像素:第一个CNN输入的输入大小(24 × 24)乘以降比例因子(4)。然而,由此产生的内存需求比我们的测试设备上可用的更大; 因此,我们使用了最接近的工作尺寸:89 × 89像素。 其他层的大小也相应地调整了。 第一层的卷积核被放大到20像素,以补偿增加的噪声和运动模糊。 池化窗口的维度每边增加一个像素,导致全连接层的输入尺寸减少,运行时间减少。 这个CNN使用了8个卷积滤波器和8个感知器,因为卷积滤波器和输入区域的大小增加了。 粗糙瞳孔位置的子区域是基于一个以粗糙估计为中心的89×89像素大小的窗口提取的,它在水平和垂直方向上从−10移动到10像素(一个像素步长)。 与第一阶段相似,选取CNN评分最高的区域的中心作为精细瞳孔位置估计。
尽管第二阶段的计算成本更高,但我们的方法是高效的,可以在今天的传统移动计算机上运行。
3.3、CNN训练方法
两个cnn都使用有监督批量梯度下降(在补充材料中详细解释)进行训练,学习率固定为1。 除非另有说明,培训进行了10个时代,批大小为500。 显然,这些决策的目标是自适应的解决方案,其中训练时间必须相对较短(因此epoch的数量较少,学习率高),不能进行归一化(如PCA白化、均值提取)。 所有cnn的权值均由均匀分布的随机样本初始化,从而考虑对称破缺。 当给出有效的例子时,随机梯度下降算法在误差平面中搜索最小值比批量学习更有效,但如果给出的例子不充分(例如,由于传统算法的性能较差),它很容易发生灾难性跳变。 相反,批量训练淡化了这个错误。 然而,我们在第5节中探讨了随机学习(即使用1的批量大小)以及增加训练epoch数量的影响。
3.3.1、粗定位CNN
粗位置CNN是在从缩小后的输入图像中提取的子区域上训练的,这些子区域分为两个不同的数据类:包含有效(label = 1)或无效(label = 0)瞳孔中心。 训练子区域的提取是通过收集所有中心距离手标记瞳孔中心不超过5个像素的子区域。 中心距离小于1像素的子区域被标记为有效样本,其余子区域被标记为无效样本。 如图5所示,这个过程导致9个有效的和32个无效的样本每个手工标记的数据。
我们为CNN生成了两个训练集,负责粗位置检测。 第一个训练集由Fuhl et al.[7]的相关工作提供的50%的图像组成。 剩下的50%的图像以及来自这项工作的额外数据集(见第4节)被用来评估我们的方法的检测性能。 这次训练的目的是研究CNN如何在从未见过的数据上进行粗定位。 第二次训练包括第一次训练集和新数据集50%的图像,用于评价所提出的完整方法(即粗定位和精定位)。
3.3.2、微调CNN
精细定位CNN(负责检测准确的瞳孔位置)与粗定位CNN相似训练。 然而,我们只提取了一个以手标记瞳孔中心为中心的有效子区域样本和8个以距离手标记瞳孔中心5个像素为中心的等间距无效子区域样本。 相对于粗糙的定位训练,这减少了每个手工标记数据的样本量,从而限制了学习时间,以及主存储器和存储消耗。 我们从Fuhl等人的50%的图像和额外的数据集生成样本。 在这些样本中,我们随机选取50%的有效样本和25%生成的无效样本进行训练。
4、数据集
在本研究中,我们使用Fuhl等人引入的广泛数据集,并辅以5个额外的手工标记数据集。 我们的额外数据集包括41,217张在公共道路上驾驶过程中收集的图像,用于[12]实验,该实验与瞳孔检测无关,之所以选择该实验是因为专有的瞳孔检测算法的性能不令人满意。 这些新的数据集包括快速变化和不利的照明、眼镜反射和破坏性的眼睛生理特征(例如,虹膜上的黑点); 图6显示了来自这些数据集的示例。
5、 评估
训练和评估在一台8GB RAM的台式计算机上进行。 之所以选择这种设置,是因为它提供了与通常由眼动仪供应商提供的系统相似的性能,从而使实际的眼动仪系统能够在进行评估的同时进行其他实验。 算法采用MATLAB (r2013b)结合深度学习工具箱实现。 在评估过程中,我们采用以下命名约定:和表示CNN在卷积层中有n个过滤器,在全连接层中有k个感知器。 我们报告的结果是,平均瞳孔检测率作为算法建立和手工标记的瞳孔中心之间的像素距离的函数。 虽然专家们在眼球追踪研究中标注了ground-truth,但也不能排除不精确性。 因此,在像素误差为5的情况下(即算法建立的像素距离与手工标记的瞳孔中心之间的距离)讨论结果。
5.1、粗定位
我们首先从表1中评估候选的CNN进行粗定位。 所有候选节点都遵循3.1节给出的核心架构,每个候选节点在卷积层有特定数量的过滤器,在全连接层有特定数量的感知器。 他们的名字以C开头,表示粗糙,如前面在第3.3节中所述,训练了10个epoch,批大小为500。 此外,由于CK8P16提供了性能和计算需求之间的最佳权衡,我们选择这个配置来评估长时间训练的影响,结果是CNN ,它以1000批大小训练了100个epoch。 由于性能较差和空间的原因,我们省略了随机梯度下降学习的结果,但将其在线提供。
图7显示了使用从所有数据集中随机选取50%的图像进行训练并对所有图像进行评估时,粗定位cnn的性能。 从图中可以看出,第一层的过滤器数量(比较CK4P8、CK8P8、CK16P32)和广泛学习(参见CK8P16、CK8P16ext)比全连接层的感知器数量(比较CK8P8和CK8P16)影响更大。 此外,这些结果表明卷积层中的滤波器数量还没有达到饱和(也就是说,仍然有高水平的特征可以学习来提高精度)。 然而,值得注意的是,就计算时间而言,这是所提议的CNN体系结构中最昂贵的参数,因此,必须小心地包括进一步的增量。
评估粗CNN的性能只有在数据他们没有见过,我们另外从头开始重新训练这些CNN使用只有50%的图像提供的数据集Fuhl等。[7]和评估他们的表现完全在新数据集提供的这项工作。 这些结果与CNN对来自所有数据集的50%的图像进行训练的结果进行了比较,如图8所示。 没有学习新数据集的CNN以后缀nl标识。 所有nl-CNNs都表现出了类似的性能下降,相对于从所有数据集的样本上训练的同类。 我们假设这种效果是由于新数据集包含了新信息(即,包含了训练数据中不存在的新的挑战性模式);尽管如此,CNN还是很好地概括了这些看不见的模式。
5.2、微调位置
精细定位CNN (FK8P8)在第一阶段使用CK8P8,在所有数据集的50%的数据上进行训练。 对四种最先进的算法进行评估,即ExCuSe、SET、Starburst和Swirski。 此外,我们还为此开发了两种额外的精细定位方法:
- CK8P8ray:该方法使用CK8P8来确定一个粗略的估计,然后通过在8个等距离方向发送射线,最大30像素的范围进行细化。 计算射线轨迹中每两个相邻像素之间的差值,并计算相反射线的中心。 然后,用最接近的两个中心的均值作为精细位置估计。 该方法为cnn与传统瞳孔检测方法的混合方法提供了借鉴。
- SK8P8:该方法只使用一个类似于粗定位阶段使用的CNN,以类似的方式训练。 然而,这个CNN使用25 × 25像素的输入大小来获得一个均匀的中心。 这种方法被用作一种精简的(虽然比原始的粗定位CNN昂贵)单级CNN方法的参考,并被设计用于不能处理第二级CNN的系统。
为参考,还展示了FK8P8和CK8P8ray(即CK8P8)第一阶段使用的粗定位CNN。
本次评估中的所有CNN都是从所有数据集中随机选取50%的图像进行训练。 为了避免评估偏向于本工作引入的数据集,我们考虑了两种不同的评估场景。 首先,我们仅对来自Fuhl等人引入的数据集的图像评估所选择的方法,在第二步中,我们对来自所有数据集的所有图像进行评估。 结果分别见图9a和9b。 最后,我们评估了所有数据集上没有用于训练的所有图像的性能。 这为前面提到的自适应解决方案提供了一个现实的评估策略。 结果如图9c所示。
在所有情况下,FK8P8和SK8P8都比性能最好的最先进算法分别高出约25%和15%。 此外,即使有由于上标误差的惩罚,评估的粗糙定位方法大部分都表现出较先进的算法的改进。 混合方法,相对于粗定位没有显着改善; 如前所述,这种行为是预期的,因为传统的瞳孔检测方法仍然受到上述挑战,无论粗瞳孔位置估计的可用性。 虽然提出的方法(FK8P8)表现出最好的瞳孔检测率,但结合SK8P8方法降低计算成本的性能值得强调。 没有占缩小规模操作,SK8P8操作成本8旋转((6×6)∗(20×20)∗8 = 115200FLOPS)+ 8 average-pooling操作((20×20)∗8 = 3200FLOPS)+(5×5×8)∗8 = 1600FLOPS完全连接层、8FLOPS从过去的感知器,每次运行总计120008FLOPS。 给定输入图像的大小为96×72,输入图像的大小为25×25,则需要运行72×48 = 3456次,在不考虑额外操作(如加载/存储)的情况下,需要≈415 × 106次FLOPS。 即使在配套的眼动仪系统CPU上,这些都可以实时执行,产生基线48 GFLOPS。
5.3、CNN操作的行为分析
为了更详细地分析CNN学习到的模式,我们进一步检查了CK8P8的滤波器和权重。 值得注意的是,CNN也学习了类似的过滤器和权重。 具有代表性的是,我们选择基于CK8P8进行报告,因为CK8P8尺寸较小,更容易可视化。
图10的第一行显示了在卷积层学习的滤波器,而第二行显示了这些滤波器的权值符号,其中白色和黑色分别代表正权值和负权值。 滤镜(e)类似于一个中心环绕差,其余的滤镜包含圆形,很可能执行边缘检测。 值得注意的是,这些滤波器似乎在某种程度上是以互补对(即一个滤波器和它的逆)的形式发展起来的。 这种行为可以在(a,c), (b,d)和(f,g)中看到,而过滤器(e)可以与(h)配对,如果后者进一步发展其右上角和底部的右下角。 此外,当给定一个有效的子区域作为输入时,基于这些过滤器的卷积层响应如图11所示。 第一行显示过滤器响应,第二行显示正面(白色)和负面(黑色)响应。
图11中也显示了全连通层中所有感知器的权值。 在全连通层区域中,第一列表示全连通层中的感知器(即p1到p8),其他列显示图10中每个过滤器各自的权重(即从(a)到(h))。 由于分配给感知机p1, p2, p5和p8的输出权值是正的,这些模式将对有中心的瞳孔做出响应,而对感知机p3, p4, p6和p7则相反(见图11中的单个感知机层)。 这种行为是由输出范围在0到1之间的s形函数引起的。 如果用tanh函数代替,可能会导致负权值为正响应。 根据负数和正值(图10,卷积层的第二行),过滤器(b)和(f)显示相反的响应。 基于来自平均池化层的输入,p2在卷积层的第一行显示了最适合滤波器响应(a)的正权值映射。 同样,p1对(b)和(d)的拟合最好,p1和p8对(c)和(f)的拟合都很好; 没有感知器对(g)和(h)表现出足够的匹配,这表明这些过滤器可能被用来响应偏心瞳孔。 此外,所有负加权感知机在响应滤波器(e)的中心处都有高值(e)(可能的中心周围滤波器),这可以用来忽略小的斑点。 相反,p5(一个正加权的感知器)权值中心响应高。
6、结论
我们提出了一个自然驱动的管道,专门配置CNN用于鲁棒瞳孔检测,并表明它在避免高计算成本的同时,大大优于最先进的方法。 在评估中,我们使用了超过79.000张手工标记的图像——其中41.000张是文献中现有图像的补充——这些图像来自真实世界的记录,带有诸如反射、变化的光照条件、遮挡等伪影。 特别是对于这种具有挑战性的数据集,CNN报道的检出率比最先进的技术高得多。 展望未来,我们计划调查拟议的流程在在线场景中的适用性,在在线场景中,持续调整参数是一个进一步的挑战。