人脸表情识别概述(一)

2023-11-08

一、人脸表情识别技术目前主要的应用领域包括人机交互、安全、机器人制造、医疗、通信和汽车领域等

二、1971年,心理学家EkmanFriesen的研究最早提出人类有六种主要情感,每种情感以唯一的表情来反映人的一种独特的心理活动。这六种情感被称为基本情感,由愤怒(anger)、高兴(happiness)、悲伤 (sadness)、惊讶(surprise)、厌恶(disgust)和恐惧(fear)组成

 人脸面部表情运动的描述方法---人脸运动编码系统FACS (Facial Action Coding System),根据面部肌肉的类型和运动特征定义了基本形变单元AUAction Unit),人脸面部的各种表情最终能分解对应到各个AU上来,分析表情特征信息,就是分析面部AU的变化情况

 FACS有两个主要弱点1.运动单元是纯粹的局部化的空间模板;2.没有时间描述信息,只是一个启发式信息

三、人脸表情识别的过程和方法

1、表情库的建立

目前,研究中比较常用的表情库主要有:

美国CMU机器人研究所和心理学系共同建立的Cohn-Kanade AU-Coded Facial Expression Image Database(简称CKACFEID)人脸表情数据库;

日本ATR建立的日本女性表情数据库(JAFFE),它是研究亚洲人表情的重要测试库

fer2013人脸数据集,可以从kaggle网站上下载

更多库--->  参考链接

2、表情识别:

(1)图像获取:通过摄像头等图像捕捉工具获取静态图像或动态图像序列。  

(2)图像预处理:图像的大小和灰度的归一化,头部姿态的矫正,图像分割等。

目的:改善图像质量,消除噪声,统一图像灰度值及尺寸,为后序特征提取和分类识别打好基础

主要工作:人脸表情识别子区域的分割以及表情图像的归一化处理(尺度归一和灰度归一) 

(3)特征提取:将点阵转化成更高级别图像表述如形状、运动、颜色、纹理、空间结构等, 在尽可能保证稳定性和识别率的前提下,对庞大的图像数据进行降维处理

特征提取的主要方法有:提取几何特征、统计特征、频率域特征和运动特征等

1)采用几何特征进行特征提取主要是对人脸表情的显著特征,如眼睛、眉毛、嘴巴等的位置变化进行定位、测量,确定其大小、距离、形状及相互比例等特征,进行表情识别

优点:减少了输入数据量

缺点:丢失了一些重要的识别和分类信息,结果的精确性不高 

2)基于整体统计特征的方法主要强调尽可能多的保留原始人脸表情图像中的信息,并允许分类器发现表情图像中相关特征,通过对整幅人脸表情图像进行变换,获取特征进行识别。

主要方法:PCA(主成分分析)ICA(独立主元分析)

PCA一个正交维数空间来说明数据变化的主要方向 优点:具有较好的可重建性 缺点:可分性较差

ICA可以获取数据的独立成份,具有很好的可分性

基于图像整体统计特征的提取方法缺点:外来因素的干扰(光照、角度、复杂背景等)将导致识别率下降

3)基于频率域特征提取: 是将图像从空间域转换到频率域提取其特征(较低层次的特征)

 主要方法:Gabor小波变换

 小波变换能够通过定义不同的核频率、带宽和方向对图像进行多分辨率分析,能有效提取不同方向不同细节程度的图像特征并相对稳定,但作为低层次的特征,不易直接用于匹配和识别,常与ANN SVM 分类器结合使用,提高表情识别的准确率。 

4)基于运动特征的提取:提取动态图像序列的运动特征(今后研究的重点)

 主要方法:光流法

 光流是指亮度模式引起的表观运动,是景物中可见点的三维速度矢量在成像平面上的投影,它表示景物表面上的点在图像中位置的瞬时变化,同时光流场携带了有关运动和结构的丰富信息

 光流模型是处理运动图像的有效方法,其基本思想是将运动图像函数f(x, y,t)作为基本函数,根据图像强度守恒原理建立光流约束方程,通过求解约束方程,计算运动参数

 优点:反映了表情变化的实质,受光照不均性影响较小

 缺点:计算量大 

5)分类判别:包括设计和分类决策

在表情识别的分类器设计和选择阶段,主要有以下方法:用线性分类器、神经网络分类器、支持向量机、隐马尔可夫模型等分类识别方法

