深度学习实时表情识别

2023-11-12

背景

计算机动画代理和机器人为人机交互带来了新的维度,这使得计算机如何在日常活动中影响我们的社交生活变得至关重要。 面对面的交流是一个以毫秒级的时间尺度运行的实时过程。 这个时间尺度的不确定性是相当大的,这使得人类和机器有必要依赖感官丰富的感知原语,而不是缓慢的符号推理过程。 在这个项目中,我们展示了七种最基本的人类表情的实时面部表情识别:愤怒、厌恶、恐惧、快乐、中立、悲伤、惊讶。

现实问题

从七种基本的人类表情中对图像中的面部表情进行分类。

该模型可用于预测静态图像和实时视频的表达。 但是,在这两种情况下,我们都必须为模型提供图像。 在实时视频的情况下,应该在任何时间帧拍摄图像并将其提供给模型以进行表情预测。 系统使用 HAAR 级联自动检测人脸,然后对其进行裁剪并将图像调整为特定大小,并将其提供给模型进行预测。 该模型将生成对应于七个表达式的七个概率值。 对应表达式的最高概率值将是该图像的预测表达式。

然而,我们在这里的目标是预测人类的表情,但我们已经在人类和动画图像上训练了我们的模型。 因为,我们只有大约 1500 张人体图像,这对于制作一个好的模型来说非常少,所以我们拍摄了大约 9000 张动画图像,并利用这些动画图像来训练模型,最终对人体图像进行表情预测。

为了更好地预测,我们决定将每张图像的大小保持为 350*350。

目标和约束

目标

我们的目标是尽可能快速准确地实时预测人脸的表情。

约束

  1. 延迟:给定图像,系统应该能够立即预测表达并传输结果。因此,存在低延迟要求。
  2. 可解释性:可解释性对于静止图像很重要,但不是实时的。对于静止图像,可以给出预测表达的概率。
  3. 准确性:我们的目标是尽可能准确地预测图像中人脸的表情。测试精度越高,我们的模型在现实世界中的表现就越好。

性能指标

这是一个具有 7 个不同类别的多类别分类问题,因此我们考虑了三个性能指标:

  1. 多类对数损失:我们最终使用了带有交叉熵层的深度学习模型,其中包含七个 softmax 单元,因此我们的目标是减少多类对数损失/交叉熵损失。
  2. 准确度:这告诉我们我们的模型在预测表达式方面的准确度。
  3. 混淆度量:由于我们的问题是多类分类,所以混淆度量将帮助我们知道哪些类比其他类更具优势,或者模型更偏向哪个类。 这让我们对模型的预测结果有了清晰的了解。

数据源

数据类型

我们总共有 10596 张图片。其中1496幅是人体图像,9100幅是动画图像。因此,我们有两种类型的图像。一种是人像,另一种是动画图像。

一些人类图像的例子:

一些动画图像的例子:

我们使用了几乎所有在普通 ML/DL 问题中使用的库,如 pandas、numpy、matplotlib、sklearn 等。但在这里我想强调两个重要的库。

图像初始预处理概述

  1. 我们从一开始就将人和动画图像分开,并将它们存储在七个不同的文件夹中,即:愤怒、厌恶、恐惧、快乐、中立、悲伤、惊喜。
  2. 请记住,每个表达式都有两个文件夹。一种用于人类,另一种用于动画。总共有 14 个文件夹。
  3. 我们为每个表达式制作了单独的数据框。因此,总共将有 14 个数据帧。 7 个数据帧对应于人类图像的 7 个表达式。同样,7个数据帧对应到动画图像的七个表达式。
  4. 然后我们结合了人类的所有数据帧。总共有1496张人体图像。在此之后,我们组合了动画图像的所有数据帧。共有 9100 张动画图像。
  5. 所以,现在我们有两个数据帧,一个用于人类图像,另一个用于动画图像。

训练/测试/分割

对于人类和动画图像,我们已经拆分了我们的数据,使得所有三个数据(即train、CV 和 test)都应该得到均匀分布的类标签图像。

人体图像的分布如下:

动画图像的分布如下:

图像的最终处理

结合人类和动画的训练数据

从 VGG-16 模型创建瓶颈特征(转移学习)

建模和训练

测试结果

测试真实图片

源代码

详情参阅 - 亚图跨际

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

深度学习实时表情识别 的相关文章

  • 几分钟带你认识vuex的五个核心属性

    目录 一 Vuex是什么 二 什么数据可以储存在vuex中呢 三 对于使用Vuex的理解是什么 四 vuex由五部分组成 五种状态 五种属性 五 安装配置 六 详解五种状态 1 state 存放公共数据 2 getters 计算属性 对st

