L2CS-Net: 3D gaze estimation

news2024/12/29 11:14:02

L2CS-Net: Fine-Grained Gaze Estimation in Unconstrained Environments论文解析

  • 摘要
  • 1. 简介
  • 2. Related Work
  • 3. METHOD
    • 3.1 Proposed loss function
    • 3.2 L2CS-Net 结构
    • 3.3 数据集
    • 3.4 评价指标
  • 4. 实验
    • 4.1 实验结果

论文地址:L2CS-Net: Fine-Grained Gaze Estimation in Unconstrained Environments
论文代码:https://github.com/ahmednull/l2cs-net
论文出处:arXiv,2022
论文单位:Otto-von-Guericke-University, Magdeburg, Germany

摘要

  • 人类的注视(gaze)是在人机交互和虚拟现实等各种应用中使用的关键线索。
  • 近年来,卷积神经网络(CNN)方法在预测凝视方向方面取得了显著进展。
  • 然而,由于眼睛外观的独特性、光照条件、头部姿势和凝视方向的多样性,在野外估计凝视仍然是一个具有挑战性的问题。
  • 在本文中,我们提出了一个鲁棒的基于 CNN 的模型来预测无约束设置下的凝视
  • 我们提出对每个凝视角度分别进行回归,以提高每角度的预测精度,从而提高整体凝视性能。
  • 此外,我们使用两个相同的损失,每个角度一个,以改善网络的学习和提高其泛化。
  • 我们用无约束设置收集的两个流行数据集来评估我们的模型。我们提出的模型在MPIIGazeGaze360数据集上分别达到了3.92◦和10.41◦的精度。

1. 简介

  • 眼睛注视(eye gaze) 是在各种应用中使用的基本线索之一。
  • 它表示用户在人机交互和开放对话系统中的参与程度。此外,它还被用于增强现实,用于预测用户的注意力,从而提高设备的感知能力,降低功耗。
  • 因此,研究人员开发了多种方法和技术来准确估计人类的凝视。这些方法分为两类: 基于模型的方法和基于外观的方法
  • 基于模型的方法通常需要专用硬件,这使得它们难以在不受约束的环境(unconstrained environment)中使用。
  • 基于外观的方法将人类的视线直接从廉价的现成相机拍摄的图像中还原出来,使它们很容易在不受约束的设置下在不同的位置生成。
  • 目前,基于CNN的方法是基于外观的方法是最常用的凝视估计方法,因为它提供了更好的凝视性能。
  • 大部分的相关工作专注于开发新颖的基于CNN的网络,主要由流行的骨干(如VGG, ResNet-18 , ResNet-50等) 组成,来提取凝视特征,最终输出凝视方向。
  • 这些网络的输入可以是单个流 (例如:如面部或眼睛图像)或多个流(如面部和眼睛图像)
  • 用于注视估计任务的最常见的损失函数是均方损失或L2损失
  • 尽管基于CNN的方法提高了注视精度,但它们缺乏鲁棒性和泛化性,特别是在无约束环境下。
  • 本文介绍了一种新的估计方法来在RGB图像中估计3D凝视角度使用一种 multi-loss 的方法
  • 我们建议使用两个全连接层独立回归每个凝视角度(偏航,俯仰),以提高每个角度的预测精度。
  • 此外,我们对每个凝视角度使用两个单独的损失函数。每一种损失都由注视二值分类和回归组成。
  • 最后,这两种损失通过网络反向传播,精确微调网络权重,提高网络泛化。
  • 我们通过使用softmax层和交叉熵损失(cross-entropy loss)来执行gaze bin分类,以便网络以鲁棒的方式估计注视角的邻域。
  • 基于所提出的损失函数和softmax层 (L2 loss+ cross-entropy loss+ softmax层),我们提出了一种新的网络(L2CS-Net)来预测无约束设置下的3D凝视向量
  • 最后,我们在两个流行的数据集MPIIGaze和Gaze360上评估了我们的网络的鲁棒性。L2CS-Net在MPIIGaze和Gaze360数据集上实现了SOAT的性能。

2. Related Work

  • 根据文献,基于外观的凝视估计可以分为传统的和基于cnn的方法。
  • 传统的凝视估计方法使用回归函数来创建一个特定于人类凝视的映射函数,例如自适应线性回归和高斯过程回归。这些方法在受限设置(例如,受试者特定和固定的头部姿势和照明)中显示出合理的准确性,然而,在非受限设置中测试时,它们显着降低。
  • 最近,研究人员对基于cnn的凝视估计方法更感兴趣,因为它们可以在图像和凝视之间建立高度非线性的映射函数。

3. METHOD

