基于深度学习的人脸面部表情识别系统【含Python源码+PyqtUI界面+原理详解】 您所在的位置:网站首页 表示着急的面部表情 基于深度学习的人脸面部表情识别系统【含Python源码+PyqtUI界面+原理详解】

基于深度学习的人脸面部表情识别系统【含Python源码+PyqtUI界面+原理详解】

2024-07-06 03:53| 来源: 网络整理| 查看: 265

功能演示

请添加图片描述

摘要:面部表情识别(Facial Expression Recognition)是一种通过技术手段识别人物图像中人脸面部表情的技术。本文详细介绍了其实现的技术原理,同时给出完整的Python实现代码、训练好的深度学习模型,并且通过PyQT实现了UI界面,更方便进行功能的展示。该表情识别系统可通过图片、视频、摄像头3种方式进行表情识别。本文提供了完整的Python代码和使用教程,给感兴趣的小伙伴参考学习,完整的代码资源文件获取方式见文末。

文章目录 功能演示前言一、软件核心功能介绍及效果演示二、人脸面部表情识别的基本原理1.基本原理 【获取方式】结束语

点击跳转至文末《完整相关文件及源码》获取

前言

人类的面部表情变化可以传达出其内心的情绪变化,表情是人类内心世界的真实写照。目前最常见的是将人类的表情定义为7中,分别是:悲伤、害怕、厌恶、高兴、生气、惊讶和中立。这也组成了现今的人脸表情识别研究中的七种基础面部表情。

由于不同的面部表情,可以反映出在不同情景下人们的情绪变化以及心理变化,因此面部表情的识别对于研究人类行为和心理活动,具有十分重要的研究意义和实际应用价值。现如今,面部表情识别主要使用计算机对人类面部表情进行分析识别,从而分析认得情绪变化,这在人机交互、社交网络分析、远程医疗以及刑侦监测等方面都具有重要意义。

博主根据深度学习网络模型,开发了一款简易的人脸面部表情识别系统,可以通过图片、视频、摄像头3种方式进行人脸面部表情识别,并且展示识别结果。可以识别悲伤、害怕、厌恶、高兴、生气、惊讶和中立这7种常见表情,感兴趣的小伙伴可以自己试试。

觉得不错的小伙伴,感谢点赞、关注加收藏!如果大家有任何建议或意见,欢迎在评论区留言交流!

界面如下图: 在这里插入图片描述

一、软件核心功能介绍及效果演示

(1)图片表情识别 点击打开图片按钮,选择需要识别的图片即可,操作演示如下: 在这里插入图片描述 (2)视频面部表情识别 点击打开视频按钮,选择需要识别的视频即可,操作演示如下: 在这里插入图片描述 (3)摄像头面部表情识别 点击打开摄像头按钮,即可开启摄像头,再次点击该按钮,会关闭摄像头,操作演示如下: 在这里插入图片描述

二、人脸面部表情识别的基本原理 1.基本原理

人脸面部表情识别通常可以划分为四个步骤:包括图像获取,人脸检测,面部图像预处理和表情分类。其中,人脸检测,面部图像预处理(脸部特征提取)和面部表情分类是面部表情识别的三个关键环节。面部表情识别的基本流程如下图所示: 在这里插入图片描述 我们首先可以通过比较常用的人脸检测库face_recognition,来实现人脸区域的检测,并画在图片上。核心代码如下:

image_path = 'TestImages/2.jpg' image = cv2.imread(image_path) face_locations = face_recognition.face_locations(image) num = len(face_locations) face = [] if num: for face_location in face_locations: top, right, bottom, left = face_location face.append(image[top:bottom, left:right]) image = cv2.rectangle(image,(left, top), (right, bottom), (50, 50, 250),3)

在这里插入图片描述 检测出的上述人脸区域后,然后将人脸区域提取出来,并转化为人脸检测模型需要的48*48大小。传入模型进行人脸表情检测,取概率最大的分类,并将表情识别结果画在图片上,核心代码如下:

# 加载训练好的DenseNet121深度学习模型 inputs = keras.Input(shape=(48, 48, 1), batch_size=64) x = create_dense_net(7, inputs, include_top=True, depth=121, nb_dense_block=4, growth_rate=16, nb_filter=-1, nb_layers_per_block=[6, 12, 32, 32], bottleneck=True, reduction=0.5, dropout_rate=0.2, activation='softmax') model = tf.keras.Model(inputs, x, name='densenet121') filepath = 'models/DenseNet121.h5' model.load_weights(filepath) # 进行人脸表情识别 image = cv2.imread(image_path) frame, faces, locations = face_detect(image) if faces is not None: for i in range(len(faces)): top, right, bottom, left = locations[i] face = cv2.cvtColor(faces[i], cv2.COLOR_BGR2GRAY) face = cv2.resize(face, (48, 48)) face = face / 255.0 num = np.argmax(model.predict(np.reshape(face, (-1, 48, 48, 1)))) label = labeldict[num] frame = cv2.putText(frame, label, (left, top-10), cv2.FONT_ITALIC, 0.8, (0, 0, 250), 2, cv2.LINE_AA) cv2.imshow('frame',frame) cv2.waitKey(0)

在这里插入图片描述 基于以上内容,博主基于python+ pyqt5开发了一个简洁界面的人脸面部表情识别系统。也就是第二部分介绍的内容。 关于该人脸面部表情识别系统的涉及到的完整源码、UI界面代码等相关文件,均已打包上传,感兴趣的小伙伴可以通过下载链接自行获取。

【获取方式】

关注下方名片G-Z-H:【阿旭算法与机器学习】,回复【表情识别】即可获取下载方式

本文涉及到的完整全部程序文件:包括python源码、UI文件等(见下图),获取方式见文末: 在这里插入图片描述

注意:该代码采用Pycharm+Python3.8开发,运行界面的主程序为MainProgram.py,图片测试脚本可运行imgTest.py,摄像头测试脚本可运行cameraTest.py。为确保程序顺利运行,请按照程序环境配置说明.txt配置软件运行所需环境。

关注下方名片GZH:【阿旭算法与机器学习】,回复【表情识别】即可获取下载方式

结束语

以上便是博主开发的关于人脸面部表情识别系统的全部内容,由于博主能力有限,难免有疏漏之处,希望小伙伴能批评指正 关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有