当前位置: 首页 > news >正文

人工智能|计算机视觉——微表情识别(Micro expression recognition)的研究现状

一、简述

微表情是一种特殊的面部表情,与普通的表情相比,微表情主要有以下特点:

  1. 持续时间短,通常只有1/25s~1/3s;
  2. 动作强度低,难以察觉;
  3. 在无意识状态下产生,通常难以掩饰或伪装;
  4. 对微表情的分析通常需要在视频中,而普通表情在图像中就可以分析。

由于微表情在无意识状态下自发产生,难以掩饰或伪装,通常与真实情感直接相关,所以微表情在情感分析中较为可靠,应用前景广阔;另一方面,由于人为识别微表情比较困难,训练难度大且成功率不高,因此需要计算机进行微表情自动识别。

目前微表情识别的工作难点主要有两方面:

  1. 微表情的持续时间短、动作强度低,特征难以提取,因此需要进行合适的数据预处理与特征提取;
  2. 由于微表情的数据采集与鉴定存在困难,现有的微表情数据集较少,这使得深度学习在微表情识别中的应用存在困难。

现有的的微表情识别方法通常基于传统机器学习,设计一种手工特征(Handcrafted Feature)来提取微表情片段中的特征,依照数据预处理——特征提取——特征分类的框架进行微表情分类。随着近年来深度学习在计算机视觉中的发展,使用深度学习方法进行微表情识别的尝试也逐渐增多。

下面我将从数据集、数据预处理、传统方法、深度方法四个角度来简单介绍微表情识别工作。

二、数据集

CASME II数据集包含247条微表情视频片段(在我实际使用的版本中包含255条),使用200FPS的高速摄像机进行拍摄,视频片段的面部分辨率可以达到约280*340像素。CASME II数据集将微表情分为5类进行标注,分别是快乐(Happiness)、恶心(Disgust)、惊讶(Surprise)、压抑(Repression)、其他(Others);除此之外,CASME II数据集中还标注了微表情活动的起点(Onset)、峰值点(Apex)与结束(Offset),其中Apex对于微表情识别有所帮助;除了对情感进行标注外,CASME II数据集还标注了每个微表情的AU(面部活动单元),AU可以作为对微表情进行分类的依据。

  • 对于CASME II数据集的详细介绍可以参照下文:

CASME II: An Improved Spontaneous Micro-Expression Database and the Baseline Evaluation​journals.plos.org/plosone/article?id=10.1371/journal.pone.0086041​编辑

除此之外,目前比较常用的微表情数据集还有SMIC与比较新的SAMM等。对于不同的微表情数据集,主要的区别在于帧率、分辨率与标注方式。

三、数据预处理

在提取微表情的特征前,通常要对微表情视频片段进行数据预处理,首先就是人脸预处理,包括裁剪人脸等;随后,还要进行其他数据预处理,以便于特征的提取。

  • 常使用的数据预处理包括使用TIM算法进行时域图像插值、使用EVM算法进行动作放大。

1.人脸预处理

裁剪人脸时,比较经典的方法是使用ASM或其他算法提取人脸特征点,以左眼的位置以及双眼间的距离作为基准,控制人脸裁剪的位置与范围;

由于微表情数据集中的数据采集自多名受试者,而不同受试者的面部特征分布有所不同,因此为了减少不同受试者之间面部的差异,可以基于面部特征点对所有片段进行面部配准(face register),效果如下图所示:

(a)标准面部 (b)面部配准前的图像 (c)面部配准后的图像

简单来说,face register首先选择一张脸作为标准人脸图像,提取其特征点;对于每个视频片段,提取视频片段中第一帧的面部特征点,并计算一个映射函数(此处使用LWM算法),将这帧图像的特征点映射到标准图像的特征点上;最后,将此映射作用在视频中的所有帧上。这种方法可以使所有视频片段中的人脸特征点位置相同,从而减少不同人脸的差异。

  • 使用python的dlib库识别人脸特征点,进行face register,经过实验发现register可以提高模型在10-fold验证时的效果,但降低了模型在LOSO验证时的效果。由于dlib对于人脸特征点的识别并不是那么准,因此上述现象也可能是由dlib的误差导致。

2.时域图像插值(TIM算法)

