【问题标题】:Dlib. How solve the optimization constraints to be on real time ? Idea of landmarks convergence?库。如何解决实时优化约束?地标融合的想法?
【发布时间】:2016-10-19 02:44:24
【问题描述】:

我想使用 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可以解释一下,它是如何完成的?我们在边界框内拟合平均人脸点,然后我们正在寻找其邻域中的每个地标最佳位置?这个小区多少钱?

感谢任何帮助

【问题讨论】:

    标签: c++ optimization dlib


    【解决方案1】:
    -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 ?
    

    人脸特征检测有两个步骤:人脸检测和人脸特征检测。而最消耗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 将 平均人脸形状 更改为新的人脸形状(预测的人脸形状),并且对于形状预测器模型内的每个训练的回归树迭代地进行此过程

    【讨论】:

    • 谢谢。就一个问题。如果我使用不同的人脸检测算法,你认为给定边界框只需要点收敛需要多少时间(它可以是实时的,无需优化设置)?我问了算法问题,因为如果我使用不同的人脸检测器,它会在边界框上产生缺陷,而不是如果这些点在平均形状的点附近寻找,它就不能很好地收敛。 (其实我也是俄罗斯人=))
    • 是的,它会实时工作,我认为每张脸需要 1-2 毫秒。是的,你会失去一些收敛性,因为人脸边界框的大小和位置会影响形状预测的精度。但是您可以使用检测器作为边界框的来源来训练一个新的 shape_predictor。只需不到一天的培训,您将需要 32+ GB 的 RAM。我什至尝试使用具有不同真实面部大小和位置的简单 16x16 固定大小的盒子,并且训练得很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多