keras实战︱人脸表情分类与识别:人脸检测+情绪分类
来源:互联网 发布:淘宝网店怎么激活 编辑:程序博客网 时间:2024/06/10 19:42
向AI转型的程序员都关注了这个号???
大数据挖掘DT数据分析 公众号: datadw
脸识别热门,表情识别更加。但是表情识别很难,因为人脸的微表情很多,本节介绍一种比较粗线条的表情分类与识别的办法。
本次讲述的表情分类是识别的分析流程分为:
1、加载pre-model网络与权重;
2、利用opencv的函数进行简单的人脸检测;
3、抠出人脸的图并灰化;
4、表情分类器检测
一、表情数据集
主要来源于kaggle比赛,下载地址。
在公众号 datadw 里 回复 keras 即可获取。
有七种表情类别: (0=Angry, 1=Disgust, 2=Fear, 3=Happy, 4=Sad, 5=Surprise, 6=Neutral).
数据是48x48 灰度图,格式比较奇葩。
第一列是情绪分类,第二列是图像的numpy,第三列是train or test。
二、opencv的人脸识别
参考《opencv+Recorder︱OpenCV 中使用 Haar 分类器进行面部检测》
http://blog.csdn.net/sinat_26917383/article/details/69831495
理论略过,直接来看重点:
(1)加载人脸检测器,haarcascade_frontalface_default.xml;
(2)图片加载并灰化,cvtColor,可参考: opencv︱图像的色彩空間cvtColor(HSV、HSL、HSB 、BGR)
http://blog.csdn.net/sinat_26917383/article/details/70860910
(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
)
其中minNeighbors设置小一些,容易检测出来。这个检测器还是有点粗糙。
三、表情分类与识别
本节源自github的mememoji。
https://github.com/JostineHo/mememoji
网络结构:
opencv中的人脸检测的pre-model文件(haarcascade_frontalface_default.xml)和表情识别pre-model文件(model.h5)都在作者的github下载。
作者的github地址
在公众号 datadw 里 回复 keras 即可获取。
是利用Keras实现的。直接来看完整的代码:
import cv2
import sys
import json
import time
import numpy as np
from keras.models import model_from_json
emotion_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 face
resized_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)
via : http://blog.csdn.net/sinat_26917383/article/details/72885715
人工智能大数据与深度学习
搜索添加微信公众号:weic2c
长按图片,识别二维码,点关注
大数据挖掘DT数据分析
搜索添加微信公众号:datadw
教你机器学习,教你数据挖掘
长按图片,识别二维码,点关注
- keras实战︱人脸表情分类与识别:人脸检测+情绪分类
- keras系列︱人脸表情分类与识别:opencv人脸检测+Keras情绪分类(四)
- keras系列︱人脸表情分类与识别:opencv人脸检测+Keras情绪分类(四)
- 目标检测与分类学习之路----opencv人脸检测识别(zero)
- 人脸实时情绪与性别识别
- 人脸检测算法分类
- 目标分类与检测实战
- 人脸表情识别
- 人脸表情识别笔记(一)人脸检测
- keras实现Unet进行字符定位与识别分类
- 人脸识别之人脸检测(六)--haar分类器代码理解
- 人脸识别之人脸检测(十)--强分类器源码分析
- 计算机视觉-人脸识别-浅析人脸检测之Haar分类器方法-转
- (人脸识别2-2)——利用opencv内置分类器检测人脸
- 人脸识别系统,分类学习
- 人脸识别Haar分类器
- 人脸检测之Haar分类器
- 人脸检测-Haar分类器方法
- 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。
- Ubuntu安装Pycharm的两种方式
- linux软件包合集
- 漫谈16S的前世今生
- 对象的构造顺序
- keras实战︱人脸表情分类与识别:人脸检测+情绪分类
- EM算法在高斯混合模型中的应用
- 独家 | 预防自杀,大数据也在致力于挽救生命
- Gartner数据库报告解读及数据库技术发展方向预测
- codeforces 158B Taxi
- [leetcode]第15周作业
- 【二分笔记】[poj 2456]Aggressive cows
- seo团队构建以及分工的相应说明
- Search a 2D Matrix II