Gaze Estimation学习笔记(1)-Appearance-Based Gaze Estimation in the Wild
目录
前言
简介
在使用神经网络解决Gaze Estimation的问题上,Appearance-Based Gaze Estimation in the Wild是非常基础的一篇论文。本篇博客主要尝试简单介绍论文使用的主要方法,并大致总结论文作者所得出的结论。
论文概述
本篇论文主要分为三个方面:
- 介绍了论文作者收集制作的MPIIGaze数据集。
- 介绍了一种使用了CNN作为主要方法的Gaze Estimation方法。
- 在多个数据集上使用多种方法进行分析比较,以得到更多对于Gaze Estimation的新理解。
论文主要内容
MPIIGaze数据集
论文作者在文中提到,大部分(截至论文撰写时的)主流Gaze Estimating方法往往基于实验室中受控的环境下采集的数据集,而这类数据集的眼部外表往往变化较少,光照情况、大部分有用像素的集中位置等特征也较为单一。因此,论文作者采集制作了MPIIGaze数据集,历时数月通过笔记本电脑对15个受试者进行采集,数据集主要具有以下特点:
- 全部在笔记本电脑的真实使用环境下采集,光照,眼部外表等特征相比其他数据集有显著的多样性。
- 由于不同受试者采集的摄像机位置不同,数据集中头部姿态,视线方向的覆盖范围较广且重复率较低。
论文作者认为,MPIIGaze数据集具有更高的复杂度,更加接近与日常生活中的各类场景。后文的研究也证明MPIIGaze数据集训练的模型确实在鲁棒性上有所提升。
引入CNN的新Gaze Estimation方法
在介绍完MPIIGaze数据集后,论文作者介绍了一种新的使用神经网络解决Gaze Estimation问题的方法。
文中提到,当时的各类方法往往将精确的人物头部姿态作为已知条件,是一种很强的假设。因此,论文作者提出了一套完整的方法,根据输入图像完整判断人物头部姿态、视线方向。
算法的流程图如下:(图片来源自论文)
算法将单目相机拍摄的照片作为输入,直接输出最终的视线方向。该算法主要分为以下三个部分:
- 人脸对齐与3D头部姿态判断
- 归一化
- 使用CNN进行视线检测
人脸对齐与3D头部姿态判断
第一部分中,输入为单目相机拍摄的人物图像。论文作者采用SURF cascade方法检测人脸,检测到人脸后采用constrained local mode framework定位人脸标记点,即双眼的左右边界点与人物嘴巴的左边边界点共6个点。
论文作者根据收集到的所有人脸数据,建立人脸的基础3D模型,并将人脸基础3D模型与识别出的6个人脸标记点对比,通过EPNP算法估计出人脸的3D旋转\(r\),并将双眼标记点的中点,作为双眼的位置\(t\)。
至此,得到了人脸的3D旋转估计与双眼位置,进入下一步处理。
归一化
接下来,论文作者进行一系列操作将人脸图像归一化,以提高CNN的最终准确率。
首先,论文作者分别建立人脸坐标系与摄像机坐标系,具体规则可参考Gaze Estimation笔记——data normalization。归一化主要通过透视变换,达到以下目标:
- 将摄像机视角从固定距离\(d\)正对双眼位置\(t\);
- 将人脸坐标与摄像机坐标的\(x\)轴平行。
归一化后的到分辨率固定的眼部图像\(e\)与2维的头部转动角度向量\(h\)。这样的归一化将跨数据集测试变为可行。
使用CNN进行视线检测
CNN的任务为处理输入的2D头部角度\(h\)、归一化后的眼部图像\(e\),以得到最终的2维视线角度向量\(g\)。
论文作者采用的CNN构架是LeNet,在全连接层后训练了线性回归层以输出视线角度向量\(g\)。CNN将固定分辨率60x36的图片作为输入,两个卷积核分别为5x5x20、5x5x50。全连接层的隐藏单元共500个,并将头部角度\(h\)拼接至全连接层的输出,以得到最终的2维视线角度向量\(g\)。
论文作者进行的实验及结果
跨数据集测试
在跨数据集测试中,论文作者将头部、眼部角度覆盖最广的UT Multiview数据集作为训练集,分别测试了模型在MPIIGaze数据集与eyediap数据集上的结果,并与其余5种当时的表现顶尖的算法进行比较。
在两个测试数据集中,论文作者提出的基于CNN的方法表现均优于其他算法。并且各算法在MPIIGaze数据集上的准确率均低于eyediap数据集,证明了室外复杂环境下Gaze Estimation的难度提升。
此外,论文作者认为这一结果暴露了UT Multiview数据集在眼部外观上较为单一的缺陷,并推断出数据集多样性的缺乏是限制Gaze Estimation效果的因素之一。
数据集内测试
在单个数据集的测试中,论文作者提出的算法同样有最高的准确率。
此外,论文作者还将同样模型分别在UT Multiview数据集、MPIIGaze数据集下进行训练后,测试其在光照环境变化时的准确率,发现在MPIIGaze数据集下训练的模型明显对于光照变化有更强的适应能力,证明了数据集多样性对于室外Gaze Estimation的重要性。
算法的效果验证
论文作者还测试了不同CNN架构在UT Multiview数据集以及MPIIGaze数据集下的结果,证明提出的CNN架构优于当时的其他种类CNN。
同时,论文作者还进行了对不同识别对象进行单独训练的“person-specific”方法,发现在能针对不同对象进行单独训练的情况下,各类算法均有算法上的提升。
笔者的遗留问题
- 对于归一化使用EPNP算法得到3D头部旋转角度时的具体操作,即选定哪些点作为参考点、控制点还不清楚,论文中没有详细阐述,需要后期学习代码时留意。
- 归一化后头部坐标系与相机坐标系X轴对齐的情况下,按笔者理解应该只有头部上下转动一个角度,而\(h\)是二维向量,具体是哪两个角度也需要进一步学习。
Gaze Estimation学习笔记(1)-Appearance-Based Gaze Estimation in the Wild的更多相关文章
- Gaze Estimation学习笔记(2)-It's Written All Over Your Face Full-Face Appearance-Based Gaze Estimation
目录 前言 将完整脸部图像作为输入的空间权重CNN方法 将full-face image作为输入的原因 加入空间权重的CNN方法 基础CNN结构 空间权重机制 实验及分析 头部姿态.面部表现视线方向的 ...
- SQLServer学习笔记系列1
一.前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习Sqlserver写起,自己本身对数 ...
- X-Cart 学习笔记(二)X-Cart框架1
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 四.X- ...
- A.Kaw矩阵代数初步学习笔记 9. Adequacy of Solutions
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- [原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- CUBRID学习笔记 47 show
cubrid的中sql查询语法show c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . ...
- <老友记>学习笔记
这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...
- GC学习笔记
GC学习笔记 这是我公司同事的GC学习笔记,写得蛮详细的,由浅入深,循序渐进,让人一看就懂,特转到这里. 一.GC特性以及各种GC的选择 1.垃圾回收器的特性 2.对垃圾回收器的选择 2.1 连续 V ...
- 非常详细GC学习笔记
转载:http://blog.csdn.net/fenglibing/article/details/6321453 这是我公司同事的GC学习笔记,写得蛮详细的,由浅入深,循序渐进,让人一看就懂,特转 ...
随机推荐
- Springboot vue.js html 跨域 前后分离 Activiti6 shiro 权限
官网:www.fhadmin.org 特别注意: Springboot 工作流 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.1.2+ activiti6.0 ...
- 剑指前端(前端入门笔记系列)——BOM
BOM ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(浏览器对象模型)则无疑才是真正的核心,BOM提供了很多对象,用于访问浏览器的功能,这些 ...
- SpringBoot中执行定时任务
一:在SpringBoot中使用定时任务相当的简单.首先,我们在启动类中加入@EnableScheduling来开启定时任务. @SpringBootApplication @EnableSchedu ...
- 从 Vue 的视角学 React(四)—— 组件传参
组件化开发的时候,参数传递是非常关键的环节 哪些参数放在组件内部管理,哪些参数由父组件传入,哪些状态需要反馈给父组件,都需要在设计组件的时候想清楚 但实现这些交互的基础,是明白组件之间参数传递的方式, ...
- [转] Cache 和 Buffer的区别
程序员开发过程中经常会遇到“缓存”.“缓冲”等相似概念,之前没有特别关注,现在停下来做一下总结,才能更好地前行. 先来下枯燥的概念: 1.Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量 ...
- mybatis批量新增报错 BadSqlGrammarException
org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: com.mysql.jdbc. ...
- Distance(2019年牛客多校第八场D题+CDQ+树状数组)
题目链接 传送门 思路 这个题在\(BZOJ\)上有个二维平面的版本(\(BZOJ2716\)天使玩偶),不过是权限题因此就不附带链接了,我也只是在算法进阶指南上看到过,那个题的写法是\(CDQ\), ...
- 201671030102陈飞 实验十四 团队项目评审&课程学习总结
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 课程学习目标 1.掌握软件项目评审会议流程 ...
- 闲谈关于discuz内核缓存机制
Discuz! 缓存 Discuz! X2.5 的 config_global.php 中有这样一行代码 $_config['cache']['type'] = 'sql'; 这就是 Discuz! ...
- 基于变分自编码器(VAE)利用重建概率的异常检测
本文为博主翻译自:Jinwon的Variational Autoencoder based Anomaly Detection using Reconstruction Probability,如侵立 ...