我正在通过深度学习(特别是 CNN)进行面部表情识别研究。我对准备和/或预处理数据有一些疑问。
我分割了正面面部表情的视频(例如,一个人根据他/她的注释表达快乐情绪的 2-3 秒视频)。
注意:我的参与者所表现的表情强度相当低(不是夸张表情/微表情)
一般问题:现在,我应该如何准备用于 CNN 训练的数据(我有点倾向于使用深度学习库 TensorFlow)?
问题 1:我读过一些基于深度学习的面部表情识别 (FER) 论文,这些论文建议采用该表情的峰值(很可能是单个图像)并将该图像用作训练数据的一部分。我怎么知道一个表达式的峰值?我的依据是什么?如果我要拍摄一张图像,我的参与者所表现出的微妙表情的一些重要帧不会丢失吗?
问题 2:或者在 OpenCV 中执行分段视频以检测(例如 Viola-Jones)、裁剪并保存每帧的面部,并将这些图像作为我的训练数据的一部分使用也是正确的吗?适当的标签?我猜有些面孔是多余的。然而,由于我们知道数据中的参与者表现出低强度的表情(微表情),因此面部的一些动作也可能很重要。
正如 @unique Monkey 已经指出的,这通常是一个监督学习任务。 如果您希望提取一个独立的“峰值”点,我建议您扫描输入图像并找到每个序列中参考点与受试者静息状态偏差最大的一个。
如果你没有进入休息状态,那么视频剪辑是如何裁剪的? 例如,受试者是否被告知做出这种表情并保持不动? 剪辑覆盖了整个表达的哪一部分(之前、表达、之后)? 获取视频剪辑的一个或两个端点;绘制参考点从每一端的移动图,并寻找差异最大的帧,然后转向另一端点。
答案1:一般我们都是靠人的感觉来判断哪个表情是表情的巅峰(我想你可以区分微笑和大笑的区别)
答案2:如果你想得到好的结果,我建议你不要像这种方法那样粗鲁地对待数据