3.1 Proposed loss function

  • 大多数基于CNN的注视估计模型将3D注视预测为在球坐标下的注视方向角(偏航角、俯仰角)
    此外,他们采用均方误差(L2损失)来惩罚他们的网络。
  • 我们建议对每个凝视角度使用两个相同的损失。每一损失都包含交叉熵损失和均方误差。
  • 与直接预测连续凝视角度不同,我们使用了一个带有交叉熵的softmax层来预测 binned gaze classification。
  • 然后,我们估计凝视分类输出的期望以细化预测。
  • 最后,我们在输出中加入均方误差来改进凝视预测。
  • 使用L2与Softmax一起可以极大地灵活地调整非线性Softmax层。
  • 交叉熵损失定义为:
    在这里插入图片描述
  • 均方误差定义为:
    List item
  • 我们提出的每个凝视角度的损失是均方误差和交叉熵损失的线性组合,定义为:
    在这里插入图片描述
    其中CLS为综合损失,p为预测值,y为基真值,β为回归系数。在第4节的实验中,我们改变均方损失的权重,以获得最佳的注视性能。
  • 据我们所知,所有使用基于CNN的方法估计凝视的相关工作都没有考虑其技术中的分类和回归联合损失

3.2 L2CS-Net 结构

  • 我们提出了一个简单的网络架构(L2CS-Net)基于所提出的分类和回归损失。
  • 它将人脸图像作为输入,并将其作为主干馈送到ResNet-50,从图像中提取空间凝视特征。
  • 与之前大多数将两个凝视角度在一个全连接层中一起回归的工作相反,我们使用两个全连接层分别预测每个角度
  • 这两个全连接层共享相同的卷积层backbone。
  • 此外,我们还使用了两个损失函数,分别对应于每个凝视角度(偏航、俯仰)
  • 使用这种方法将改善网络学习,因为它有两个信号在网络中反向传播。
  • 对于来自全连接层的每个输出,我们首先使用softmax层将网络输出 logits 转换为概率分布。
  • 然后,应用交叉熵损失来计算输出概率与 target bin 标签之间的分类损失。
  • 接下来,我们计算概率分布的期望,以获得细粒度的凝视预测。
  • 最后,我们计算该预测的均方误差并将其添加到分类损失中。
  • L2CS-Net的详细体系结构如图1所示。
    在这里插入图片描述

3.3 数据集

  • Gaze360:
    Gaze360提供了360度范围内最宽的 3D gaze 注释。
    它包含238名不同年龄、性别和种族的研究对象。
    它的图像是使用一个 Ladybug多摄像头系统在不同的室内和室外环境设置(如照明条件和背景)中拍摄的。
  • MPIIGaze:
    MPIIGaze提供了15名受试者在几个月的日常生活中拍摄的213.659张图像。
    因此,它包含具有不同背景,时间和照明的图像,使其适合于无约束的凝视估计。
    它是通过软件收集的,该软件要求参与者观察笔记本电脑上随机移动的点。

3.4 评价指标

  • gaze angular error (◦) :计算公式为:
    在这里插入图片描述
    其中,ground-truth gaze direction g∈R3.
    predicted gaze vector g^ ∈R3.

4. 实验

4.1 实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/845585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言安装包Seurat

环境Ubuntu22,R4.1 also installing the dependencies ‘curl’, ‘openssl’, ‘httr’, ‘plotly’ R包安装的时候报了这个错误ERROR: dependencies httr, plotly are not available for package Seurat 解决方法,退出R,在terminal中键入…

将整数,结构体,结构体数组,链表写到文件

在之前的学习中,忘文件中写的内容都是字符串或字符,本节学习如何写入其他各种类型的数据。 回看write和read函数的形式: ssize_t write(int fd, const void *buf, size_t count); ssize_t read(int fd, void *buf, size_t count); 其中&a…

(论文复现)DeepAnt模型复现及应用

DeepAnt论文如下,其主要是用于时间序列的无监督粗差探测。 其提出的模型架构如下: 该文提出了一个无监督的时间序列粗差探测模型,其主要有预测模块和探测模块组成,其中预测模块的网络结构如下。 预测结构是将时间序列数据组…

mfc100u.dll丢失的多种解决方法分享,最新的修复mfc100u.dll方案

mfc100u.dll丢失可以说是见怪不怪的了,只要经常使用电脑的人,一般都会碰到一两次这种dll文件缺失的情况,今天主要是来给大家讲解一下mfc100u.dll丢失的多种解决方法,让你以后遇到这情况再也不需要头大。 一.mfc100u.dll为啥会丢失…

【论文阅读】UNICORN:基于运行时来源的高级持续威胁检测器(NDSS-2020)

UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats NDSS-2020 哈佛大学 Han X, Pasquier T, Bates A, et al. Unicorn: Runtime provenance-based detector for advanced persistent threats[J]. arXiv preprint arXiv:2001.01525, 2020. 源码&…

无人驾驶实战-第九课(预测系统)

