人脸数据集的特征提取分为人工和深度学习技术两种提取方式,有关儿童脸部视频和照片,应该使用哪种方式来提取,如何裁剪,如何将其制作成为合格的含有训练集、验证集、测试集的情绪识别数据集。
该制作的合规注意事项有哪些?
1. 人工特征 vs 深度学习特征:你应该用哪种?
结论:你应该用深度学习方式提取特征。
原因:
- 儿童人脸与成人差异大(五官比例、皮肤纹理、表情幅度),人工特征(HOG、LBP、SIFT)表现很差
- 深度学习(如 ResNet、MobileNet、VGG、Transformer)能自动学习儿童面部特征
- 情绪识别(FER)目前 SOTA 方法全部基于深度学习
- 若你已有视频和照片,深度学习需要大量数据,正好匹配你的资源
如果你需要输出特征向量(比如用于聚类、分类、检索),可以:
- 先用深度学习模型(如 ResNet18)训练 FER 任务
- 然后去掉最后一层全连接层,用前面的特征作为 "深度特征"
2. 如何从视频 / 照片中裁剪儿童人脸
自动化代码运行分类出每个儿童的照片视频,人工手动为每个类别进行命名。
建议流程:
-
人脸检测推荐模型:
- MTCNN(对儿童脸效果好)
- RetinaFace(速度快、精度高)
- YOLOv8-face(最新、适合视频)
-
**关键点检测(可选但推荐)**用于对齐儿童人脸,提高情绪识别效果模型:
- MTCNN 自带 5 点关键点
- MediaPipe Face Mesh(468 点,更精细)
-
人脸对齐与裁剪对齐方式:
- 基于双眼关键点进行相似变换(旋转、缩放、平移)
- 将人脸裁剪为 224×224 或 112×112(根据模型要求)
-
视频处理
- 按每秒 1~5 帧采样(避免数据冗余)
- 对每一帧做人脸检测 + 裁剪
- 保留检测置信度高的帧(如 >0.9)
3. 如何构建训练集 / 验证集 / 测试集
目前以照片为主
建议比例:
- 训练集:70%
- 验证集:15%
- 测试集:15%
构建方式:
-
按 "人" 划分,而不是按 "图片" 划分避免同一个孩子的照片同时出现在训练集和测试集,否则会导致模型 "作弊"。
-
步骤:
a. 给每个儿童分配唯一 IDb. 将所有儿童随机分为 train /val/test 三组c. 按儿童 ID 将其所有照片 / 视频帧放入对应集合
-
数据增强(训练集使用)儿童人脸适合的增强:
- 随机亮度、对比度
- 随机水平翻转
- 轻微旋转(±10°)
- 随机裁剪
- 颜色抖动注意:不要做垂直翻转(不自然)
4. 情绪识别数据集的标注规范
建议情绪类别(与 FER2013 一致):
- 愤怒
- 厌恶
- 恐惧
- 快乐
- 悲伤
- 惊讶
- 中性
标注方式:
-
单标签标注(大多数 FER 任务使用)每张图只标一种情绪
-
多标签标注(如果需要更精细)例如:又哭又怕 → 悲伤 + 恐惧
-
视频标注
- 可以按帧标注
- 或按 "片段" 标注(例如 1~30 帧为 "哭泣")
-
标注工具推荐
- LabelStudio
- VGG Image Annotator (VIA)
- CVAT(适合视频)
5. 如何制作一个 "合格" 的情绪识别数据集
最终数据集结构示例:
plaintext
dataset/
train/
angry/
disgust/
fear/
happy/
sad/
surprise/
neutral/
val/
...(同上)
test/
...(同上)
每个类别下存放:
- 裁剪好的人脸图片(224×224 或 112×112)
- 命名建议:
childID_xxx.jpg
6. 合规注意事项(非常重要,尤其是儿童数据)
若你处理的是儿童面部数据,必须遵守:
- 中国《个人信息保护法》
- 《未成年人保护法》
- 《网络安全法》
- 若用于科研,还需遵守伦理审查要求
以下是必须做到的:
-
必须获得监护人书面同意
- 明确告知数据用途
- 明确告知数据保存方式
- 明确告知可以随时撤回同意
-
数据必须匿名化
- 删除姓名、身份证号、学校、家庭住址等信息
- 儿童 ID 用随机字符串代替
- 不要在图片中包含可识别背景(学校、家庭环境)
-
数据存储安全
- 加密存储
- 禁止公开上传到 GitHub、百度网盘等
- 仅限项目成员访问
-
禁止向第三方泄露
- 不能把数据给同学、公司或上传到公共数据集
-
若用于论文 / 毕设,必须经过学校伦理审查
- 提交伦理审查表
- 提交监护人同意书模板
- 提交数据处理方案
-
数据保存期限
- 研究结束后必须删除或匿名化归档
基础知识概念衍生:
人工特征VS深度学习特征
人工特征是"教计算机怎么看",深度学习特征是"让计算机自己学怎么看"。
一、 核心概念
1. 人工特征提取 (Handcrafted Feature Extraction)
- 概念:由人类专家(算法工程师)根据图像的物理特性(如边缘、颜色、纹理),设计出特定的数学公式或规则,将图像像素转化为一组固定长度的数值(特征向量)。
- 核心逻辑:人类先总结规律,再让计算机去计算。
- 代表算法 :
- HOG (Histogram of Oriented Gradients):提取边缘方向分布(常用于行人检测)。
- SIFT (Scale-Invariant Feature Transform):提取关键点(用于图像匹配)。
- LBP (Local Binary Pattern):提取纹理特征(常用于人脸识别、表情识别)。
- Haar-like Features:提取明暗变化(用于人脸检测)。
2. 深度学习特征提取 (Deep Learning Feature Extraction)
- 概念:利用深度神经网络(如 CNN、Transformer),通过大量数据的训练,自动学习图像中的底层(线条)、中层(五官部件)到高层(抽象概念)的特征。
- 核心逻辑:人类提供数据和目标,让计算机通过反向传播算法自己总结规律。
- 代表模型 :
- CNN 系列:AlexNet, VGG, ResNet, MobileNet。
- Vision Transformer (ViT):利用注意力机制提取全局特征。
二、 详细对比区分
| 维度 | 人工特征 (Handcrafted) | 深度学习特征 (Deep Learning) |
|---|---|---|
| 设计方式 | 人为设计:需要深厚的领域知识,设计周期长。 | 自动学习:模型自动优化,无需手动设计特征。 |
| 特征层次 | 浅层 / 中层:主要捕捉边缘、纹理等低级信息。 | 多层次:从边缘到抽象概念(如 "这是一张笑脸")。 |
| 泛化能力 | 弱:针对特定场景设计,换个场景(如光照变化、角度变化)效果暴跌。 | 强:模型具有很强的鲁棒性,能适应不同光照、姿态。 |
| 数据依赖 | 低:少量数据即可训练分类器(如 SVM)。 | 高:需要海量标注数据才能训练出好的特征。 |
| 计算复杂度 | 低:数学运算简单,CPU 即可实时处理。 | 高:矩阵运算量大,通常需要 GPU 加速。 |
| 可解释性 | 高:知道特征代表什么(如 LBP 代表纹理)。 | 低:像 "黑盒子",很难解释某个神经元具体代表什么。 |
三、 针对你的 "儿童情绪识别" 项目的深度分析
既然你做的是儿童人脸表情识别 (FER),这两者的选择差距非常大:
1. 为什么人工特征(如 LBP+SVM)不适合你?
- 儿童脸部特征不稳定:儿童的五官比例随年龄变化大,且皮肤光滑(纹理少),LBP 等依赖纹理的算法效果很差。
- 表情幅度差异:儿童表情往往比成人夸张或扭曲,人工设计的几何特征(如眼睛长宽比)很难准确描述。
- 遮挡与姿态:儿童照片中常有低头、转头、遮挡(手、玩具),人工特征对这些变化非常敏感。
2. 为什么深度学习特征(如 ResNet)是唯一解?
- 端到端学习:输入一张图,直接输出情绪类别,中间过程自动优化。
- 强大的拟合能力:能够学习到儿童特有的细微表情模式。
- 迁移学习 (Transfer Learning):这是关键点!你可以先用成人数据集(如 FER2013)预训练一个 ResNet,然后用你的儿童数据进行 "微调"。这样即使你的儿童数据量不是特别巨大,也能取得很好的效果。
OS:使用技术栈:PyTorch框架+ResNet18作为骨干网络(Backbone)
采用深度卷积神经网络ResNet18进行端到端的特征提取与分类...的方法。
在 2025 年的今天,做图像分类和情绪识别,深度学习特征是绝对的主流和标准,人工特征仅用于极其简单的嵌入式设备或学术对比。