论文基本情况

发表时间及刊物/会议:2022 CVPR

发表单位:西安电子科技大学, 香港中文大学,重庆邮电大学

问题背景

在大部分半监督学习方法中,一般而言,只有部分置信度高于提前设置的阈值的无标签数据被利用。由此说明,大部分半监督方法没有充分利用已有数据进行训练。

论文创新点

设置了Adaptive Confidence Margin(自适应阈值)根据训练规律动态调整阈值,充分利用所有的无标签数据。

网络结构



具体的训练步骤如下:

初始基本设定:

  1. 设置初始阈值,本文中,对于每个类别,阈值初始值为0.8。
  2. 本模型借鉴Mean Teacher的思想,引入老师模型(ema_model)。
  3. 训练时有标签和无标签数据按1:1的比例输入网络
  4. 模型backbone采用resent18,输出最后一层类别概率分布以及倒数第二层512维特征向量。

学生网络

对于有标签数据:

有标签图片经过弱数据增强(WA)后进入模型,输出结果和真值对比,利用交叉熵函数作为损失函数,计算有标签损失\(L^s_{CE}\)。

对于无标签数据:

无标签图片复制三份(a图, b图, c图),其中两份(a图,b图)经过弱数据增强(WA)后输入模型,再将输出的两个概率分布平均后得到最终的概率分布。记所得概率分布中的最大概率为\(f_{max}\),对应类别记作\(c\)。如果\(f_{max}\)大于此类别\(c\)对应阈值,则将\(c\)作为此类别的真实标签,并将此类数据归为子集I(含“真实标签”);否则,将此类数据归为子集II(无真实标签)。

如果此图片属于子集I,则将c图经过强数据增强(SA)后送入网络,和标签\(c\)计算交叉熵损失\(L^u\)。

若此图片属于子集II,则\(L^u=0\)。并拼接a图,b图输入模型后得到的两个512特征向量,首先根据公式8 计算两个特征向量的相似度,再根据公式9计算SupConLoss \(L^c\) (具体计算方法见论文Supervised Contrastive Learning)。

总损失函数为:



实验中\(\lambda_1 = 0.5,\lambda_2=1,\lambda_3=0.1\)。

老师网络

学生模型根据损失函数更新模型参数后,老师网络在学生网络的基础上使用指数平均移动的方式更新参数。之后,将有标签数据输入老师网络,得到概率分布。

对于一个batch的数据,记最大概率对应标签类别和真实类别相同的图片为集合\(N_{st}\),记\(N^c_{st}\)为最大概率对应标签类别和真实类别相同,且真实类别为\(c\)的图片张数,记\(s_i\)为最大概率, \(\hat{y_i}\)为预测类别,按照以下公式计算一个类别的平均最大概率,记为\(T_c\)。



之后,考虑到置信值会随着epoch数逐步提高,再根据以下公式计算当前epoch各个类别的阈值。

至此,一个iteration结束。

实验

表1 固定阈值和我们方法的比较,在RAF-DB, SFEW数据集上的结果,其中FT 表示使用FixMatch方法时取固定阈值的具体值,

表2 RAF-DB, SFEW 和AffectNet三个数据集上我们的方法和其他优秀的半监督方法对比

图3 自适应阈值调整方法,公式5中关于两个参数的值的消融实验

表3 使用WideResNet-28-2作为backbone在RAFDB上实验结果

图4 使用2D t-SNE 可视化方法可视化得到的特征,从图中可以看出,我们的方法对各类表情提取特征的效果最好(不同类别的特征重合度最小)。

表4 各个不同类别的数据集交叉验证结果。以下结果为在RAF-DB上训练,CK+数据集上进行测试所得结果

