【论文阅读】PureGaze

news2024/11/26 17:23:49

复现论文

PureGaze

PureGaze Overview

这篇文章在purify的角度重新定义了gaze estimation的这个问题。

对提纯问题的定义

基于提纯的思想,可以把 gaze estimation 的问题定义为 g = F( E( I ) )

其中,E 是一个特征提取的函数,F 是一个回归的函数,I 是输入模型的 Face/Eye image,g 是estimated gaze。

同时,定义 Z = E( I ),Z 为提取到的特征。

在此基础上,可以认为输入的 I 就是一系列特征的集合。可以把输入特征分为两大类:一类是与gaze有关的特征,表示为 G,一类是与gaze无关的剩余特征,如光照(illumination),个体信息(identity)~~,外貌(appearance)、表情(expression)~~等等,表示为 N

G 和 N 满足以下公式:

于是我们的任务就是——训练出足够好的特征提取器 E,使其*提纯出不包括视线无关特征 N 的特征 Z*。需要注意的是,我们认为与视线弱相关的信息也应该被忽略掉,已提高泛化性能。

自对抗的网络框架

我们设计了两个任务同时来做对抗:

  1. 最小化图像 I 和提取出的特征 Z 的互信息,这也表示着提取特征 Z 应该包含较少的图像信息。

  2. 最大化 gaze相关特征 G 和提取出的特征 Z 的互信息,提出特征 Z 应该保留更多的gaze相关信息。

自对抗的方法

两个任务组成了一个自对抗的提纯框架。因为在满足 task 1 时,需要舍弃一些图像信息,但是为了同时满足 task 2,与 gaze 特征无关的图像信息会先被舍弃,留下 gaze 相关的信息被保留。

实现 PureGaze

我们需要将之前提出的两个 task 落地实现,这涉及到如何实现 gaze estimation 的问题,和对抗性重建(adversarial reconstruction)。同时文章还提出了两种不同的计算损失的函数。

gaze estimation的实现

为了能够得到 gaze 相关信息的特征,我们需要先对图像进行一次 gaze estimation,同时这个操作也是从图像特征中保留了与 gaze 相关的特征的过程,也可以看作是对 task 2 的实现。

这个 gaze estimation 可以用任何的网络来实现,文章提出的是使用 backbone + MLP,backbone 用来进行特征提取,MLP 进行回归。这里Lgaze 损失用的是 L1 损失

adversarial reconstruction的实现

为了要 remove general image information from extracted feature,我们提出对抗性重构的模块来实现这个问题。这个模块主要是为了去除与 gaze 无关的信息,是对 task 1 的实现。

这里我们假设:如果从提取特征中没办法重构出的原始输入图像,就认为提取的特征已经包含较少的图像原始信息

首先使用一个 backbone 进行特征提取,我们使用一个 SA-module 进行重构,backbone 与 SA-module 相互对抗(因为 backbone 的作用是提取 gaze 相关特征,而进行重构的 SA-module 要不断增强其从特征中重构出原始图像的能力)。这里 SA-module 使用的 Lrec 损失是 pixel-wise MSE 损失

文章很巧妙的设计,将相互对抗表现令 backbone 的损失 Ladv = 1 - Lrec

还有,对抗网络的 task1 和 task 2 的 backbone 都是提纯 gaze 相关特征的网络,所以这两个 backbone 是共享权值的。

PureGaze 的整体架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RQX81cH9-1681528452270)(/Users/xuke/Library/Application Support/typora-user-images/image-20230310171355333.png)]

两个权值共享的 backbone 可以当做一个网络,

还有 MLP 网络和 SA-module :

网络一共用到了两种 Loss 函数:
在这里插入图片描述

Problems

backbone 有两个目标,最小化 Lgaze 和最小化 Ladv。 最小化 Lgaze 意味着应该提取与注视关的特征,最小化 Ladv 意味着应该去除图像特征。 这两个目标不是合作的而是对抗的,训练 backbone 包含了一个对抗学习的过程。

此外,Ladv 很容易满足于学习一个局部最优解来欺骗 SA-module。 要避免局部最优解。

Solution 1 - Local Purification Loss

因为眼部信息的 gaze 相关特征更多,所以希望更多关注眼部特征。希望能够对于局部进行提纯,设计了 LP-Loss。

使用 attention map(使用高斯混合分布,We use the coordinates of two eye centers as mean values, and the variance 在这里插入图片描述
of the distribution can be customized.
在这里插入图片描述
),希望能够在去除图像特征时,保留一些眼部特征

同时要注意,LP-Loss 只改变了 Ladv,没有改变 Lgaze,因为 gaze 特征不能只从眼部得到,需要整个人脸的特征。

