面部表情数据集合集——需要的点进来

1、基本介绍

 收集并整理了面部表情识别(Facial Emotion Recognition,FER)相关的数据集,包括FER2013数据集、FERPLUS数据集、RAF数据集、CK+数据集,MMAFEDB数据集,AffectNet数据集。

2、每个数据集介绍

2.1、FER2013(已预处理)

  Fer2013是由Goodfellow等人于2013年发布的广泛使用的表情识别数据集。它包含约35,000张灰度图像,这些图像来自互联网公开资源,涵盖了7种不同的表情类别(愤怒、厌恶、恐惧、快乐、悲伤、惊讶和中性)。Fer2013数据集的多样性和规模使其成为训练深度学习模型的理想选择。
在这里插入图片描述

2.2、FERPLUS(已预处理)

 FER+ 注释为标准的 Emotion FER 数据集提供了一组新的标签。在 FER+ 中,每张图片都有10个众包标签,这比原始的FER标签提供了更好的静态图像情感的真相。每个图像有10个标记,研究人员就可以估计每张脸的情绪概率分布。这允许构建产生统计分布或多标签输出的算法,而不是传统的单标签输出.
在这里插入图片描述

2.3、RAF

  RAF-DB人脸表情数据集是一个用于面部表情识别数据集。该数据集包含了丰富的训练和验证数据,适用于研究和开发人脸表情识别算法。
在这里插入图片描述

2.4、CK+

  CK+(Cohn-Kanade+)数据集是由Lucey等人于2010年发布的一个面部表情数据集。CK+数据集包含了593个视频序列,涵盖了8种不同的表情类别,包括愤怒、厌恶、恐惧、快乐、悲伤、惊讶、中性和轻蔑。CK+数据集具有较高的标注准确率,提供了动态表情信息。
在这里插入图片描述

2.5、AffectNet

  AffectNet 数据集:AffectNet是当前最大的面部表情数据集之一,包含约42万张标注了表情类别和面部活动单元(AU)信息的面部表情图像。每张图像都标注了表情类别和面部活动单元(AU)信息。AffectNet适合训练和评估深度学习模型,尤其是用于自然环境中的面部表情识别。

2.6、MMAFEDB

 一共包含128K张MMA面部表情图像数据集,MMAFEDB包含用于训练,验证和测试的数据划分,每个目录包含对应于七个面部表情类别的七个子目录,分别是angry-愤怒,disgust-厌恶,fear-恐惧,happy-快乐,neutral-中性,sad-悲伤,surprise-惊讶
在这里插入图片描述

3、获取方式

收集整理不易,获取方式请点击我

### 人脸姿态估计的技术原理 人脸姿态估计的核心目标是通过分析二维图像中的面部特征,推断出三维空间中头部的姿态方向。这一过程通常涉及多个关键技术环节,包括但不限于2D人脸关键检测、PnP问题求解以及欧拉角计算。 #### 1. 关键技术概述 - **2D人脸关键检测** 使用MTCNN或其他先进的人脸检测算法提取人脸上的关键位置[^1]。这些关键通常是眼睛中心、鼻尖、嘴角等具有显著几何特性的部位。对于MTCNN而言,其能够输出五个固定的关键:左眼、右眼、鼻尖、嘴的左端和右端[^2]。 - **PnP (Perspective-n-Point)** PnP问题是将已知的世界坐标系下的3D模型投影到相机成像平面上的一组2D的过程。通过解决该问题,可以获得描述摄像头相对于物体位姿的旋转变换和平移向量矩阵。OpenCV提供了多种方法用于高效求解此问题,例如基于迭代优化的方法或者直接解析法。 - **欧拉角表示** 头部姿态最终可以用三个独立的角度分量来表达——即pitch(上下移动)、yaw(左右转动)和roll(倾斜角度)。这三个维度分别代表绕着X轴、Y轴及Z轴发生的旋转操作[^3]。其中: - Pitch反映的是垂直方向的变化情况; - Yaw体现水平面内的摆动幅度; - Roll则衡量脸部是否存在侧倾现象。 #### 2. 实现流程详解 以下是利用上述理论框架构建一个人脸姿态估计系统的典型步骤: ##### 数据准备阶段 收并标注大量包含不同表情状态与光照条件变化的真实场景下拍摄的照片作为训练样本的一部分。每张图片都需要精确地标记好至少五处以上的重要标志物所在的具体像素坐标值。 ##### 特征定位模块设计 采用深度学习网络结构比如FAN(Face Alignment Network), HRNet(High Resolution Net)等预训练好的权重文件加载进来初始化我们的自定义版本, 并针对特定应用场景做微调处理以便更好地适应实际需求. ##### 姿态回归部分开发 借助于之前获取得到的标准参考系内各部件间的相对距离比例关系建立虚拟立体模型; 同时运用SVD分解技巧快速估算初始猜测值供后续精化调整使用直至满足收敛准则为止. ```python import cv2 import numpy as np def estimate_head_pose(image_path): # Load image and detect face landmarks using MTCNN or similar method. detector = mtcnn.MTCNN() img = cv2.imread(image_path) results = detector.detect_faces(img) if not results: print("No faces detected.") return None keypoints_2d = [] for key in ['left_eye', 'right_eye', 'nose', 'mouth_left', 'mouth_right']: x, y = results[0]['keypoints'][key] keypoints_2d.append([x, y]) object_points = np.array([ [-60., 75., -8.], # Left eye center [60., 75., -8.], # Right eye center [0., 0., 0.], # Nose tip [-45., -55., -90.], # Mouth corner left [45., -55., -90.] # Mouth corner right ], dtype=np.float64) camera_matrix = np.array([[focal_length, 0, cx], [0, focal_length, cy], [0, 0, 1]], dtype="double") dist_coeffs = np.zeros((4,1)) success, rotation_vector, translation_vector = cv2.solvePnP(object_points, np.array(keypoints_2d), camera_matrix, dist_coeffs, flags=cv2.SOLVEPNP_ITERATIVE) rmat, _ = cv2.Rodrigues(rotation_vector) angles = euler_angles_from_rotation_matrix(rmat) return {"pitch":angles[0],"yaw":angles[1],"roll":angles[2]} ``` #### 结果解释说明 执行完毕之后会返回一个字典对象里面包含了三种类型的数值用来量化当前时刻被摄主体所呈现出来的总体朝向状况: | 参数名 | 描述 | |--------|--------------------------| | pitch | 表示低头/抬头的程度 | | yaw | 显示左右摇头的动作强度 | | roll | 判断是否有侧面歪斜的情况发生 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸可落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值