c++ - Dlib。如何解决实时的优化约束?地标融合的想法?

标签 c++ optimization dlib

我想使用 dlib 库来实时检测面部特征点。 该算法基于论文:Vahid Kazemi 和 Josephine Sullivan 的 One Millisecond Face Alignment with an Ensemble of Regression Trees

我使用现有的库:dlib,它很慢。我在 http://dlib.net/faq.html 上阅读了如何快速完成此操作,但这在我的电脑上是不可能的,因为在 SSE4 或 AVX 之前我没有优化选项。最后,我使用 SSE2。 所以我有以下问题:

-可以在移动/网络应用程序库 dlib 中使用,以便它实时工作吗?我不熟悉优化设置等,这就是为什么有多少限制很有趣。

-可以在我的电脑上使用而不优化 SSE4 以便它实时工作吗?

-此文件 shape_predictor_68_face_landmarks.dat 权重为 95 Mb。我只需要人脸+地标检测,这个文件是否包含我需要的冗余信息?

-一个算法问题:点(地标)的收敛取决于人脸检测的边界框,smb可以解释一下,它是如何完成的吗?我们在边界框内拟合平均面的点,然后我们正在寻找其邻域中的每个地标最佳位置?这个小区多少钱?

感谢任何帮助

最佳答案

-It is possible to use in mobile/web application library dlib in order that it works in real time ? I am not familar with optimization settings and so on, that is why it is interesting how much restrictions there are.

-It is possible to use in my computer without optimisation SSE4 in order that it works in real time ?

Face landmark detection有两个步骤:face detection和face landmark detection on this face。最耗 CPU 的部分是第一步——检测人脸(运行 simple_object_detector),只有这部分从使用 AVX/SSE 中获益

为什么它很慢 - 对于 80x80 像素和更大的人脸尺寸,人脸检测会耗尽,如果您将一些高分辨率图像放入检测器,它将在不同比例的滑动窗口上花费大量时间。大多数情况需要在同一帧上有 1-3 个面孔,而现代移动相机的分辨率非常高。

因此,我建议您减小用于人脸检测的图像大小 - 缩小图像尺寸并根据感兴趣的区域进行裁剪。这将使您获得最大可能的性能优化。

下一个可能的步骤是让面部检测器不在不同的尺度上运行,但可能会进行 1-2 次迭代。看看这个问题 - 它描述了这个问题(dlib's scan_fhog_pyramid : set max_pyramid_levels)

-This file shape_predictor_68_face_landmarks.dat weights 95 Mb. I need just face+landmark detection, does this file contain redundant information according to my needs?

此文件只有在 iBug 数据集上训练的 68 个面部特征点的数据模型。它内部没有人脸检测模型。人脸检测模型在 dlib/image_processing/frontal_face_detector.h 文件中发布

是的,这个文件很大,但这是它质量的代价。您可以训练一些新的人脸界标检测模型(在 http://dlib.net/train_shape_predictor_ex.cpp.html 示例中描述),具有更少的界标点或更低的质量——这可以使您的文件更小

-One algorithm question...

要回答这个问题 - 请考虑阅读原始 ( http://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Kazemi_One_Millisecond_Face_2014_CVPR_paper.pdf ) 和 dlib/image_processing/shape_predictor.h 源代码

不久 - 在检测到人脸(找到边界框)后,形状预测器会在相对于人脸边界框的预训练位置搜索一些特征(图像像素值)。根据特征值,shape_predictor 将平均脸型更改为新的脸型(预测的脸型),并且对形状预测模型内的每个训练有素的回归树迭代进行此过程

关于c++ - Dlib。如何解决实时的优化约束?地标融合的想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37878560/

相关文章:

python - 在树莓派上下载 dlib,尝试时 pip 一直输出错误?

子类的模板子类中的 C++ 名称解析

c++ - 从 Boost C++ 库构建特定的库

c++ - 无法使用有符号/无符号不匹配的 sort() 算法/错误

PHP 和 MYSQL 优化的按日期间隔选择的方式

c++ - 在可执行文件中禁用优化并将它们维护在静态库中

performance - 为什么这些定点 cata/ana 态射定义优于递归定义?

python - 调整图像大小时使用 OpenCV 进行的面部识别不准确

opencv - 如何对齐人脸进行预处理?

c++ - 为什么类对象的大小根据成员的顺序而不同?