由于微表情持续时间较短,我们希望有一种方法能在保持微表情特征的同时,延长微表情的持续时间,这样有利于特征的稳定提取,因此我们需要对视频片段进行时域上的插值,增加微表情片段所包含的图像数,相当于变相延长了微表情的持续时间。

由于在现实世界中,人的表情是连续变化的,但是在摄像机拍摄的视频中所包含的图像帧是不连续的。我们可以将现实世界中的连续表情变化视为图像空间上的一条连续曲线,曲线的每一个点都代表着人脸在一个瞬间时的表情,而摄像机拍摄的视频则可以视为在这条连续曲线上进行采样。只要能找到这条曲线,并在曲线上重新进行更加密集的采样,便能用更多的图像表示同一段表情。

时域插值模型(Temporal Interpolation Model,TIM)算法是一种时域上的图像插值算法。该方法首先将视频片段视为一个图(graph),并用图中的节点代表一帧图像,视频中相邻的帧在图中也是相邻的节点,视频中不相邻的帧在图中也不相邻;随后,使用图嵌入(graph embedding)算法将该图嵌入到一个低维的流形中,最后代入图像向量,计算出这条高维的连续曲线。在曲线上重新进行采样,便可以得到插值后的图像序列。

  • TIM算法的细节可以参考下文:

相关文章:

人工智能|计算机视觉——微表情识别(Micro expression recognition)的研究现状

一、简述 微表情是一种特殊的面部表情,与普通的表情相比,微表情主要有以下特点: 持续时间短,通常只有1/25s~1/3s;动作强度低,难以察觉;在无意识状态下产生,通常难以掩饰或伪装;对微表情的分析通常需要在视频中,而普通表情在图像中就可以分析。由于微表情在无意识状态…...

耿恭坚守城池的方法

疏勒城之战中,耿恭坚守城池的方法主要有以下几点: 选择有利地势:耿恭深知疏勒城依山傍水、地势险要,易守难攻,于是果断放弃金满城,移师至疏勒城据守,为长期坚守创造了良好的地理条件.运用心理战…...

小兔鲜项目总结——项目亮点

目录 1、基于业务的逻辑组件拆分思想2、长页面吸顶交互的实现3、自定义图片懒加载指令并封装为插件4、画板插槽组件等业务通用组件封装5、通用逻辑函数的封装6、列表无限加载7、路由缓存问题的处理 小兔鲜项目其实在暑假之前就已经做完了,但是一直没有空做总结&…...

Cesium的ClearCommand的流程

ClearCommand是在每帧渲染前可以将显存的一些状态置为初始值,就如同把擦黑板。当然也包括在绘制过程中擦掉部分的数据,就如同画家在开始绘制的时候会画导览线(如透视线),轮廓出来后这些导览线就会被擦除。 我画了一个…...

Fakelocation Server服务器/专业版 ubuntu

前言:需要Ubuntu系统 Fakelocation开源文件系统需求 Ubuntu | Fakelocation | 任务一 任务一 更新Ubuntu(安装下载不再赘述) sudo -i # 提权 sudo apt update # 更新软件包列表 sudo apt upgrade # 升级已安装的软…...

Spring AI Alibaba 快速入门

Spring AI Alibaba 实现了与阿里云通义模型的完整适配,接下来,我们将学习如何使用 spring ai alibaba 开发一个基于通义模型服务的智能聊天应用。 一、快速体验示例 注意:因为 Spring AI Alibaba 基于 Spring Boot 3.x 开发,因此…...

Docker Registry(镜像仓库)详解

Docker Registry(镜像仓库)详解 Docker Registry,即Docker镜像仓库,是Docker生态系统中一个至关重要的组件。它负责存储、管理和分发Docker镜像,为Docker容器提供镜像资源。本文将深入探讨Docker Registry的功能、结构…...

RTOS学习笔记---“二值信号量”和“互斥信号量”

在实时操作系统(RTOS)中,“二值信号量”和“互斥信号量”是两种常见的同步机制,用于线程之间的协调与资源管理。尽管它们有相似之处,都基于信号量概念,但它们的用途和行为存在重要区别。 1. 二值信号量&…...

Oracle-物化视图基本操作

