训练模型以实现 DLib 的面部特征点,例如手的特征点及其地标

Posted

技术标签:

【中文标题】训练模型以实现 DLib 的面部特征点,例如手的特征点及其地标【英文标题】:Training a model to achieve DLib's facial landmarks like feature points for hands and it's landmarks 【发布时间】:2018-10-23 07:17:48 【问题描述】:

[我是机器学习和 OpenCV 的菜鸟] 以下是结果,即您在应用 DLib 的面部地标模型时获得的 68 个面部地标,可以在here. 找到

在 script 中提到,模型是在 iBUG 300-W 面部标志数据集上训练的。

现在,我希望创建一个类似的模型来绘制手的地标。我在这里有hand dataset。

我没有得到的是: 1. 我应该如何在这些位置上训练模型?我是否必须手动标记每张图像中的每个关节,或者是否有为此优化的方法? 2. 在 DLib 的模型中,每个面部标志位置都有一个特定的值,例如,右眉毛分别为 22、23、24、25、26。他们会在什么时候被赋予这些价值? 3. 在 DLib 的形状预测器 training script 上训练这些图像就足够了,还是我也必须在其他框架(如 Tensorflow + Keras)上训练模型?

【问题讨论】:

【参考方案1】:

    我应该如何在这些位置上训练模型?我是否必须手动标记每张图像中的每个关节,或者是否有为此优化的方法?

    -> 是的,您应该手动完成所有操作。检测手的位置,定义描述形状所需的点数。

    在 DLib 的模型中,每个面部标志位置都有一个特定的值,例如,右眉毛分别为 22、23、24、25、26。他们会在什么时候获得这些值?

    -> 从学习步骤开始,例如你想要每个手指3分,手腕2分,所以总共15 + 2 = 17分。 取决于您如何定义哪些点属于哪个手指,例如 point[0] 到 point[2] 是拇指。等等。

    在 DLib 的形状预测器训练脚本上训练这些图像是否就足够了,还是我也必须在其他框架(如 Tensorflow + Keras)上训练模型?

    -> 使用 dlib,你可以做任何事情。

【讨论】:

【参考方案2】:

@thachnb 上面的回答回答了一切。

    标签必须手动完成。使用 DLib,Imglab 带有源代码,可以使用 CMake 轻松构建。它允许: 用框标记 为对象(感兴趣的对象)注释/表示部分(特征)例如:面部是一个对象,特征/地标定位它的部分。

在我的研究过程中,我被推荐了很多 Amazon Mechanical Turk。

    这些特征在标注期间被赋予这些值。在您保持一致之前,您可以在这些命名约定中发挥创意。 由于这里只需要地标/特征点训练,因此 DLib 的预建 Shape Predictor Trainer 就足够了。 Dlib 有非常深入的文档,因此不难理解。

此外,您可能还需要一些好的手数据集资源。以下是一些很棒的建议:

CVOnline: Image Databases TwentyBN Dataset Silesian University of Technology's Database

希望这对其他人有用。

【讨论】:

如果是这样,让我们​​将我的答案标记为解决方案 + 投票:D

以上是关于训练模型以实现 DLib 的面部特征点,例如手的特征点及其地标的主要内容,如果未能解决你的问题,请参考以下文章

Dlib 形状预测器

有没有办法在使用 dlib 检测面部标志后选择面部的特定点?

给定 dlib 的 68 点面部标志,确定它们有多好

OpenCV-Python实战(15)——面部特征点检测详解(仅需5行代码学会3种面部特征点检测方法)

Python 3 利用 Dlib 19.7 和 sklearn机器学习模型 实现人脸微笑检测

在线会议中人脸面部轮廓图像提取——Dlib库人脸面部轮廓图像特征提取