2022年过去,总结一下已经看过的论文的汇总以及对开展实验的一点想法:
首先,参考[1]中提出的分类,可以将 视线估计(gaze estimation) 分为:
在这个方向上,我主要看了四篇比较通用的三维视线估计文章,然后看了最近的一篇是基于提纯的方法,和一篇自适应的文章。然后对注视点估计的方向,看了一片比较早的基于基础模型的改进文章,还有另一篇跨被试的注视点估计。还简要了解了gaze detection ,看了一篇基于attention的文章。
这篇文章[2]的两个创新点是
[3]的作者提出现有的方法会忽略了面部和眼睛图像之间的内在关系,也就是会overlook脸部图像和眼部图像特征。所以提出了一种从粗到细(Coarse-to-Fine)的方式去自适应地估计视线。
网络的主要思想是这样的,分为将脸部图像当作是较粗的特征,得到的gaze作为basic的值;讲眼部图像当作是细粒度特征,得到的gaze当作是一个残差。basic的gaze向量加上残差就是真实的gaze输出了。
网络主要分为两个组件。
左边是attention component,主要是因为左右两个眼睛在face feature不同的时候,可靠性不同,所以要分配不同的权重。
右边是一个元学习的模型,削弱了之前时刻的状态对之后的影响。
整体的CA-Net的模型结构就是这样,要注意的是,这里是把face-net里面的h1输入到了attention component里面当作face feature。
模型精度误差达到了大概4.1左右的效果。
之前的两个论文的方法都是通用的视线估计方法,训练数据和测试数据来自不同的被试者。这样的方法在提升精度上达到了4-5左右就很难进一步提升了。
本文[4]的作者分析了两种原因:1.因为头部姿态的偏转,会导致图像中眼睛的形状发生几何变化,不能很准确地得到估计。2.因为不同的被试者眼球的内部构造不同,也就是如图(b)中的视线偏转角k是不同的,而这个偏转是无法从图像中学习到的。
之后的方法就是基于个性化的方法,即训练集和测试集都是同一被试者的。
作者还用某一个人的样本在Eyediap和MPIIGaze这两个数据集上用线性模型分别拟合了真实值和估计值,可以将图中误差值曲线的截距当作视线偏差的一个近似。
作者提出了一种偏差消除法——估计两张图片之间的视线偏差,然后将其和参考样本的视线估计进行加和,就可以得到最终的更精确的gaze估计结果。
在设计这个differential network的时候,对左右眼用到了权值共享的两个CNN,然后直接concate左右眼的特征,最后回归得到一个视线差(pitch,yaw)。
这个方法最后将估计误差缩小到了大约在3.7上下。
缺少数据样本来做训练也是gaze estimation的一个重要问题。
在本文[5],为了解决1.数据量少;2.在少量样本上训练会导致过拟合的问题,作者提出在训练的时候经过一个表征学习和一个元学习的组件,得到了一个具有适应想的网络(AdaGen),可以通过这个FAZE框架,在测试的时候通过少量(9个)的校准样本得到很好的预测误差精度。
Representation learning:是一个编解码器的结构,将外观、视线、头部姿态信息三个因素解藕z={za,zg,zh},其中zg和zh可以用两个旋转矩阵来表示。然后分别通过三个不同的loss学习。
在元学习中,为了得到最优权重θ*,1.计算在少样本的校准集Dc上的损失,并更新权重θn,学习率是α;2.利用更新后的权重θ’n,计算验证集上的损失;3.用η的学习率更新θn,最小化验证损失;重复这三步直至收敛。(公式略,可以去看论文[5])
在从测试集中使用校准集进行fine-tune。(公式略)
可以看到FAZE的方法在校准数据非常少的基础上达到了近似3.0的误差精度。
这篇文章[6]提出了一种对三维视线估计的全新的formulation:认为视线估计=对图像进行特征提取,再进行回归得到Gaze,基于这样的定义,作者提出了一种基于提纯的特征提取方法。
在提取特征的时候,我们希望保留下和视线有关的特征(头部姿态、眼睛的形状等),remove和视线无关的特征(光照、个人外观、表情等等)。
作者在这里用了对抗的思想,提出两个对抗任务:1.特征提取器要尽可能的提取出跟视线(G)更想死的特征(Z),也就是Max (Z∩G) ;2.特征提取器提取出的特征(Z)不能保留原有图像中很多的跟视线无关的特征,也就是Min (Z∩I)。
同时task1和task2两任务之间也是对抗的关系。
这两个任务的网络结构都是backbone + 一个module。首先,因为第一步都是做特征提取,所以两个backbone是权值共享的。
Lgaze是关于g和g的L2损失,Lrec是关于I和重构图像I的L2损失。gaze的预测用了一个感知机做回归,SA-module是用来做重构图像的。
模型把Gaze360和ETH-XGaze两个数据集当作源域,MPIIGaze和EyeDiap两个数据集当作目标域做了域迁移,可以看到效果是能够将个人的视线误差进一步缩小。
同时SA-Module还是一个可以预训练模型,预训练的结果已经达到了比较好的效果。
这个是二维视线估计的方向的一篇文章,用一种自适应的方式做了point of gaze 的估计。
文章[7]的输入也是四维的输入,左眼和右眼的图像,全脸图像还有脸部和眼部的bounding boxes。
网络主要是用左眼和右眼的图片做特征提取,然后全连接层回归来做视线的预测,将脸部和bounding boxes当作是脸部特征,当作是一个监督信息(主要是平移变换shift和尺度变换scale),对眼部特征进行重新校准。这个模型可以叫做AdaGN。
左眼和右眼的特征特征提取,是将右眼的图片镜像之后和左眼在channel-wise拼在一起的。作者提出经过CNN之后的低层(layer3)和高层(layer4)的特征都应该被保留,并且低层会有更多的空间信息,高层会保留更强的表征能力。加入了SE layer,能够对不同的层赋予不同的权重。
该论文的方法在PoG(point of gaze)的估计误差上有所减小(baseline大概在phone和tablet分别是1.71和2.53),同时注意到PoG的估计也在某些数据集上可以转化为三维视线估计结果。本文的三维视线估计精度在MPIIGaze为4.4左右。
这篇论文[8]在一个视频数据集EVE(end-to-end video eye-tracking)的比赛上达到了第一名。
这个模型也是预测在屏幕上的视线落点,而且它是主要针对cross-person的个性化视线估计提出了改进,所以对个人的视线误差的估计精度也可以进行提高。而且模型主要是基于已有的方法的一个后处理。
模型可以分为四个部分:一个是预训练的模型InitNet,可以是任何一个模型;然后经过一个VM(Validity Module),判断每一帧是否可用,是否眨眼;第三步,经过Self-Calibration(SC)的部分,这部分主要是将该名被试者的全部可用帧样本的的预测均值和真实值之间的差值当作误差,消除了视线整体的评议影响;最后,Person-specific Transform(PT),把热力图做为输入,通过网格化的操作更加关注于实现靠周围的样本帧,这一步相当于是消除了仿射变换的误差。
要注意的是,这里模型的输入样本都是同一个被试的。
模型在训练的过程中,还对样本加入了一些独立的噪声。
这个模型的表现效果在PoG达到了2.17左右,同时能够对被试的视线偏转误差达到1.95度左右的误差。
看了一篇做注视目标估计的文章[9],就是gaze detection/gaze following这个方向的。
这个方向的主要流程是首先通过一个分支识别静态物体,然后另一个分支用头部图片去识别视线的region,然后将两个方面得到的结果融合起来,就可以识别到图像中每个人看的物体。
这篇文章首先用一个分支计算出了带有深度优先(depth priority)信息的归一化后的热力图,然后第二个分支在头部图像进一步分割出了眼部图像,用多层感知机分别计算出了头部姿态的方向(pitch,yaw),左眼和右眼的方向。将头部姿态h进一步回归得到深度信息,左右眼得到gaze信息。把头部姿态h和gaze信息输入FOV generator生成锥形注视区域的attention map,另一路,将深度信息输入给map得到有深度的attention map,可以进一步缩小物体的范围。上下路结合之后就可以得到注视区域的detection结果。
之后还要经过一个backbone,然后做回归和做二分类。
这个方向的准确率是用AUC来表示的,本篇文章也达到了比较高的精度。
对于二维视线估计这个方向,还看了一些较早的文章。
上图是一篇二维视线估计的经典论文[10]里面的方法,四流输入,通过CNN和全连接层后得到了在屏幕上的住视点位置的估计。这里的预测结果是一个(x, y)二维平面坐标,单位是厘米。
本文[11]就是在其基础上加入了知识蒸馏(knowledge distillation)和剪枝(pruning)的操作。把连续的视线点当作是一个序列,然后用排序优先loss代替了L1loss。
论文的实验精度大约是1.77和2.66。
gaze这个方向其中一些文章的主要脉络图:
(用 connected paper这个网站生成的)
[1] https://zhuanlan.zhihu.com/p/112097446 T骨牛排的视线估计知乎专栏
[2] Zhang X, Sugano Y, Fritz M, et al. Mpiigaze: Real-world dataset and deep appearance-based gaze estimation[J]. IEEE transactions on pattern analysis and machine intelligence, 2017, 41(1): 162-175.
[3] Cheng Y, Huang S, Wang F, et al. A coarse-to-fine adaptive network for appearance-based gaze estimation[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(07): 10623-10630.
[4] Liu G, Yu Y, Mora K A F, et al. A differential approach for gaze estimation[J]. IEEE transactions on pattern analysis and machine intelligence, 2019, 43(3): 1092-1099.
[5] Park S, Mello S D, Molchanov P, et al. Few-shot adaptive gaze estimation[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2019: 9368-9377.
[6] Cheng Y, Bao Y, Lu F. Puregaze: Purifying gaze feature for generalizable gaze estimation[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2022, 36(1): 436-443.
[7] Bao J, Liu B, Yu J. An Individual-Difference-Aware Model for Cross-Person Gaze Estimation[J]. IEEE Transactions on Image Processing, 2022, 31: 3322-3333.
[8] Bao Y, Cheng Y, Liu Y, et al. Adaptive feature fusion network for gaze tracking in mobile tablets[C]//2020 25th International Conference on Pattern Recognition (ICPR). IEEE, 2021: 9936-9943.
[9] Fang Y, Tang J, Shen W, et al. Dual attention guided gaze target detection in the wild[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021: 11390-11399.
[10] Guo T, Liu Y, Zhang H, et al. A generalized and robust method towards practical gaze estimation on smart phone[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision Workshops. 2019: 0-0.