8

我目前正在使用 OpenCV3.0,希望我能够创建一个做 3 件事的程序。首先,在实时视频源中查找面孔。其次,使用 ASM 或 AAM 提取面部标志的位置。最后,使用 SVM 对视频中人脸的面部表情进行分类。

我对此进行了大量研究,但找不到最合适的开源 AAM 或 ASM 库来完成此功能。此外,如果可能的话,我希望能够训练 AAM 或 ASM 以提取我需要的特定面部标志。例如,下面链接的图片中的所有编号点: www.imgur.com/XnbCZXf

如果我建议有任何替代方案来获得所需的功能,请随时向我推荐它们。

提前感谢您的任何答案,欢迎所有建议来帮助我完成这个项目。

4

4 回答 4

7

在评论中,我看到您选择使用 dlib 库训练自己的面部标志检测器。您对 dlib 用于生成他们提供的“shape_predictor_68_face_landmarks.dat”模型的训练集有一些疑问。

一些指示:

  • 作者(Davis King)表示他使用了来自 iBUG 300-W 数据集的注释图像。该数据集共有 11,167 张使用 68 点约定注释的图像。作为一个标准技巧,他还对每个图像进行镜像以有效地将训练集大小翻倍,即 11,167*2=22334 个图像。这是数据集的链接:http: //ibug.doc.ic.ac.uk/resources/facial-point-annotations/
    • 注意:iBUG 300-W 数据集包括两个非免费/公开可用的数据集:XM2VTS 和 FRGCv2。不幸的是,这些图像构成了 ibug 300-W 的大部分(7310 个图像,或 65.5%)。
    • 原始论文仅在 HELEN、AFW 和 LFPW 数据集上进行了训练。因此,您应该能够仅在公开可用的图像(HELEN、LFPW、AFW、IBUG)上生成相当好的模型,即 3857 图像。
      • 如果您在 Google 上搜索“一毫秒面部对齐 kazemi”,则该论文(和项目页面)将是热门文章。

您可以通过阅读此 dlib 博客文章的评论部分来了解有关培训过程的详细信息。特别是他简要讨论了他为训练选择的参数:http ://blog.dlib.net/2014/08/real-time-face-pose-estimation.html

考虑到训练集的大小(数千张图像),我认为仅使用少量图像就不会获得可接受的结果。幸运的是,那里有许多公开可用的人脸数据集,包括上面链接的数据集 :)

希望有帮助!

于 2015-07-08T22:49:31.917 回答
2

AAM 和 ASM 非常老派,结果有点令人失望。

大多数面部地标跟踪器使用级联补丁或深度学习。你有 DLib 在这个演示中表现得非常好(+BSD 许可证) ,github 上的其他一些或一堆 API 作为这个免费使用的。

您还可以使用 C++/OpenCV/DLib 来查看我的项目,该项目具有您引用的所有功能并且可以完美运行。

于 2015-04-15T19:23:13.790 回答
1
  • 试试Stasm4.0.0。它在脸上给出大约 77 分。
于 2015-12-14T13:16:53.540 回答
0

我建议你使用FaceTracker库。它是使用 OpenCV 2.x 用 C++ 编写的。你不会对它失望的。

于 2015-04-17T12:04:17.273 回答