论文快速回顾笔记 —— Supressing Uncertainties for Large-Scale FER

2023-11-08

前言

这是之前因为做项目而读过的一篇CVPR2020论文,有些细节还是挺有意思的,最近回顾一下,顺便做下笔记,以供后续查阅。
Paper: Suppressing Uncertainties for Large-Scale Facial Expression Recognition
Arxiv: https://arxiv.org/pdf/2002.10392.pdf
Github: https://github.com/kaiwang960112/Self-Cure-Network

0.0简介

这是一篇关于人脸表情识别任务的论文。虽然在深度学习的加持下,计算机视觉迅猛发展,但现有的大部分网络,在大规模人脸表情数据集上表现并不是很好。为了解决这个问题,本文提出一个Self-Cure Network(SCN),抑制不确定性,并避免在不确定的人脸图像上过拟合。
主要通过两种方法:1)在每个batch上的自注意力机制(self-attention mechanism),对每个训练样本加权,进行等级正则化(ranking regularization). 2)通过仔细的重新标注机制(a careful relabeling mechanism)修正最低等级组(in the lowest-ranked group)的样本.
在RAF-DB上达到88.14%准确率,在AffectNet上达到60.23%准确率,在FERPlus上达到89.35%准确率.

1.关键的挑战来源和大致思路

  1. 人脸表情本身的不确定性
  2. 现有数据集包含的人脸表情图片质量不高,模糊不清等
  3. 标注者在标定数据集时本身带有的主观意识

1.1 在包含很大不确定性的数据集上训练带来的危害

  1. 在不确定很强的数据集甚至是带有错误标签的数据集上很容易过拟合,往往学到的面部表情特征是无效的,缺乏泛化性
  2. 数据集本身包含的大量的错误样本使得模型在前期的训练很难收敛

1.2 本文提出的解决方法

  1. 使用自注意力机制,在每一个训练的 mini-batch 上进行一些正则化操作,降低不确定性样本给训练过程带来的危害。
  2. 使用重标记机制,对可能存在严重错误的样本进行评估,达到一定的阈值时将修改样本的标签,以应对数据集中可能存在的错误标签

1.3 实验

在公共数据集上已经验证本文提出的方法可行,在RAF-DB上达到了88.14%,在AffectNet上达到了60.23%,在FERPlus达到了89.35%。

2. 具体方法步骤和部分实现细节

2.1 具体方法

  • Step1: Backbone CNN提取人脸特征信息
  • Step2: Self-attention importance weighting module学习每张图像的重要性以此计算加权损失.
    不确定的面部表情图像权重较小,反之较大。(笔者按:理想状态下,应该是对于一个数据集内,干净的数据子集进行着重学习,类似于多刷真题卷的感觉)
  • Step3: Ranking regularization module 以降序排列这些权重,分成两组(高重要性和低重要性),通过两组平均权重的margin来正则化,使用Rank Regularization loss(RR-Loss)。
  • Step4: Careful relabeling module对bottom group (低权重组)的样本进行重新标注, 方法是若经softmax等得出的最大预测概率比给定label的概率高,且超过预设阈值(也就是一个超参),则修改其label.
  • Step5: 论文作者认为在包含大量不正确和错误标签的数据集上能更好展示出算法的优越性,因此自己爬取了名为WebEmotion的数据集

2.2 整个SCN的pipeline

在这里插入图片描述

2.3 Self-Attention Importance Weighting

实际上就是采用一个含有FC层和sigmoid激活函数的网络来对每个图像预测权重.
在这里插入图片描述

权重直接乘以loss的话极端情况会导致有些图像的loss为0,因此作者采用Logit-Weighted Cross-Entropy Loss(WCE-loss), N为Batch_size:
在这里插入图片描述

2.4 Rank Regularization

对以上预测权重降序排序,再按照一定比率分成两组,定义一个rank regularization loss(RR-Loss),使得在优化过程中将两组均值拉大。
在这里插入图片描述
其中δ为超参.
对WCE-loss和RR-loss加权,得到最终结果.

2.5 Relabeling

以上已经划分为两组,对低权重组中的图像(或部分最低的图像)进行relabel, 如果预测的概率比原label的概率高出阈值,便修改原label.如下式:
在这里插入图片描述
重标记后的一些结果图:
在这里插入图片描述
在这里插入图片描述

3. 实验与结果

笔者自己跑过论文的开源工程,大概的准确率在87.5%上下,也基本达到了复现的程度。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文快速回顾笔记 —— Supressing Uncertainties for Large-Scale FER 的相关文章