[论文][表情识别]Towards Semi-Supervised Deep Facial Expression Recognition with An Adaptive Confidence Margin的更多相关文章

  1. Paper-[acmi 2015]Image based Static Facial Expression Recognition with Multiple Deep Network Learning

    [acmi 2015]Image based Static Facial Expression Recognition with Multiple Deep Network Learning ABST ...

  2. CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等

    CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等 CVPR 2020中选论文放榜后,最新开源项目合集也来了. 本届CPVR共接收6656篇论文,中选1470篇,&q ...

  3. [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  4. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  5. 【Gabor】基于多尺度多方向Gabor融合+分块直方图的表情识别

    Topic:表情识别Env: win10 + Pycharm2018 + Python3.6.8Date:   2019/6/23~25 by hw_Chen2018                  ...

  6. Deep Learning 17:DBN的学习_读论文“A fast learning algorithm for deep belief nets”的总结

    1.论文“A fast learning algorithm for deep belief nets”的“explaining away”现象的解释: 见:Explaining Away的简单理解 ...

  7. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

  8. 机器学习: Tensor Flow with CNN 做表情识别

    我们利用 TensorFlow 构造 CNN 做表情识别,我们用的是FER-2013 这个数据库, 这个数据库一共有 35887 张人脸图像,这里只是做一个简单到仿真实验,为了计算方便,我们用其中到 ...

  9. 42 在Raspberry Pi上安装dlib表情识别

    https://www.jianshu.com/p/848014d8dea9 https://www.pyimagesearch.com/2017/05/01/install-dlib-raspber ...

随机推荐

  1. 转载:介绍AD另外一种奇葩的多通道复用的方法

    原文链接:http://www.eda365.com/forum.php?_dsign=74fe4957&mod=viewthread&page=1&tid=110710 在设 ...

  2. ES6-11学习笔记--正则表达式的扩展

    y修饰符 u修饰符   复习以前的修饰符: i(忽略大小写) m(多行匹配) g(全局匹配)   y修饰符:粘连修饰符 const str = 'aaa_aa_a' const reg1 = /a+/ ...

  3. Java/C++实现模板方法模式---数据库操作

    对数据库的操作一般包括连接.打开.使用.关闭等步骤,在数据库操作模板类中我们定义了connDB().openDB().useDB().closeDB()四个方法分别对应这四个步骤.对于不同类型的数据库 ...

  4. ubantu系统之安装notepadqq

    Ubuntu下的安装方法:     sudo add-apt-repository ppa:notepadqq-team/notepadqq     sudo apt-get update     s ...

  5. java中public和缺省这两个访问权限的根本区别?

    为了区分开public和缺省的区别,我们要引进包(package)的概念.包就像咱们磁盘上的目录一样,马克-to-win.package a;就是定义说当前的目录为a.底下编的任何的类,都会出现在当前 ...

  6. vue引入swiper

    https://github.com/surmon-china/vue-awesome-swiper/blob/master/examples/03-pagination.vue https://su ...

  7. vue单文件组件形成父子(子父)组件之间通信(vue父组件传递数据给子组件,子组件传递数据给父组件)

    看了很多文章,官网文档也有看,对父子组件通信说的不是很明白:决定自己总结一下: vue一般都使用构建工具构建项目:这样每个组件都是单文件组件:而网上很多文章都是script标签方式映入vue,组件通信 ...

  8. Go 1.18泛型的局限性初探

    前言 Go 1.18 版本之后正式引入泛型,它被称作类型参数(type parameters),本文初步介绍 Go 中泛型的使用.长期以来 go 都没有泛型的概念,只有接口 interface 偶尔类 ...

  9. 实现深拷贝还在用JSON.parse(JSON.stringify(obj))?带你用JS实现一个完整版深拷贝函数

    使用JavaScript实现深拷贝 1.JSON序列化实现深拷贝 在JS中,想要对某一个对象(引用类型)进行一次简单的深拷贝,可以使用JSON提供给我们的两个方法. JSON.stringfy():可 ...

  10. Git上传本地仓库文件到Gitee(Github同理)

    前言:本来想把最近的代码更新到Github上,但是校园网打不开,于是决定暂时先更新到Gitee中,Github中的操作也同理. 1. 创建云仓库: 就是在Gitee/Github上创建仓库,这里不演示 ...