5.1)线性分类器:假设不同类别的模式空间线性可分,引起可分的主要原因是不同表情之间的差异。

5.2)神经网络分类器:人工神经网络(Artificial Neural Network,ANN)是一种模拟人脑神经元细胞的网络结构,它是由大量简单的基本元件神经元,相互连接成的自适应非线性动态系统。将人脸特征的坐标位置和其相应的灰度值作为神经网络的输入,ANN可以提供很难想象的复杂的类间分界面。

 神经网络分类器主要有:多层感知器、BP网、RBF

 缺点:需要大量的训练样本和训练时间,不能满足实时处理要求

5.3)支持向量机(SVM)分类算法:泛化能力很强解决小样本、非线性及高维模式识别问题方面表新的研究热点

基本思想:对于非线性可分样本,首先通过非线性变换输入空间变换到一个高维空间,然后在这个新空间中求取最优线性分界面。这种非线性变换通过定义适当的内积函数实现,常用的三种内积函数为:多项式内积函数、径向基内积函数Sigmoid内积函数

5.4)隐马尔可夫模型(Hidden Markov Models, HMM):特点:统计模型、健壮的数学结构,适用于动态过程时间序列建模,具有强大的模式分类能力,理论上可处理任意长度的时序,应用范围非常广泛。

优点:运用HMM方法能够比较精确的描绘表情的变化本质和动态性能

5.5)其他方法:

  基于人脸物理模型的识别方法,将人脸图像建模为可变形的3D网格表面,把空间和灰度放在一个3D空间中同时考虑。

  基于模型图像编码的方法是使用遗传算法来编码、识别与合成各种不同的表情

四、研究展望

1)鲁棒性有待提高:

外界因素(主要是头部偏转光线变化的干扰)

采用多摄像头技术、色彩补偿技术予以解决,有一定效果,但并不理想

2)表情识别计算量有待降低è确保实时性的要求

3)加强多信息技术的融合

   面部表情不是唯一的情感表现方式,综合语音语调、脉搏、体温等多方面信息来更准确地推测人的内心情感,将是表情识别技术需要考虑的问题

现阶段具体的人脸表情识别方法

人脸表情识别方法

方法简单描述

优点

缺点

稀疏表示

用稀疏表示法对样本库进行描述,建立超完备子空间,重构并观察残差,最后通过稀疏系数进行分类

操作简单,可以做前期的基础实验,有一定的鲁棒性

描述对象必须要是稀疏的,降低了实际应用价值,对于样本要求也比较高

Gabor变换

通过定义不同的核频率、带宽和方向对图像进行多分辨率分析,能有效提取不同方向不同细节程度的图像特征并相对稳定, 常与ANN 或SVM 分类器结合使用,提高表情识别的准确率

在频域和空间域都有较好的分辨能力,有明显的方向选择性和频率选择特性

作为低层次的特征,不易直接用于匹配和识别,识别准确率也不是很高,样本较少的条件下识别准确率也较低

主成分分析和线性判别

尽可能多的保留原始人脸表情图像中的信息,并允许分类器发现表情图像中相关特征,通过对整幅人脸表情图像进行变换,获取特征进行识别

具有较好的可重建性 缺点:可分性较差

外来因素的干扰(光照、角度、复杂背景等)将导致识别率下降

支持向量机

作为分类器做人脸识别,在表情识别时一般和Gabor滤波器一起使用作为分类器

在小样本下的识别效果较为理想,可以做实时性的表情识别

样本较大时,计算量和存储量都很大,识别器的学习也很复杂

光流法对运动特征提取

是将运动图像函数f (x,y,t)作为基本函数,根据图像强度守恒原理建立光流约束方程,通过求解约束方程,计算运动参数

反映了人脸表情变化的实际规律,受外界环境的影响较小,比如光照条件变化时,识别率不会有太大变化

识别模型和算法较复杂,计算量大

图像匹配法

通过使用弹性图匹配的方法将标记图和输入人脸图像进行匹配

允许人脸旋转,和能够实时处理

会受到其他部位特征的影响,如眼镜,头发等

隐马尔可夫模型

由观察的面部表情序列及模型去计算观察面部表情序列的概率,选用最佳准则来决定状态的转移;据观察的面部表情序列计算给定的模型参数

识别准确率较高,平均在97%以上

