本次讲述的表情分类是识别的分析流程分为:

  • 1、加载pre-model网络与权重;
  • 2、利用opencv的函数进行简单的人脸检测;
  • 3、抠出人脸的图并灰化;
  • 4、表情分类器检测

.


一、表情数据集

主要来源于kaggle比赛,下载地址。 
有七种表情类别: (0=Angry, 1=Disgust, 2=Fear, 3=Happy, 4=Sad, 5=Surprise, 6=Neutral). 
数据是48x48 灰度图,格式比较奇葩。 
第一列是情绪分类,第二列是图像的numpy,第三列是train or test。 

.


二、opencv的人脸识别

参考《opencv+Recorder︱OpenCV 中使用 Haar 分类器进行面部检测》 
理论略过,直接来看重点: 
(1)加载人脸检测器,haarcascade_frontalface_default.xml; 
(2)图片加载并灰化,cvtColor,可参考: opencv︱图像的色彩空間cvtColor(HSV、HSL、HSB 、BGR) 
(2)人脸探测,detectMultiScale.

# (1)加载人脸检测器
cascPath = '/.../haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascPath)# (2)图片加载并灰化
jpg_file = '/home/ubuntu/keras/image/8c80abb4gw1f3b5hxd3aaj20jg0cx411.jpg'
img_gray = cv2.imread(jpg_file)
img_gray = cv2.cvtColor(img_gray, cv2.COLOR_BGR2GRAY)# 人脸探测
faces = faceCascade.detectMultiScale(img_gray,scaleFactor=1.1,minNeighbors=1,# minNeighbors=5比较难检测minSize=(30, 30),flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

其中minNeighbors设置小一些,容易检测出来。这个检测器还是有点粗糙。 
.


三、表情分类与识别

本节源自github的mememoji。 
网络结构: 

opencv中的人脸检测的pre-model文件(haarcascade_frontalface_default.xml)和表情识别pre-model文件(model.h5)都在作者的github下载。

是利用Keras实现的。直接来看完整的代码:

import cv2
import sys
import json
import time
import numpy as np
from keras.models import model_from_jsonemotion_labels = ['angry', 'fear', 'happy', 'sad', 'surprise', 'neutral']# load json and create model arch
json_file = open('/.../model.json','r')
loaded_model_json = json_file.read()
json_file.close()
model = model_from_json(loaded_model_json)# load weights into new model
model.load_weights('/.../model.h5')def predict_emotion(face_image_gray): # a single cropped faceresized_img = cv2.resize(face_image_gray, (48,48), interpolation = cv2.INTER_AREA)# cv2.imwrite(str(index)+'.png', resized_img)image = resized_img.reshape(1, 1, 48, 48)list_of_list = model.predict(image, batch_size=1, verbose=1)angry, fear, happy, sad, surprise, neutral = [prob for lst in list_of_list for prob in lst]return [angry, fear, happy, sad, surprise, neutral]# -------------------直接预测-----------------------
img_gray = cv2.imread('/.../real-time_emotion_analyzer-master/meme_faces/angry-angry.png')
img_gray = cv2.cvtColor(img_gray, cv2.COLOR_BGR2GRAY)
angry, fear, happy, sad, surprise, neutral = predict_emotion(img_gray)# -------------------人脸预测-----------------------
# 加载检测器
cascPath = '/.../real-time_emotion_analyzer-master/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascPath)# 图像灰化
jpg_file = '/.../001.jpg'
img_gray = cv2.imread(jpg_file)
img_gray = cv2.cvtColor(img_gray, cv2.COLOR_BGR2GRAY)# 人脸检测
faces = faceCascade.detectMultiScale(img_gray,scaleFactor=1.1,minNeighbors=1,# minNeighbors=5比较难检测minSize=(30, 30),flags=cv2.cv.CV_HAAR_SCALE_IMAGE)# 表情画框
for (x, y, w, h) in faces:face_image_gray = img_gray[y:y+h, x:x+w]cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)angry, fear, happy, sad, surprise, neutral = predict_emotion(face_image_gray)from:https://blog.csdn.net/sinat_26917383/article/details/72885715

人脸表情分类与识别:opencv人脸检测+Keras情绪分类相关推荐

  1. keras系列︱人脸表情分类与识别:opencv人脸检测+Keras情绪分类(四)

    人脸识别热门,表情识别更加.但是表情识别很难,因为人脸的微表情很多,本节介绍一种比较粗线条的表情分类与识别的办法. Keras系列: 1.keras系列︱Sequential与Model模型.kera ...

  2. 基于Dlib库的人脸表情分析与识别——Python

    本项目主要由包含我在内的四名成员共同完成:孙明喆.吴震.张晨.张明 项目介绍,及可执行文件.模型文件.详细报告均在GitHub中可以查看: GitHub 关于项目的详细介绍,可能过些日子在复习时候会有 ...

  3. python毕业设计 深度学习卫星遥感图像检测与识别 opencv 目标检测

    文章目录 0 前言 1 课题背景 2 实现效果 3 Yolov5算法 4 数据处理和训练 0 前言

  4. Python基于OpenCV的人脸表情识别系统[源码&部署教程]

    1.项目背景 人脸表情识别是模式识别中一个非常重要却十分复杂的课题.首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾.然后对近期人脸表情识别的方法进行了分类综述.通过对各种识别方法的分析与 ...

  5. 【人脸表情识别】不得不读的重要论文推荐(2019-2020篇)

    上一篇专栏文章我们介绍了2015-2018年基于图片的人脸表情识别代表性方法.本文将延续上一篇的内容,继续盘点2019-2020基于图片的人脸表情识别的代表性工作. 作者&编辑 | Menpi ...

  6. android人脸情绪识别器,基于Android平台的人脸表情识别系统的设计与实现

    摘要: 随着目前移动设备硬件技术的不断发展,其性能与PC的差距越来越小,这使得在嵌入式平台上进行图像处理成为了可能.目前使用最广泛的是基于Android系统的嵌入式平台,与之相关的图像类应用需求也渐渐 ...

  7. android 表情识别,基于Android平台的人脸表情识别系统的设计与实现

    摘要: 随着目前移动设备硬件技术的不断发展,其性能与PC的差距越来越小,这使得在嵌入式平台上进行图像处理成为了可能.目前使用最广泛的是基于Android系统的嵌入式平台,与之相关的图像类应用需求也渐渐 ...

  8. 【技术综述】人脸表情识别研究

    李振东 北京邮电大学硕士在读,计算机视觉方向 言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | 李振东/言有三 编辑 | 言有三 随着机器学习和深度神经网络两个领域的迅速发 ...

  9. 腾讯大佬总结的人脸表情识别技术

    李振东 北京邮电大学硕士在读,计算机视觉方向 言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | 李振东/言有三 编辑 | 言有三 随着机器学习和深度神经网络两个领域的迅速发 ...

最新文章

  1. 7.Odoo产品分析 (二) – 商业板块(3) –CRM(1)
  2. Linux 学习日记 3: 环境变量与文件查找
  3. 多维数组(C# 编程指南)
  4. 比较两个时间字符串的大小
  5. 使用摄像头录像后,需要删除系统缓存数据!
  6. 使用XmlTextReader 读取XML
  7. 51单片机实现4位数以内的加减法
  8. kohana3 数据库模块配置
  9. 利用自定义web-font实现数据防采集
  10. 到底是无线最难?还是核心网最难?
  11. cnn神经网络可以用于数据拟合吗_使用Keras搭建卷积神经网络进行手写识别的入门(包含代码解读)...
  12. PHP no input file specified 三种解决方法
  13. java中限制多人登录的_Spring Boot + Spring Security 防止用户在多处同时登录(一个用户同时只能登录一次)及源码分析...
  14. php 内存设置无效,内存位置访问无效_php提示 内存位置访问无效 解决方法总结...
  15. 残差的正态性检验——概率图和QQ-plot图
  16. 中国园林设备行业市场供需与战略研究报告
  17. 2021-07-17
  18. u盘插在linux显示不了,U盘在Linux下显示不正常的解决方法
  19. Nape的回调系统 nape.callbacks
  20. 【机器学习】EM算法

热门文章

  1. 在window10上安装miniconda
  2. springmvc03 接收请求参数
  3. python爬虫数据存储文本_Python爬虫开发系列之五》数据存储为TXT、JSON格式
  4. matlab中用于离散系统求解的命令,MATLAB求解规划问题(线性规划, 整数规划, 非线性规划)...
  5. 配置php错误导入文件,php 导入文件(逻辑处理)
  6. vue 引入外部less_Vue项目中引入外部文件的方法(css、js、less)
  7. python操作库_python操作数据库
  8. docker pull下载很慢_一文了解Docker容器技术的操作
  9. 网页为什么只加载了基本html,关于HTML的那些事
  10. python如何收集数据库_利用Python操作mysql数据库