微表情识别

表情识别2019.12更新了仓库依赖。简介使用卷积神经网络构建整个系统,在尝试了Gabor、LBP等传统人脸特征提取方式基础上,深度模型效果显著。在FER2013、JAFFE和CK+三个表情识别数据集上进行模型评估。环境部署基于Python3和Keras2(TensorFlow后端),具体依赖安装如下(推荐使用conda或者venv虚拟环境)gitclonehttp…

大家好,又见面了,我是你们的朋友全栈君。

表情识别

2019.12更新了仓库依赖。

简介

使用卷积神经网络构建整个系统,在尝试了Gabor、LBP等传统人脸特征提取方式基础上,深度模型效果显著。在FER2013、JAFFE和CK+三个表情识别数据集上进行模型评估。

环境部署

基于Python3和Keras2(TensorFlow后端),具体依赖安装如下(推荐使用conda或者venv虚拟环境)

  • git clone https://github.com/luanshiyinyang/ExpressionRecognition.git
  • cd ExpressionRecognition
  • pip install -r requirements.txt

数据准备

数据集和预训练模型均已经上传到百度网盘,链接给出,提取密码为2pmd。

项目说明

  1. 传统方法
    • 数据预处理
      • 图片降噪
      • 人脸检测
        • HAAR分类器检测(opencv)
    • 特征工程
      • 人脸特征提取
        • LBP
        • Gabor
      • 分类器
        • SVM
  2. 深度方法
    • 数据预处理
      • 人脸检测
        • HAAR分类器
        • MTCNN(效果更好)
    • 卷积神经网络
      • 用于特征提取+分类

网络设计

使用经典的卷积神经网络,模型的构建主要参考2018年CVPR几篇论文以及谷歌的Going Deeper设计如下网络结构,输入层后加入(1,1)卷积层增加非线性表示且模型层次较浅,参数较少(大量参数集中在全连接层)。 

微表情识别

 微表情识别

模型训练

主要在FER2013、JAFFE、CK+上进行训练,JAFFE给出的是半身图因此做了人脸检测。最后在FER2013上Pub Test和Pri Test均达到67%左右准确率(该数据集爬虫采集存在标签错误、水印、动画图片等问题),JAFFE和CK+5折交叉验证均达到99%左右准确率(这两个数据集为实验室采集,较为准确标准)。

训练过程见train.ipynb文件 

微表情识别

模型应用

与传统方法相比,卷积神经网络表现更好,使用该模型构建识别系统,提供GUI界面和摄像头实时检测(摄像必须保证补光足够)。预测时对一张图片进行水平翻转、偏转15度、平移等增广得到多个概率分布,将这些概率分布加权求和得到最后的概率分布,此时概率最大的作为标签。

注意,GUI预测只显示最可能是人脸的那个表情,但是对所有检测到的人脸都会框定预测结果并在图片上标记,标记后的图片在results目录下

  • GUI界面
    • 运行scripts下的gui.py即可(图片来自百度,侵删。)
    • 效果图
      • 微表情识别
      • 微表情识别
  • 实时检测
    • 运行scripts下的recognition_camera.py即可
    • 效果图(图片来自百度,侵删。)
      • 演示不便

补充说明

具体项目代码、数据集、模型已经开源于我的Github,欢迎Star或者Fork。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127452.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • html完整网页实例简单_html简单网页代码解读

    html完整网页实例简单_html简单网页代码解读要完成一个网页的制作其实本质上是很简单的,本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,同样的也有js的动画效果,这个实例比较全面,有助于同学的学习。本实例仅供参考,其他行为自负。本实例分为四篇来观看。一共有一个HTML文件,三个css样式表,三个js,有16张图片。其中img里面的图片可以自行下载,或用本实例里面的图片。测试项目是建议大家用谷歌…

  • 解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?

    解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?写一个shell脚本(脚本名称:xsync,又称xsync命令):实现多个电脑或者虚拟机之间的文件同步?一·xsync命令与rsync命令之间关系介绍:(1)xsync命令来源于一个xsync的脚本,这个脚本不是Linux系统自带的,是程序员自己写的。(2)xsync脚本的底层,实质是调用Linux系统自带的rsync命令,来实现多个电脑之间的快速文件同步。(3)rsync命令可以直接使用:二·xsync命令作用:(1)使用xsync命令同步一个文件,会只将这个文件,同步到其他服务器的相同路径下面。(2)使

  • java stream流操作_java流式处理

    java stream流操作_java流式处理目录1、什么是流2、如何生成流3、流的操作类型3.1、中间操作3.2、终端操作4、流的使用4.1中间操作filter筛选distinct去重limit返回指定流个数skip跳过流中的元素map流映射flatMap流转换allMatch匹配所有元素anyMatch匹配其中一个noneMatch全部不匹配4.2终端操作count统计流中元素个数findFirst查找第一个findAny随机查找一个reduce将流中的元素组合min/max获取最小最大值sum/summingxxx

  • 基于php教师档案管理系统毕业设计

    基于php教师档案管理系统毕业设计获取项目源文件,联系Q:1415736481,可指导毕设,课设随着经济的发展和社会的进步,高校的现代化管理逐渐被人们所重视,利用计算机对高校的管理在各个领域中都有广阔的发展空间和前景。高校教师档案管理系统的设计与实现对高等院校的决策者和管理者来说至关重要,对教育系统来说更是不可缺少的。本系统采用PHP语言和MySQL数据库等技术,基于B/S模式,根据管理员、教务处管理员、教师三种不同的用户权限…

    2022年10月29日
  • arraylist扩容是创建新数组吗 java_arraylist扩容机制要怎么实现?arraylist怎么扩容…「建议收藏」

    arraylist扩容是创建新数组吗 java_arraylist扩容机制要怎么实现?arraylist怎么扩容…「建议收藏」ArrayList大家都知道了吧,这是一个动态数组。以java语言来说,数组是定长的,在被创建之后就不能被加长或缩短了,因此,了解它的扩容机制对使用它尤为重要。下面,我们就一起来看看它的扩容机制是怎么实现的吧。首先我们知道,ArrayList有着三种初始化方式:1)指定大小初始化publicArrayList(intinitialCapacity)2)传入一个Collection对象初始化,并…

  • @SpringBootTest Canot resolve symbol ‘SpringBootTest‘问题解决

    @SpringBootTest Canot resolve symbol ‘SpringBootTest‘问题解决最近在开发中总是遇到一些奇奇怪怪的问题,都是一些不大不小的事情,有一个开发同事反馈,在使用SpringBoot创建单元测试的时候,无论怎么弄都提示注解不存在,如下:一看提示了@SpringBootTestCanotresolvesymbol’SpringBootTest’,第一反应是不是没有添加依赖包,查看pom.xml,里面已经有添加的包了,<dependency><groupId>org.springframework.boot<.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号