对前期的面部表情序列模型要求较高,这对表情识别算法的准确率影响也较大

其他方法如:矩阵分解法

以NMF为例,分解后的基图像矩阵和系数矩阵中的元素均是非负的。将表征人脸各部分的基图像进行线性组合从而表征整个表情图像。

需要的样本较少,在无遮挡时识别准确率90%以上

受外界环境影响较大,识别准确率在嘴巴受到遮挡时,准确率只有80%左右

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

人脸表情识别概述(一) 的相关文章

  • 【计算机视觉笔记】图像检索学习 (Content Based Image Retrieval)

    论文跟踪 Awesome image retrieval papers https github com willard yuan awesome cbir papers 综述 SIFT Meets CNN A Decade Survey
  • 白嫖 GitHub Pages,轻松搭建个人博客

    Hexo 是一个快速 简单且功能强大的博客框架 使用 Markdown 解析文档 Hexo 能在几秒内生成带有自定义主题并集成各项功能的网站页面 本文采用 Github Pages Hexo 的方式 搭建个人博客 零 准备工作 1 使用个人
  • QT通过parentWidget()实现多界面跳转及关闭(切换界面和返回前一界面)

    QT通过parentWidget 实现多界面跳转及关闭 切换界面和返回前一界面 不需要跳转界面相互包含头文件 超简单的方法 先将第一级的窗口this指针传给次级的的窗口 子窗口通过parentWidget 返回第一级的this并用来调用sh
  • (五)复函数积分的定义与性质

    本文内容主要如下 1 复积分的概念 1 1 复积分的定义 1 2 复积分的存在性与计算 1 3 一个圆周上的重要积分公式 1 4 复积分的基本性质 1 复积分的概念 1 1 复积分的定义 定义 如图 C为平面上一条光滑的简单曲线 z z
  • k8s集群pod直接无法ping通

    简介 基于OpenStack云主机搭建的k8s集群 网络CNI选用的calico 使用的是BGP模式 pod直接无法ping通 宿主机也无法ping通pod 排除后发现不是安全组的原因 应该是OpenStack的网卡默认会丢掉非本网卡ip地
  • WSL2-解决无法ping通主机/配置使用主机代理

    WSL2无法ping通主机 省流 如果主机能ping通wsl从机 从机ping不通主机 大概率是防火墙拦截了 可以以管理员身份在powershell中运行下面的代码 或者手动在防火墙设置中添加相应的出入站规则 New NetFirewall
  • 音频-基于Core Audio技术采集音频(版本1)

    这个是第一次版本优化 优化是简单易懂 代码 WindowsAudioSession cpp 基本的利用WAS采集音频的demo include
  • extern关键字作用

    语法 extern放在变量和函数声明之前 表示该变量或者函数在别的文件中已经定义 提示编译器在编译时要从别的文件中寻找 除此之外 extern还可以用来进行链接指定 作用 声明外部变量 在声明全局变量时 不同的文件在编译器编译时是不透明的
  • 字节流与字符流

    流是个抽象的概念 是对输入输出设备的抽象 输入流可以看作一个输入通道 输出流可以看作一个输出通道 输入流是相对程序而言的 外部传入数据给程序需要借助输入流 输出流是相对程序而言的 程序把数据传输到外部需要借助输出流 字节流 传输过程中 传输
  • java基础系列 -- 类的三大特性:封装、继承、多态

    java类的特性 类有三大特性 封装 继承 多态 封装 封装就是将类的某些属性隐藏起来 限制在类的外部对类内部成员进行访问 通过接口对外开放 但是在外部不能直接进行查找属性 只通过公共接口来访问类的成员数据 为什么要设置隐藏 隐藏数据是为了
  • jpa.hibernate.ddl-auto属性说明

    jpa hibernate ddl auto 的几个常用属性值 none 默认值 什么都不做 每次启动项目 不会对数据库进行任何验证和操作 create 每次运行项目 没有表会新建表 如果表内有数据会被清空 create drop 每次程序
  • nginx_http_proxy,upstream,stream模块简析

    一 ngx http proxy module模块 模块功能 为后端httpd服务做反向代理 并且与Httpd 之间使用http进行通信 1 proxy pass URL Context location if in location li
  • 如何求C语言字符串长度(strlen函数和sizeof关键字)

    如何求C语言字符串长度 strlen函数和sizeof关键字 在程序里 一般会用 strlen 函数或 sizeof 来获取一个字符串的长度 但这2种方法获取的字符串的长度其实是不一样 我们用如下函数进行测试 void test6 char
  • Java8新特性-Lambda表达式

    Lambda表达式 也可称为闭包 它是推动Java8发布的最重要的特性 Lambda允许把函数作为一个方法的参数 函数作为参数传递进入方法中去 使用lambda表达式可以把代码变得更加简洁紧凑 语法 lambda表达式的语法格式如下 par
  • Ciclop开源3D扫描仪软件---Horus源码分析之point_cloud_roi.py

    联系方式 QQ 2468851091 call 18163325140 Email 2468851091 qq com coding utf 8
  • C语言小游戏——井字棋(数组实现)

    学c也学了有一些时间了 今天用c语言做了一个小游戏 井字棋 相信大家也玩过 我们这个游戏的思路呢 是玩家和电脑对弈 谁先把三颗棋子连成一条线 谁就赢了 如下图所示 要想实现我们这个井字棋需要用到数组的知识 所以 老规矩我们先简单的把数组讲一
  • SCI审稿流程(转)

    1 收到邮件 编辑约审稿 同意就接受 会约定审稿期限 一般三个月 Dear Mr Cat Please be informed you have been registered by our editorial team as a user
  • scheduler学习率设置

    在炼丹的过程中 学习率的调整是必不可少的 下面给出scheduler模块的调学习率的方法 后面会慢慢补充 调整学习率 PyTorch官方文档 一 CyclicLR torch optim lr scheduler CyclicLR opti
  • php把二维数组变为一维,如何将PHP二维数组转换为一维数组

    如何将PHP二维数组转换为一维数组 发布时间 2020 07 22 11 12 05 来源 亿速云 阅读 137 作者 Leah 如何将PHP二维数组转换为一维数组 相信很多没有经验的人对此束手无策 为此本文总结了问题出现的原因和解决方法

