L2CS-Net: 3D gaze estimation

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 实验结果

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql主从复制-主库/从库

介绍 mysql的主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能,就是一台或多台数据库(slave,从库)从另一台MYSQL数据库(master,主库)进行日志的复制然后再解析并应用到自己&#…

IO进程线程第五天(8.2)进程函数+XMind(守护进程(幽灵进程),输出一个时钟,终端输入quit时退出时钟)

1.守护进程&#xff08;幽灵进程&#xff09; #include<stdio.h> #include<head.h> int main(int argc, const char *argv[]) {pid_t cpid fork();if(0cpid){ //创建新的会话pid_t sidsetsid();printf("sid%d\n",sid);//修改运行目录为不可卸载的文件…

K8S系列文章之 自动化运维利器 Ansible

Ansible-安装 第一步&#xff1a;安装我们的epel扩展源 yum -y install epel-release 我这里会报/var/run/yum.pid 已被锁定&#xff0c;如果没有直接进行下一步 [rootmaster home]# yum -y install epel-release 已加载插件&#xff1a;fastestmirror, langpacks /var/run/…

计算机网络—TCP和UDP、输入url之后显示主页过程、TCP三次握手和四次挥手

TCP基本认识 TCP是面向连接的、可靠的&#xff0c;基于字节流的传输层通信协议。 图片来源小林coding 序号&#xff1a;传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值&#xff08;ISN&#xff09;&#xff0c;之后每次发送数据时&#xff0c;序号值 ISN…

【网络】DNS、ICMP、NAT

目录 一、DNS(Domain Name System) 1、DNS背景 2、域名简介 二、ICMP协议 1、ICMP功能 2、ICMP的报文格式 3、ping命令 4、traceroute命令 三、NAT技术 1、NAT技术背景 2、NAT IP转换过程 3、NAPT 4、NAT技术的缺陷 5、NAT和代理服务器 一、DNS(Domain Name Syste…

QtWebApp开发https服务器,完成客户端与服务器基于ssl的双向认证,纯代码操作

引言&#xff1a;所谓http协议&#xff0c;本质上也是基于TCP/IP上服务器与客户端请求和应答的标准&#xff0c;web开发中常用的http server有apache和nginx。Qt程序作为http client可以使用QNetworkAccessManager很方便的进行http相关的操作。Qt本身并没有http server相关的库…

【零基础学Rust | 基础系列 | 数据结构】元组,数组,向量,字符串,结构体

文章标题 简介&#xff1a;一&#xff0c;元组&#xff1a;1&#xff0c;定义元组&#xff1a;2&#xff0c;访问元组元素&#xff1a;3&#xff0c;元组解构&#xff1a;4&#xff0c;元组在函数中的应用&#xff1a; 二&#xff0c;数组&#xff1a;1&#xff0c;数组的声明和…

GG修改器安装与Root环境的安装

关于GG修改器大家应该都有一定的了解吧&#xff0c;就是类似于电脑端CE的一个软件。 GG修改器在百度云盘里请自行下载&#xff01; 百度网盘链接&#xff1a;https://pan.baidu.com/s/1p3KJRg9oq4s0XzRuEIBH4Q 提取码&#xff1a;vuwj 那我要开始了&#xff01; 本来不想讲GG…

【状态估计】一维粒子滤波研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

一条自由游动的鲸鱼

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>鲸鱼</title><style>#canvas-container {width: 100%;height: 100vh;overflow: hidden;}&l…

策略模式:优雅地实现可扩展的设计

策略模式&#xff1a;优雅地实现可扩展的设计 摘要&#xff1a; 策略模式是一种常用的设计模式&#xff0c;它可以帮助我们实现可扩展的、灵活的代码结构。本文将通过一个计算器案例来介绍策略模式的概念、使用场景以及如何在实际项目中应用策略模式来提高代码的可维护性和可扩…

[C++项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍...

项目背景 Boost库是C中一个非常重要的开源库. 它实现了许多C标准库中没有涉及的特性和功能, 一度成为了C标准库的拓展库. C新标准的内容, 很大一部分脱胎于Boost库中. Boost库的高质量代码 以及 提供了更多实用方便的C组件, 使得Boost库在C开发中会被高频使用 为方便开发者学…

设计模式行为型——备忘录模式

目录 什么是备忘录模式 备忘录模式的实现 备忘录模式角色 备忘录模式类图 备忘录模式举例 备忘录模式代码实现 备忘录模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是备忘录模式 备忘录模式&#xff08;Memento Pattern&#xff09;又叫做快照模式&#x…

qt源码---事件系统之QCoreApplication

上一节分析了qt和windows系统之间的消息的传递&#xff0c;本节着重看一下&#xff0c;qt内部的事件是如何传递的&#xff1f; 1.sendEvent函数 在使用的自定义事件时&#xff0c;有时需要手动抛出一个事件&#xff0c;常用的方式有2种&#xff0c;其一时阻塞式的sendEvent函…

在IDEA同一个窗口中同时打开多个独立项目

文章说明 本文主要说明如何在Intellij Idea中同时打开多个独立的Maven项目。 我在使用idea的时候&#xff0c;由于自己负责了很多项目&#xff0c;经常要在不通的代码之间切换来切换去。然后搜索代码的时候也只能搜到当前打开的这个项目。因为这个原因&#xff0c;一些小项目…

wxwidgets Ribbon使用wxRibbonToolBar实例

wxRibbonToolBar就是工具栏&#xff0c;一下是实现的效果&#xff0c;界面只是功能展示&#xff0c;没有美化 实现代码如下所示&#xff1a; MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 600)) …

vue中点击添加类名,并且实现升降序

1.介绍 要求&#xff1a;掌握indexOf()用法&#xff1b;动态绑定类名的对象写法&#xff1b;iconfont使用&#xff1b;split()用法&#xff1b;三元运算符用法&#xff1b;es6模板字符串&#xff1b; 说明&#xff1a;首先综合元素默认有元素并且是降序。服务器传来的数据格式…

C++物理引擎Box2D的下载,编译,VS2013配置环境

文章目录 网站和下载地址编译工具:编译box2dhelloworld测试网站和下载地址 https://box2d.org/ 下载地址 https://hub.nuaa.cf/erincatto/box2d/tags 编译工具: 1.VS2013 2.cmake 下载地址 https://cmake.org/ 编译box2d 下载box2d源码2.4.0,解压。在box2d-2.4.0目录下…

什么是场景营销,小红书场景营销方式和方法有哪些

现在小红书上最流行的就是场景营销&#xff0c;那什么是场景营销&#xff0c;应该怎么做呢&#xff1f;今天来和大家分享下大家都在说得场景营销是什么&#xff0c;在小红书投放怎么做好场景营销&#xff1f; 一、什么是场景化营销 说白来&#xff0c;场景营销(Scene Marketing…

机器学习深度学习——从全连接层到卷积

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——非NVIDIA显卡怎么做深度学习&#xff08;坑点排查&#xff09; &#x1f4da;订阅专栏&#xff1a;机器…