从图像中裁剪面部

时间:2017-09-26 05:15:44

标签: opencv machine-learning computer-vision deep-learning face-detection

我有一组脸部图像,每张图像中有1张或有时2张脸。我想做的是找到每张图片中的脸然后裁剪它。 我已经测试了几个方法,这些方法是使用openCV在python中实现的,但结果并不是那么好。这些方法是:

1- Implementation 1

2- Implementation 2

还有一个我测试过的模型,但我不允许发布两个以上的链接。 问题在于这些基于Haar-Feature的算法对于脸部大小并不健壮,当我在接近脸部的图像上尝试它们时,他们找不到任何脸部。 有人提到尝试基于深度学习的算法,但我找不到与我想做的相对应的算法。基本上,我想我需要一个预训练的模型,它可以给我图像中的面部边界框的坐标,或者更好,一个预先训练的模型,它将裁剪的面部图像作为输出。

1 个答案:

答案 0 :(得分:2)

您不需要机器学习算法,图形算法就足够了。例如,Snapchats人脸识别算法的工作原理如下:

  1. 从最常见的脸部(“标准脸部”)创建包含节点和边缘的图表。

  2. 将图表/重新协调节点变形为输入图像中的拟合像素

  3. 瞧,您在输入图像中识别出脸部。

  4. 容易说,但更难编码。例如,我们在我们大学实施了Dijkstra算法,如果需要,我可以将您的“Graph”类交给我。但我用C ++写的。

    使用这些图形算法,您可以更有效地裁剪面部。