Solution 2 - Truncated Adversarial Loss

因为我们重构的目的是去除 gaze 无关的特征,而不是要真正的生成差异更大的原始图像的“反向”图像,所以为了防止出现很大的像素“冗余”,进一步设计了 TA-Loss。

使用了门限值 kk 的值为 0.75在这里插入图片描述
),用来截断 Ladv。换言之,如果两张图像的差异过大,即 Ladv小于门限值(图像差异大于0.25)时,指示函数会令 Ladv 为0,防止这种情况被学习到。

放一张伪代码:

在这里插入图片描述

这里面的w1 = w2 = 1.

Puregaze 实验

train dataset:Gaze360,ETH-XGaze;test dataset:MPIIGaze,EyeDiap

Baseline:Full-Face,RT-Gene,Dilated-Net,CA-Net

效果(跟 baseline gaze estimation 方法以及域迁移的方法对比):in four cross-dataset tasks

因为过拟合,在源域上训练的 gaze estimation 模型在目标域上的表现效果较差。

跟域迁移的方法相比:

第三行:在加入了一些迁移时, ADL 和 PureGaze 的 backbone 一样,E->D 任务的表现并不是最好的。

第二行:在不加入迁移时,PureGaze 表现出了非常好的性能。

在 Full- Face 和 CA-Net 加入自对抗的框架(也就是 SA-Module 这个模块)后,在 CA-Net 上的表现性能有很大的提升,在 Full-Face 的各个任务上也都有所提升。

PureGaze 的方法是一种即插即用(plug-and-play attribute)的方法。

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

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

相关文章

Java中的null总结

日常工作,遇见几次null的语法报错,整理以下Java中null: 🍁 null是一个关键字,对大小写敏感,像public、static… 🍁 null是所有引用数据类型的默认值(int默认0、boolean默认false…)…

HTB-Jeeves

