DMS技术–EyeGaze
据调查显示,全世界发生的交通事故中有80%的碰撞事故是由于驾驶员分心导致的,如果在车上有人能够提示驾驶员分神了,发生事故的概率可以降低30%~43%
EyeGaze Estimation,就是使用计算机视觉技术来实时监控司机是否走神的一种手段。系统可以实时地知道驾驶员的注意力在哪里,如下图所示,系统实时捕捉驾驶员的视线,图片来自于EyeSight。
EyeGaze技术的解决方案一般有两种方案
- 人头角度回归+瞳孔定位,两者加权输出
- 直接CNN分类输出
不管是哪种方案,都会遇到一个问题,那就是算法鲁棒性。眼睛很容易被遮挡,例如很多司机是近视眼,常年佩戴眼睛,或者司机偶尔戴墨镜。
业界在解决此种问题一般是两个思路
- 使用高穿透红外相机,在硬件上创新
- 在图像去掉眼镜
综上,EyeGaze的技术路线应该是
- 人脸检测
- 眼睛定位
- 图像预处理
- EyeGaze算法
1、人脸检测&眼镜定位
人脸检测算法已经非常多了,眼睛定位也属于landmark算法
2、图像预处理
图像预处理的目的是去掉眼镜,减少眼镜对算法的影响,如下图所示
一般都是使用GAN的方法,重新去生成一张新的图片,上图来自于GPCycleGAN
3、EyeGaze算法
EyeGaze算法的目的是得到眼镜的注释区域,第一种是类似于OpenFace中的方法,使用传统方法定位眼镜,加上图像几何运算,得到注释角度,然后根据计算得到的角度和实际场景中的安装位置进行匹配
第二种是直接使用CNN方法分类输出
如上图所示,CNN结果直接是6分类,直接输出注释区域在哪里。流程非常简单,end2end结果可以直接使用,但是其缺点是训练样本组织起来比较麻烦。
另外,CNN方法还有两点需要注意
- 选取合适的CNN网络结构
- 选取合适的图像输入
常见的网络,例如VGG,Resnet,MobileNet等,都是在ImageNet上进行预训练的,迁移到EyeGaze应用上,需要对其进行网络微调,也就是迁移学习。因为EyeGaze应用场景中图像变化不大,顶多就是瞳孔在眼睛中的位置,所以网络中的大感受野也许会影响特征提取,比如较大卷积核尺寸和较大的stride都会对特征提起有副作用。
然后,怎么选取图像的输入尺寸。
红色区域是带背景的人头图像作为输入,绿色区域是不带背景的人头区域,蓝色区域是人脸图像,黄色区域是只有眼睛的半张人脸图像。
经过我的实验发现,黄色区域作为CNN的输入,不管是训练还是测试,其效果都是最好的。