我正在做一个与识别情绪(悲伤、快乐、愤怒等)相关的项目。从一张脸。我正在使用dlib库中的面部地标检测器,它可以检测到68个兴趣点。对于相同的情绪,这些兴趣点可以根据不同脸部的方向、眼睛大小、嘴唇大小等而有所不同。
我想对这些兴趣点进行归一化,使其与脸部方向、眼睛大小、嘴唇大小等保持不变。我可以使用哪些技术来做到这一点。然后我想用支持向量机来训练数据。
发布于 2016-09-18 17:49:59
Dlib已经有通过调用http://dlib.net/imaging.html#extract_image_chips函数在http://dlib.net/face_landmark_detection_ex.cpp.html示例中使用的规范化代码。
你将需要使用它的部分代码来获得标准化的地标-它们仍然有足够的信息来检测情绪,但面部将被旋转和缩放:
...
// 1. detect faces
std::vector<rectangle> dets = detector(image);
for (rectangle d : dets)
{
// 2. get landmarks
full_object_detection shape = sp(image, d);
// 3. chip details (normalization params) for normalized image with normalized size of 100 pixels
chip_details chip = get_face_chip_details(shape, 100);
// 4. get normalized landmarks
full_object_detection normalized = map_det_to_chip(shape, chip);
// now you can used normalized shape in your classifier
}在你得到了归一化的形状之后-它取决于你如何训练分类器。也许“按原样”使用地标就足够了,也许你需要获取最重要的点并计算它们之间的距离,然后根据距离数据进行训练
https://stackoverflow.com/questions/39537536
复制相似问题