HTB-Jeeves信息收集80端口50000端口![在这里插入图片描述](https://img-blog.csdnimg.cn/5824bf345bc040ee9e449bebeade9495.png)开机kohsuke -> Administrator信息收集 80端口 ask jeeves是一款以回答用户问题提问的自然语言引擎,面对问题首先查看数据库里是否…

耳机输出电路中的耦合电容设计

分析耳机输出电路。 因为其中的输出耦合电容有6个这么多,有点奇怪。 耳机输出电路的实物外观长这样: 音频解码芯片(型号WM8988)输出音频信号,经过6个耦合电容,最终在耳机接口输出: 关键看靠近…

我的世界 为何用java开发?

mc用java开发就很好滴说明了一点编程语言本身只是个工具工具的意义在于被使用,老外搞这些工具,都带有一个明确的目的性,就是我要做什么然后再来看,我们怎么用手头上的工具将其实现。 mc的开发人员最早就是一个普通的java程序员&a…

GloVe词向量自定义函数实现词向量降维

TEXT.build_vocab(train_data, max_size10000, vectorsglove.6B.100d) LABEL.build_vocab(train_data) pretrained_embedding TEXT.vocab.vectors上面代码加载了glove.6B.100d词向量,假设我需要设计一个函数,将词向量长为100映射到长为50,这…

在Ubuntu20.04下安装Autoware.universe和Carla并进行联合仿真

在Ubuntu20.04下安装Autoware.universe和Carla并进行联合仿真一、安装Carla0.9.13二、安装 UnrealEngine 4.26三、安装Autoware.universe四、设置 OpenPlanner五、运行Carla和Autoware一、安装Carla0.9.13 1、进入Carla 的官方 github 页面,找到0.9.13版本 https:/…

代码随想录算法训练营第五十八天-单调栈1|739. 每日温度 496.下一个更大元素 I

739. Daily Temperatures public class DailyTemperatures {//暴力解法public int[] dailyTemperatures(int[] T){int length T.length;int[] result new int[length];for(int i 0; i < length; i){int current T[i];if(current < 100){for(int j i 1; j < len…

C++语法(13)---- 模拟实现priority_queue

C语法&#xff08;12&#xff09;---- 模拟实现queue和stack_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130068637 目录 1.使用 2.模拟实现 1.数据元素 2.数据建立 3.函数实现 4.向上调整和向下调整 3.仿函数&#xff08;函数对象&…

【马蹄集】第五周作业

第五周作业 目录MT2030 邮箱地址MT2039 换换换MT2040 银行账户MT2041 三角形的个数MT2046 巨大的错误MT2030 邮箱地址 难度&#xff1a;钻石    时间限制&#xff1a;1秒    占用内存&#xff1a;128M 题目描述 一个地址由 <username><hostname>[/resource] …

DAY 34 正则表达式

正则表达式 REGEXP&#xff1a; Regular Expressions&#xff0c;由一类特殊字符及文本字符所编写的模式&#xff0c; 其中有些字符&#xff08;元字符&#xff09;不表示字符字面意义&#xff0c;而表示控制或通配的功能&#xff0c; 类似于增强版的通配符功能&#xff0c;但…

day13 信号机制 (上)

目录 信号的概念 信号的发送和定时器 信号的函数 定时器函数 信号的捕捉 信号的概念 概念&#xff1a; 信号是软件层次上对中断机制的一种模拟&#xff0c;是一种异步通信方式&#xff0c;所有信号的产生及处理都是有内核完成的。 信号的产生&#xff1a; 1、按键产生…

Excel常用函数公式20例

目录 一、【IF函数条件判断】 二、【多条件判断】 三、【条件求和】 四、【多条件求和】 五、【条件计数】 六、【多条件计数】 七、【条件查找】 八、【多条件查找】 九、【计算文本算式】 十、【合并多个单元格内容】 十一、【合并带格式的单元格内容】 十二、…

SpringBoot整合minio实现对象存储

分布式文件系统应用场景 互联网海量非结构化数据的存储需求电商网站&#xff1a;海量商品图片视频网站&#xff1a;海量视频文件网盘&#xff1a;海量文件社交网站&#xff1a;海量图片 minio的概念 Minio是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊…

淘宝天猫数据分析工具推荐(竞品数据监控查询)

在当前的电商环境下&#xff0c;天猫平台的商家非常多&#xff0c;且不同商家的营销策略、手段等都不尽相同。对于商家而言&#xff0c;面对庞大的竞争对手&#xff0c;做好对竞争对手的监控工作也是一个非常重要的课题。 商家做好竞品监控的好处有哪些呢&#xff1f; 1、做好竞…

想毕业我阿里P8测开?除非把整条业务线都裁了.我的底气何来?

简单介绍一下自己&#xff0c;某985硕士&#xff0c;现在阿里智能事业部&#xff0c;视频云中台&#xff0c;测试开发岗。年纪嘛&#xff0c;快接近你们说的去送外卖的年纪了。主要的工作职责是参与制定测试保障策略和建立测试保障体系&#xff0c;开发和维护定制的自动化测试工…

cm-14.1 Android系统启动过程分析(n)- 关机/重启/重置/升级的那些事(偏嵌入式方向)

声明 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的。本文参考了一些书籍的若干章节。本文使用的代码是LineageOS的cm-14.1,对应Android 7.1.2,可以参考我的另一篇博客:如何下载Nexus5的LineageOS14.1(cm-14.1)系统源码并编…

Linux-初学者系列——篇幅3_操作界面获取帮助

操作界面获取帮助-目录1、获取帮助信息-man2、获取帮助信息-help3、获取帮助信息-info上篇: Linux-初学者系列——篇幅2_系统命令界面 利用帮助命令自学&#xff1a;man help info1、获取帮助信息-man 查看命令和部分文件帮助说明信息 使用方法&#xff1a; man [参数选项]…

Linux-系统大概介绍

桌面和终端基本使用 使用CtrlAlt可以取消状态&#xff0c;利于TabAlt切屏 在Linux中&#xff0c;WIN键是Super键 打开终端&#xff0c;终端有点像Windows的命令行&#xff0c;然后Ctrlaltf2可以切换为纯命令行&#xff0c;Ctrlalt是调出鼠标&#xff0c;Ctrlaltf1切回图形用户…

Unity使用webSocket与服务器通信(三)——C#服务端(Fleck)与Unity客户端( NativeWebSocket)传输多种数据数据

一、通信时会传输哪些内容 1、字符串数据 简单的字符串&#xff1a;比如登录请求信息&#xff0c;登录结果返回的信息。 用json系列化的字符串&#xff1a;比如上传一个表到服务器&#xff0c;让它写入到数据库中。 读取文件的时候&#xff0c;读取的是string内容。 2、二进制…

如何使用Midjourney自己设计独特的Logo,常用的提示和使用效果展示(内附Midjourney提示词网站)

文章目录一、提示技巧二、图案标志(图形)1.最小线条标志(Minimal Line Marks)2.渐变标志(Gradient Marks)3.中式标志&#xff08;Chinese Style Marks&#xff09;三、抽象/几何标志四、徽章设计五、吉祥物Logo六、平面设计七、其它一些Logo八、好用的Midjourney提示词网站生成…