PNC PNCPlanning and Control, 其中包括:预测、全局路径规划、计划(决策、路径规划、速度)及控制。 各公司无人驾驶的整体水平 预测 很多无人驾驶的工作都需要给予预测的结果。预测的需求是准确率和实时性,难点是较为少…

利用MMPose进行姿态估计(训练、测试全流程)

前言 MMPose是一款基于PyTorch的姿态分析开源工具箱,是OpenMMLab项目成员之一,主要特性: 支持多种人体姿态分析相关任务:2D多人姿态估计、2D手部姿态估计、动物关键点检测等等更高的精度和更快的速度:包括“自顶向下”…

mybtis-plus分页查询

文章目录 2.2 代码开发2.2.1 设计DTO类2.2.2 封装PageResult2.2.3 Controller层2.2.4 Service层接口2.2.5 Service层实现类2.2.6 Mapper层 3.3 代码实现3.3.1 分页插件配置3.3.2 分页查询实现 2.2 代码开发 2.2.1 设计DTO类 根据请求参数进行封装,在sky-pojo模块中…

macbook 安装 Git 和 安装 Homebrew

使用MacBook 时,需要拉取代码,我们需要使用到 Git,但 MacBook 中并没安装,这里我们分享一下安装过程。其他方式可查看参考文献中的方法。 一、使用终端直接安装 在新版的 MacBook 中,可以使用终端直接安装 Git&#…

【流量、日志分析】常见的web流量分析、windows日志分析

1.web流量分析 1.1 特点 通常会提供一个包含流量数据的 PCAP 文件,有时候也会需要先进行修复或重构传输文件后,再进行分析。 复杂的地方在于数据包里充满着大量无关的流量信息,因此如何分类和过滤数据是我们需要做的。 1.2 流量包修复 例…

Docker网络模型:理解容器网络通信和连接

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

第 357 场力扣周赛题解

A 故障键盘 简单模拟 class Solution { public:string finalString(string s) {string res;for (auto c: s)if (c ! i)res.push_back(c);elsereverse(res.begin(), res.end());return res;} };B 判断是否能拆分数组 区间dp:定义 p i , j p_{i,j} pi,j​表示子数组 n…

预测知识 | 预测模型变量重要性、可视化及论文撰写指南

预测知识 | 预测模型变量重要性、可视化及论文撰写指南 目录 预测知识 | 预测模型变量重要性、可视化及论文撰写指南变量重要性模型可视化论文撰写指南参考资料 变量重要性 关于预测模型变量重要性,大家一定熟悉不过。但如下图所示,其展示上可有进一步优…

ServiceAccount深度解析

ServiceAccount为Pod钟的进程提供身份信息。当用户访问集群时(例如使用kubectl命令的时候),apiserver会将用户认证为一个特定的User Account(目前通常是admin,除非系统管理员自定义了集群配置)。Pod容器中的…

Pytest测试框架2

目录: pytest参数化用例pytest标记测试用例pytest设置跳过、预期失败用例pytest运行用例pytest测试用例调度与运行pytest命令行常用参数python执行pytestpytest异常处理 1.pytest参数化用例 参数化 通过参数的方式传递数据,从而实现数据和脚本分离。…

C++三个线程依次打印abc

代码 #include<iostream> #include<thread> #include<mutex> #include<condition_variable> using namespace std; mutex mtx; condition_variable cv; int flag0; void A(){unique_lock<mutex>lk(mtx);int count0;while(count<10){while(fl…

【工程实践】使用EDA(Easy Data Augmentation)做数据增强

工程项目中&#xff0c;由于数据量不够&#xff0c;经常需要用到数据增强技术&#xff0c;尝试使用EDA进行数据增强。 1.EDA简介 EDA是一种简单但是非常有效的文本数据增强方法&#xff0c;是由美国Protago实验室发表于 EMNLP-IJCNLP 2019 会议。EDA来自论文《EDA: Easy Data…

AI Chat 设计模式:12. 享元模式

本文是该系列的第十二篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 给我介绍一下享元模式A.1Q.2 也就是说&#xff0c;其实共享的是对象的内部状态&…

【Pytorch】P0 Windows 安装 Pytorch

Windows安装Pytorch 前言PyTorch&#xff0c;CUDA与GPUCUDA ToolkitSo...总而言之 整体流程一&#xff1a;安装 CUDA Toolkit步骤一&#xff1a;获取CUDA版本信息步骤二&#xff1a;下载安装 CUDA Toolkit步骤三&#xff1a;按照默认步骤安装步骤四&#xff1a;检查CUDA安装成功…

Android应用开发(6)TextView进阶用法

Android应用开发学习笔记——目录索引 上一章Android应用开发&#xff08;5&#xff09;文本视图&#xff08;TextView&#xff09;介绍了文本视图&#xff08;TextView&#xff09;设置文本内容、设置文本大小、设置文本显示颜色。 TextView是最基础的文本显示控件&#xff…