随机推荐

  • 网络协议详解:TCP Part1

    目录 TCP的可靠性 TCP的机制 ack 编号机制 1 发送的数据编号 SN 2 确认的数据编号 ASN 3 编号规则 4 SN在发送TCP Segment 的 Header 中如何体现 5 ASN的填写规则 6 ISN TCP segm
  • 2.4.3 分区状态

    最后更新2021 07 17 No Active 分区处于非活动状态 在此状态 分区仅存在Profile的定义 可以有多个Profile定义 但都没有激活 而不占据任何系统资源 SMS服务模式状态 分区启动经过自检后将会根据Profile的
  • 香港爱情电影二十四经

    香港爱情电影二十四经之第一经 寻找 飞一般爱情小说 叶锦鸿1997 我们不是在寻找 我们只是在给邂逅一个机会 叶锦鸿的这部电影清新温暖 恬淡动人 一幅如流水般的爱情图画 三个青年相约一块寻找一个女孩 然后确定爱情的归属 谁都知道 这不是爱情
  • Vue路由基础部分,Vue路由基础知识

    Vue路由基础部分 Vue路由基础知识 1 介绍 2 基础 1 起步 2 动态路由匹配 3 嵌套路由 4 编程式的导航 5 命名路由 6 命名视图 7 重定向和别名 1 介绍 Vue Router 是 Vue js 官方的路由管理器 它由V
  • Chrome浏览器不能同步书签的解决方法

    问题现象 在Chrome浏览器登陆同步书签的时候 提示报错 解决方法 需要 使用Chrome访问助手 操作步骤 下载Chrome访问助手 https www ggfwzs com 下载后进行解压 然后依次点击如下操作 把刚才解压的 crx直
  • Microsoft Office 2007的安装

    哈喽 大家好 今天一起学习的是office2007的安装 有兴趣的小伙伴也可以来一起试试手 一 测试演示参数 演示操作系统 Windows 7 不建议win10及以上操作系统使用 系统类型 64位 演示版本 cn office ultima
  • opencv进阶学习笔记12:轮廓发现和对象测量

    基础版笔记目录 python3 opencv学习笔记汇总目录 适合基础入门学习 进阶版笔记目录链接 python opencv进阶版学习笔记目录 适合有一定基础 轮廓发现 1轮廓发现介绍 基础版讲解 opencv学习笔记20 图像轮廓 2轮
  • 控制符号的可见性

    在普通的C语言中 如果您希望将函数或者变量限制在当前文件中 需要对其使用static关键字 然而 在一个包含很多文件的共享库中 如果您希望某个符号可以被共享库内部的几个文件访问 而又不提供给外部 则对符号进行隐藏处理就会比较困难 大多数的连
  • 网络重连封装

    网络重连 部分情况会遇到业务接口失败 但我们又不希望让用户去退出应用重启 这时候我们可以在网络层设置一个重连机制 写这个的时候我想到了当时实现token无痛刷新时没有去解决的一个痛点 但我去刷新token的时候如果是获取令牌的接口报错那程序
  • python读取20万数据Excel文件+拆分数据

    python读取20万数据Excel文件 使用普通的pandas读取Excel 再结合xlrd读取 可能会读取的Excel数据会不全 最多只能读取到65535 行的数 如果读取超大excel数据时就读取不了 解决读取数据不全python代码
  • Unity——电脑游戏键盘与鼠标的输入

    代码如下 对键盘的输入需要逐帧读取 因此放入Update void Update 鼠标的点击 按下鼠标 0左键 1右键 2滚轮 if input GetMouseButtonDown 0 Debug log 按下了鼠标左键 持续按下鼠标 i
  • 计算机操作系统-运行机制、体系结构

    操作系统的运行机制 指令与代码的区别 例如C语言中的代码经过编译器翻译 得到机器语言指令 其中高级语言的代码翻译的结果可能会对应多条指令 简单来说 指令就是处理器CPU能识别 执行的最基本的命令 两种指令 有的指令执行起来不会对操作系统或者
  • 使用大华SDK遇到 “CANNOT RESOLVE COM.DAHUA.NETSDK:DAHUA-NETSDK-JNI:1.0.0”的解决方法

    因为maven官方仓库没有 所以需要自行手动安装 maven请添加环境变量 不添加的话就去maven的bin下面执行 然后在控制台执行如下指令 Dfile的内容是INetSDK jar在你自己本地计算机的位置 原文链接 解决 需要手工下载j
  • 【算法】归并排序

    include
  • 【Cocos2d-X开发学习笔记】开发工具之Tiled地图编辑器的使用

    Cocos2D X支持Tiled地图编辑器生成的地图数据文件 Tiled地图编辑器是一个以普遍使用为目标的地图编辑 器 它使用简单并且可以轻松地在不同的引擎中使用 目前最新版本使用Qt框架进行开发 之前也有Java版本 目的 就是可以使编辑
  • 柯美打印机服务器显示代码09,柯美数码复印机故障代码及维修模式【最新】.docx...

    美能达故障代码故障名称检测时机 柯美数码复印机维修代码 维修模式 C0000主马达故障 主马达开始运转1秒钟后的任何时候 主马达 M1 锁定信号会连续维持1秒钟的高电平 HIGH C0044ADF冷却风扇故障 仅在安装选购件AFR 19时
  • 企业级DevOps容器云平台流水线综合解决方案详解(一)

    一 Jenkins Pipeline 语法 1 Jenkins Pipeline 简介 Jenkins pipeline 流水线 是一套运行于 jenkins 上的工作流框架 将原本独立运行于单个或者 多个节点的任务连接起来 实现单个任务难
  • 功能测试基础之接口测试

    功能测试基础之接口测试 文章目录 功能测试基础之接口测试 定义 测试目的 接口测试分类 接口测试的方法 实例分析 定义 软件系统本身有不同模块组成 模块与模块之间存在着分工协作及信息交互 这种模块与模块之间的交互通道我们称之为软件系统的内部
  • RPC-client异步回调原理

    RPC client异步回调原理 见下面的设计图 所谓异步回调 在得到结果之前 不会处于阻塞状态 理论上任何时间都没有任何线程处于阻塞状态 因此异步回调的模型 理论上只需要很少的工作线程与服务连接就能够达到很高的吞吐量 上图中左边的框框 是
  • 人脸表情识别概述(一)

    一 人脸表情识别技术目前主要的应用领域包括人机交互 安全 机器人制造 医疗 通信和汽车领域等 二 1971年 心理学家Ekman与Friesen的研究最早提出人类有六种主要情感 每种情感以唯一的表情来反映人的一种独特的心理活动 这六种情感被