随机推荐

  • 编程计算器-表达式求值(浮点数、标识符的实现)-顺序表链表实现-同维度向量运算-C语言

    include
  • Python爬虫爬取LOL所有英雄皮肤

    import requests import os import jsonpath from urllib request import urlretrieve 获取ID def get id url https game gtimg cn
  • Android开发中关于“invalid symbol”的错误

    Android开发中 有时会提示关于 invalid symbol 这个的错误 比如 error invalid symbol switch 代码如下
  • 01-12306-抓取验证码

    utf 8 import requests from bs4 import BeautifulSoup import time from PIL import Image from io import BytesIO def getIPPo
  • linux gdb调试动态库(so)的方法

    原文地址 http www gonwan com tag gdb 在本例中使用了libcurl so 4库 step1 编译libcurl so 4的可调试版本 sudo apt get source libcurl3 dbg cd cur
  • js数组reduce方法的详解

    js数组reduce方法的详解 一起来瞅瞅reduce到底是怎么个事 看到这相信已经明白了reduce的参数以及作用 下面使用reduce来解决一些问题吧 1 使用reduce进行数组求和 2 看注释需求 题目有点长 一起来瞅瞅reduce
  • VS2017下的QT框架之QModbus配置

    在QT Creater下实现Modbus通讯 需要在QT pro文件中添加serialbus模块 QT core gui sql serialbus 但是 在vs环境下没有pro文件 可能有 没找到 如何添加呢 直接 include会报红
  • Python基础-48-文本处理(逗号分隔值CSV)

    前言 python自带模块csv可以将数据以csv格式输出到文件 也可以将csv数据读回 列表 元组数据写入和读取 代码部分 coding utf 8 import csv data也可以为列表 data 1 suner001 b12345
  • Qt布局管理器

    布局管理器 利用布局管理器做出如下界面效果 标签与输入框设置伙伴关系 新建桌面应用程序 项目名TestLayout 基类QWidget 类名Widget 不勾选创建界面 include widget h include
  • ubuntu16.04.4 + cuda + cudnn + 环境变量(path)

    仅仅是总结 网上教程很多 勿喷 谢谢 时间2018年7月13日 环境 ubuntu16 04 4 注意 目前ubuntu上CUDA安装只支持该版本 64位 显卡英伟达720M 没错 很古老吧 今天一看 发现这个写的太烂了 传送门 一位大哥写
  • golang-gvm

    https mp weixin qq com s SEPP56sr16bep4C S0TLgA 详细介绍 https mp weixin qq com s biz MzAxMTA4Njc0OQ mid 2651438277 idx 4 sn
  • Android获取IMEI和MEID

    在破解微信数据库时 需要获取手机的DeviceId 但是有时会出现打不开的情况 报出file is not a database while compiling select count from sqlite master的异常 这时发现
  • linux怎么关闭超线程模式,Linux动态启用/禁用超线程技术的方法详解

    前言 intel的超线程技术能让一个物理核上并行执行两个线程 大多数情况下能提高硬件资源的利用率 增强系统性能 对于cpu密集型的数值程序 超线程技术可能会导致整体程序性能下降 鉴于此 执行OpenMP或者MPI数值程序时建议关闭超线程技术
  • “基于机器学习算法的推荐系统” 在软件静态分析领域的应用方法

    一 软件静态分析背景 软件静态分析的相当部分的内容就是发现代码中的缺陷 缺陷的形式往往五花八门 各式各样 每当发现一个缺陷 测试人员首先会感到高兴 终于抓到了一条 虫 可继而很可能会感到心虚 因为 在现有技术条件下 一条软件行业的规律是仍然
  • C语言 分割bin文件程序

    file main c author Earlybird version V1 0 0 date 30 May 2022 brief 分割bin文件为指定大小文件 attention Copyright c 2022 INESA Group
  • c++模板编程-模板类的特例化和部分特化

    类模板可以对某一个模板参数进行特化 这使得我们可以对某一个类型进行优化 你最好真是在优化 或者是针对某一个进行类型实例化后的特殊处理 全特化 如我们有以下一个简单的类模板 它提供两个公开函数 calculate计算两个T类型并返回 prin
  • JS对字符串的操作

    走进前端行业已有两年之久 对于字符串的操作也是家常便饭了 但也总在查查找找 如今对于我这个强迫症患者开始爆发了 对字符串的操作做以下整理 废话不多说直接走起来 1 字符串转换 字符串转换是最基础的要求和工作 你可以将任何类型的数据都转换为字
  • 爬虫工具之Beautiful Soup4

    Beautiful Soup4 BS4 是Python的一个第三方库 用来从HTML和XML中提取数据 安装 使用Beautiful Soup4提取HTML内容 一般要经过以下两步 1 处理源代码生成BeautifulSoup对象 这里的
  • 位运算的实践

    一 只出现一次的数字 III 1 1题目 给定一个整数数组 nums 其中恰好有两个元素只出现一次 其余所有元素均出现两次 找出只出现一次的那两个元素 你可以按 任意顺序 返回答案 进阶 你的算法应该具有线性时间复杂度 你能否仅使用常数空间
  • 深度学习实时表情识别

    背景 计算机动画代理和机器人为人机交互带来了新的维度 这使得计算机如何在日常活动中影响我们的社交生活变得至关重要 面对面的交流是一个以毫秒级的时间尺度运行的实时过程 这个时间尺度的不确定性是相当大的 这使得人类和机器有必要依赖感官丰富的感知