我有一组脸部图像,每张图像中有1张或有时2张脸。我想做的是找到每张图片中的脸然后裁剪它。 我已经测试了几个方法,这些方法是使用openCV在python中实现的,但结果并不是那么好。这些方法是:
还有一个我测试过的模型,但我不允许发布两个以上的链接。 问题在于这些基于Haar-Feature的算法对于脸部大小并不健壮,当我在接近脸部的图像上尝试它们时,他们找不到任何脸部。 有人提到尝试基于深度学习的算法,但我找不到与我想做的相对应的算法。基本上,我想我需要一个预训练的模型,它可以给我图像中的面部边界框的坐标,或者更好,一个预先训练的模型,它将裁剪的面部图像作为输出。
答案 0 :(得分:2)
您不需要机器学习算法,图形算法就足够了。例如,Snapchats人脸识别算法的工作原理如下:
从最常见的脸部(“标准脸部”)创建包含节点和边缘的图表。
将图表/重新协调节点变形为输入图像中的拟合像素
瞧,您在输入图像中识别出脸部。
容易说,但更难编码。例如,我们在我们大学实施了Dijkstra算法,如果需要,我可以将您的“Graph”类交给我。但我用C ++写的。
使用这些图形算法,您可以更有效地裁剪面部。