微表情识别

表情识别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。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021年职称计算机考试模块,2021高级职称计算机考试需要考哪些模块?「建议收藏」

    2021年职称计算机考试模块,2021高级职称计算机考试需要考哪些模块?「建议收藏」对于大多数考生来说,备考高级职称计算机考试前前后后会遇到许多问题,比如:高级职称计算机考试一次性可以考几个科目?高级职称计算机考试几个模块?级职称是职称中最高级别,分正高级和副高级,是反映专业技术人员的技术水平、工作能力。就学术而言,它具有学衔的性质;就专业技术水平而言,它具有岗位的性质。专业技术人员拥有何种专业技术职称,表明他具有何种学术水平或从事何种工作岗位,象征着一定的身份。而想获得高级职称…

    2022年5月5日
    47
  • postman进行http接口测试

    postman进行http接口测试无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。HTTP的接口测试工具有很多,可以进行http请求的方式也有很多,但是可以直接拿来就用,而且功能还支持的不错的,我使用过的来讲,还是postman比较上手。优点:1、支持用例管理2、支持get、post、文件上…

    2022年5月10日
    41
  • 论坛提问艺术

    论坛提问艺术1明确自己所提的问题是什么,尽可能将问题描述清楚,可以适当加点图形之类的工具辅助一下。2明确问题的类型,然后到正确的论坛提问3标题能够概括所提问题的主要意思4提问要文明礼貌5回答之后要表示感谢…

    2022年6月23日
    24
  • 战地5的引擎是寒霜3_战地1引擎

    战地5的引擎是寒霜3_战地1引擎之前看过了zXr0带来的两篇寒霜2引擎技术解析么?《战地3》寒霜2引擎渲染流程图文详解http://pc.07073.com/bf3/frostbite/14097.html战地3寒霜2引擎详解:物件光照效果技术特性http://pc.07073.com/bf3/frostbite/14099.html如果你不看完下面篇章领取最终福利可就太可惜了…

    2025年6月6日
    4
  • PID算法详解[通俗易懂]

    PID算法详解[通俗易懂]PID算法是一种具有预见性的控制算法,其核心思想是:1>.PID算法不但考虑控制对象的当前状态值(现在状态),而且还考虑控制对象过去一段时间的状态值(历史状态)和最近一段时间的状态值变化(预期),由这3方面共同决定当前的输出控制信号;2>.PID控制算法的运算结果是一个数,利用这个数来控制被控对象在多种工作状态(比如加热器的多种功率,阀门的多种开度等)工作,一般输出形式为PWM,基本上满足了按需输出控制信号,根据情况随时改变输出的目的。比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例

    2022年9月26日
    2
  • SCrollTOP scrollHeight

    SCrollTOP scrollHeightjQuery里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop、scrollLeft、scrollHeight。其中scrollHeight属性,互联网上几乎搜素不到关于它的应用技巧,而我正好需要用到它。   我们现在只探讨和垂直滚动有关的scrollTop、scrollHeight属性。   一、滚动条有关属性的正确理解: 

    2022年7月24日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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