随机推荐

  • 保证文件名唯一(java)

    问题描述 给你一个长度为 n 的字符串数组 names 你将会在文件系统中创建 n 个文件夹 在第 i 分钟 新建名为 names i 的文件夹 由于两个文件 不能 共享相同的文件名 因此如果新建文件夹使用的文件名已经被占用 系统会以 k
  • Centos/Linux在线环境下载安装包,到离线环境安装,并解决依赖问题

    在线环境下载rpm包 我们以yum utils包为例 在线环境使用下面的代码安装 sudo yum install y yum utils 离线环境需要的是安装包 因此下载yum utils的安装包的代码 mkdir ypm packet
  • 开关电源环路稳定性分析(01)-Buck变换器

    大家好 这里是大话硬件 说到开关电源不得不提的就是开关的环路稳定性 但是这一块目前用的DC DC芯片 很多厂家在芯片内部都已经做好了 所以对于使用的人来说 即使不太关注环路的稳定 按照手册中推荐的值设计产品也能正常使用 当然 仅仅是按照手册
  • 可充电点电池和不可充电电池区分?

    看到网上很多人都在问 碳性电池能充电吗 回答很明确 不可以 我们生活中使用的5号电池和7号电池分为可充电和不可充电两种 不可充电的5号电池和7号电池有碳性电池和碱性电池 碳性电池是一次电池 即干电池 是不能充电的 碳性电池价格比碱性电池便宜
  • Unity导入package简单操作流程

    Unity导入package简单操作流程 前言 在Unity 实际开发工作中 需要将一些现成的程序包或者插件导入到自己的工厂里 方便自己使用其中的一些现成的功能 方便自己开发 节约工作时间 这篇博客简单介绍下Unity导入package简单
  • C++ 判断磁盘是否为可移动磁盘

    传入参数path F bool isUsbDrv const wchar t path include
  • 数据库恢复技术

    数据库恢复技术和并发控制技术 事务 故障 1 事物内部的故障 2 系统故障 3 介质故障 4 计算机病毒 恢复的实现技术 1 数据存储 2 登录日志文件 各故障对应的恢复策略 1 事物故障的恢复 2 系统故障的恢复 3 介质故障的恢复 检查
  • 【华为机试刷题笔记】HJ14-字符串排序

    题目描述 给定 n 个字符串 请对 n 个字符串按照字典序排列 数据范围 1 n 1000 1 leq n leq 1000 1 n 1000 字符串长度满足
  • uniapp map 请求接口之后数据不渲染问题

    uniapp map 请求接口之后数据不渲染问题 我先说我遇到的问题 我使用uniapp 的 map 组件 组件所有绑定数据都有一个初始化 之后在 mounted 中请求服务器数据 不过在 map 组件里面没有渲染请求到的数据 使用 set
  • 千兆网线做法和网线接法注意事项

    据市场调查 目前千兆网线已经很 普遍了 但很多朋友对千兆网线水晶头接法还不是很了解 在制作网线的过程中会遇到各式各样的问题 有时会造成无法打开网页 在动手之前 我们要对于网线的制作有一个正确的认识 从而制作出我们需要的网线 网线由一定距离长
  • 区块链系列-----加密算法汇总

    背景 区块链背景下 对密码学技术要求需要有很深的研究 笔者以java语言为例 搜罗各种加密算法的相关使用 github地址 https github com niyuelin1990 mycrypto 简介 搜罗各种加密算法 电子邮件传输算
  • docker使用指南

    1 安装docker 使用如下命令可以安装docker 安装成功后docker version可以查看到docker的client和server信息 sudo apt install docker docker io y 为普通用户添加权限
  • mysql json类型最大长度限制_MySQL json 数据类型

    必须要5 7以上版本才能使用 写在开头 mysql json 的功能很强大 只是用来当一个储存数据的字段 就没什么意义了 使用proto做交互的话 只要JSON 写得好 用proro Unmarshal 就可以很方便的转换类型 可以精简很多
  • github 项目的基本结构以及git的使用方法

    github 项目的基本结构以及git的使用方法 介绍 根据README md 一般都在下面 阅读规则 每个团队根据队伍内部技术人员配置选择课题 课题在docs 目录下 对于docs 下非本组选择的课题文件不要进行任意修改 docs 下课题
  • 转onnx包问题

    pip install onnx 1 7 0 i https pypi tuna tsinghua edu cn simple 其实这一步已经可以了 pip install coremltools YOLOv5的pytorch模型文件转换为
  • redis的事务和watch机制

    这里写目录标题 第一章 redis事务和watch机制 1 1 redis事务 事务的三大命令 语法 开启事务 multi 语法 执行事务 exec 语法 取消事务 discard 1 2 redis事务的错误和回滚的情况 1 3 watc
  • Es6数组新增方法与字符串新增方法和新增数据类型

    1 数组新增方法 map方法 将数组中每一个元素依次取出 进行遍历 返回一个新的数组 let movies id 1 name 大话西游 author xxxx imgUrl http xxx douban com 1 jpg id 2 n
  • AST-解混淆 赋值语句嵌套三目表达式的优化

    处理前 0x4ae6ff 0x41bc28 4957228979 650037875 处理后 0x41bc28 0x4ae6ff 4957228979 0x4ae6ff 650037875 通用插件编写规则 const TransCondi
  • 2018年LeetCode高频算法面试题刷题笔记——搜索二维矩阵 II(开始之前)

    1 解答之前的碎碎念 这个题一开始我想的很简单 想着是个二维的二分查找 然后提交代码 果不其然出错了 因为并不能保证第i 1行的每个元素都大于第i行 不过想到了递归 也算是有点进步 虽然最后用递归写了一个没有通过 但是自己在vs里测试的没问
  • 论文快速回顾笔记 —— Supressing Uncertainties for Large-Scale FER

    前言 这是之前因为做项目而读过的一篇CVPR2020论文 有些细节还是挺有意思的 最近回顾一下 顺便做下笔记 以供后续查阅 Paper Suppressing Uncertainties for Large Scale Facial Exp