-- 物化视图 -- 与普通视图的区别:真实存在数据的 普通视图的数据在基表 物化视图看成是, 一个定时运行的计算JOB一个存计算结果的表 创建时生成数据: 分为两种:build immediate 和 build deferred, build immediate是在创…...

(功能测试)测试报告

其中的统计分析和测试结果确认是必须要有的; 测试过程回顾:测试的时间和阶段,是否出现延期,与预期的任务计划是否匹配; !统计分析:统计写多少用例,用例覆盖情况如何(100%…...

【LeetCode每日一题】——746.使用最小花费爬楼梯

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 简单 三【题目编号】 746.使用最小花费爬楼梯 四【题目描述】 给你一…...

程序里sendStringParametersAsUnicode=true的配置导致sql server cpu使用率高问题处理

一 问题描述 近期生产环境几台sql server从库cpu使用率总是打满,发现抓的带变量值的慢sql,手动代入变量值执行并不慢,秒级返回,不知道问题出在哪里。 二 问题排查 用扩展事件或者sql profiler抓慢sql,抓到了变量值&…...

Vue3 el-table 默认选中 传入的数组

一、效果&#xff1a; 二、官网是VUE2 现更改为Vue3写法 <template><el-table:data"tableData"border striperow-key"id"ref"tableRef":cell-style"{ text-align: center }":header-cell-style"{background: #b7babd…...

最后一个单词的长度

题目详情&#xff1a; 解题思路&#xff1a; 用两个变量分别存储当前值和上次值&#xff0c;就可保证当前移动时记录字符个数&#xff0c;当遇到空格时&#xff0c;这次值保存到上次值&#xff0c;并清空。 代码解析&#xff1a; /* 最后一个单词的长度 */ #include <st…...

2024-11-19 kron积

若A[a11 a12; a21 a22]; B[b11 b12; b21 b22]; 则C[a11*b11 a12*b11 a21*b11 a22*b11; a11*b12 a12*b12 a21*b12 a22*b12; a11*b21 a12*b21 a21*b21 a22*b21; a11*b22 a12*b22 a21*b22 a22*b22] 用MATLAB实现 方法1&#xff1a; A [a11 a12; a21 a22]; B [b11 b12; b21 b22]…...

Redis ⽀持哪⼏种数据类型?适⽤场景,底层结构

目录 Redis 数据类型 一、String&#xff08;字符串&#xff09; 二、Hash&#xff08;哈希&#xff09; 三、List&#xff08;列表&#xff09; 四、Set&#xff08;集合&#xff09; 五、ZSet(sorted set&#xff1a;有序集合) 六、BitMap 七、HyperLogLog 八、GEO …...

树莓派2 安装raspberry os 并修改成固定ip

安装 安装raspberry os 没啥说的&#xff0c;到树莓派官网&#xff0c;下载制作启动映像盘的软件&#xff1a; https://www.raspberrypi.com/software/ 下载后&#xff0c;直接安装该软件&#xff0c;然后运行&#xff0c;选择好开发板的型号和操作系统型号&#xff0c;按照…...

11月第3周AI资讯

阅读时间:3-4min 更新时间:2024.9.9-2024.9.13 目录 DIAMOND:扩散模型在世界构建中的应用 阿里云推出Qwen2.5-Turbo:高效长文本处理,性价比卓越 微软:AI已实现几乎无限的记忆 Comfyui_Object_Migration一致性换衣模型 DeepSeek发布R1-Lite-Preview:推理AI竞争愈发…...

一次封装,解放双手:Requests如何实现0入侵请求与响应的智能加解密

引言 之前写了 Requests 自动重试的文章&#xff0c;突然想到&#xff0c;之前还用到过 Requests 自动加解密请求的逻辑&#xff0c;分享一下。之前在做逆向的时候&#xff0c;发现一般医院的小程序请求会这么玩&#xff0c;请求数据可能加密也可能不加密&#xff0c;但是返回…...

Notepad++--在开头快速添加行号

原文网址&#xff1a;Notepad--在开头快速添加行号_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Notepad怎样在开头快速添加行号。 需求 原文件 想要的效果 方法 1.添加点号 Alt鼠标左键&#xff0c;从首行选中首列下拉&#xff0c;选中需要添加序号的所有行的首列&#xff…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...