资源简介

基于keras的人脸表情识别。包含训练、图片识别、摄像头视频流识别的py文件,数据集和已经训练好的模型。下载即可运行使用。

资源截图

代码片段和文件信息

#-*- coding: utf-8 -*-

import cv2
import sys
import gc
import json
import numpy as np
from keras.models import Sequential
from keras.models import model_from_json
from keras.models import load_model
model_path=‘./model‘
img_size=48
# emo_labels = [‘angry‘‘fear‘‘happy‘‘sad‘‘surprise‘‘neutral‘]
#load json and create model arch
emo_labels = [‘angry‘ ‘disgust:‘ ‘fear‘ ‘happy‘ ‘sad‘ ‘surprise‘ ‘neutral‘]
num_class = len(emo_labels)
#加载模型结构
json_file=open(model_path+‘/model_json.json‘)    #加载模型结构文件
loaded_model_json = json_file.read()
json_file.close()
model = model_from_json(loaded_model_json)      #结构文件转化为模型
#加载权重
model.load_weights(model_path+‘/model_weight.h5‘)#h5文件保存模型的权重数据

if __name__ == ‘__main__‘:
    if len(sys.argv) != 1:
        print(“Usage:%s camera_id\r\n“ % (sys.argv[0]))
        sys.exit(0)
              
    #框住人脸的矩形边框颜色       
    color = (0 0 2555)

    #捕获指定摄像头的实时视频流
    cap = cv2.VideoCapture(0)
    
    #人脸识别分类器本地存储路径
    cascade_path = “haarcascade_frontalface_alt.xml“
    
    #循环检测识别人脸
    while True:
        _ frame = cap.read()   #读取一帧视频
        
        #图像灰化,降低计算复杂度(当然,用于训练的数据集也是灰的)
        frame_gray = cv2.cvtColor(frame cv2.COLOR_BGR2GRAY)
        
        #使用人脸识别分类器,读入分类器
        cascade = cv2.CascadeClassifier(cascade_path)                

        #利用分类器识别出哪个区域为人脸,返回检测到的人脸序列(矩形框四个参数)
        faceRects = cascade.detectMultiScale(frame_gray scaleFactor = 1.1
                                    minNeighbors = 1 minSize = (120 120))        
        if len(faceRects) > 0:                 
            for faceRect in faceRects: 
                x y w h = faceRect   #人脸矩形框的左上角坐标、宽、高
                images=[]
                rs_sum=np.array([0.0]*num_class)    #([0 0 0 0 0 0 0])
                #截取脸部图像提交给模型识别这是谁
                image = frame_gray[y: y + h x: x + w ]     #注意这里x、y的先后顺序
                image=cv2.resize(image(img_sizeimg_size)) #将人脸缩放成网络所对应的输入图片大小
                image=image*(1./255)                        #归一化
                images.append(image)
                images.append(cv2.flip(image1))    #水平翻转
                images.append(cv2.resize(image[2:45:](img_sizeimg_size)))  #裁切
                for img in images:
                    image=img.reshape(1img_sizeimg_size1)
                    #预测出每个类别的概率值
                    list_of_list = model.predict_proba(imagebatch_size=32verbose=1)
                    result = [prob for lst in list_of_list for prob in lst]
                    rs_sum+=np.array(result)
                print(rs_sum)
                label=np.argmax(rs_sum)
                emo = emo_labels[label]
                print (‘Emotion : ‘emo)
                cv2.rectangle(frame (x - 10 y - 10) (x + w + 10 y + h + 10) color thickness = 2)
                font = cv2.FONT_HERSHEY_SIMPLEX
                #文字提示是谁
                cv2.putText(frame‘%s‘ % emo(x + 30 y + 30) font 1 (2

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3845  2019-07-07 16:02  MyOwnRetro\emotion_classifier_camera.py

     文件       3714  2019-07-07 17:11  MyOwnRetro\emotion_classifier_sample.py

     文件        933  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00000.jpg

     文件        947  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00005.jpg

     文件        963  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00008.jpg

     文件        802  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00014.jpg

     文件        837  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00022.jpg

     文件        658  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00033.jpg

     文件        936  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00037.jpg

     文件        962  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00038.jpg

     文件        811  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00054.jpg

     文件        990  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00064.jpg

     文件        966  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00065.jpg

     文件        869  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00069.jpg

     文件       1040  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00075.jpg

     文件       1175  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00077.jpg

     文件        932  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00110.jpg

     文件        827  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00112.jpg

     文件        861  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00113.jpg

     文件        965  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00119.jpg

     文件        866  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00125.jpg

     文件        979  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00133.jpg

     文件        914  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00135.jpg

     文件        862  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00139.jpg

     文件        844  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00144.jpg

     文件        784  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00156.jpg

     文件        809  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00157.jpg

     文件       1014  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00166.jpg

     文件        930  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00167.jpg

     文件        778  2019-07-06 13:42  MyOwnRetro\fer2013\test\0\00172.jpg

............此处省略35907个文件信息

评论

共有 条评论