Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 人脸识别逻辑_Image Processing - Fatal编程技术网

Image processing 人脸识别逻辑

Image processing 人脸识别逻辑,image-processing,Image Processing,我想开发一个应用程序,在这个应用程序中,用户输入(一个人的)图像,系统应该能够从一个人的图像中识别人脸。如果图像中有多个人,系统也可以工作 我需要一个逻辑,我不知道如何以识别人脸的方式处理图像像素数据。看看-有算法、论文,甚至一些源代码。如果你想构建一个用于教育目的的系统,Eigenface可能是一个很好的算法,因为它相对简单,并且是该领域许多其他算法的起点。基本上,你要做的是获取一组人脸图像(训练数据),如果它们是RGB,则将它们切换为灰度,调整它们的大小,使每个图像具有相同的尺寸,通过将图像

我想开发一个应用程序,在这个应用程序中,用户输入(一个人的)图像,系统应该能够从一个人的图像中识别人脸。如果图像中有多个人,系统也可以工作


我需要一个逻辑,我不知道如何以识别人脸的方式处理图像像素数据。

看看-有算法、论文,甚至一些源代码。

如果你想构建一个用于教育目的的系统,Eigenface可能是一个很好的算法,因为它相对简单,并且是该领域许多其他算法的起点。基本上,你要做的是获取一组人脸图像(训练数据),如果它们是RGB,则将它们切换为灰度,调整它们的大小,使每个图像具有相同的尺寸,通过将图像列(现在是2D矩阵)堆叠在彼此的顶部,使图像成为向量,计算所有图像中每个像素值的平均值,然后从矩阵中的每个条目中减去该值,这样分量向量就不会是仿射的。完成后,计算结果的协方差矩阵,求解其特征值和特征向量,并找到主分量。这些组件将作为向量空间的基础,共同描述人脸图像彼此不同的最重要方式

完成后,可以通过将新人脸图像转换为人脸向量、投影到新的向量空间并计算其与其他投影人脸向量之间的线性距离来计算新人脸图像的相似性分数

如果您决定走这条路线,请小心选择在适当的照明条件和姿势角度范围内拍摄的人脸图像。这两个因素对系统在面对新面孔时的表现起着巨大的作用。如果培训库没有考虑探测器图像的属性,那么您将得到毫无意义的结果。(我曾经训练过一个特征脸系统,从互联网上随机抽取照片,这让我觉得比尔·克林顿是伊丽莎白二世照片中最有力的对手,尽管画廊里还有另一张女王的照片。他们都有白发,面朝同一方向,在相似的照明条件下拍摄这对计算机来说已经足够好了。)

如果要从同一图像中的多个人中提取人脸,则需要一个完整的系统来检测人脸,将其提取到单独的文件中,并对其进行预处理,以便与从其他图片中绘制的其他人脸进行比较。这些都是巨大的主题。我见过一些人使用基于肤色和纹理的方法来切割非人脸的图像组件,他们做了一些很好的工作,但这些图像组件也很容易受到训练数据变化的影响。颜色转换尤其难以控制,这就是为什么图像的灰度转换和/或小波表示非常流行的原因

机器学习是FR系统中许多重要过程的基础,因此我无法充分强调良好训练数据的重要性。有很多学习算法,但在我看来最重要的是朴素贝叶斯分类器;随着训练数据集大小的增加,其他方法会收敛于贝叶斯方法,因此,如果您计划使用较小的数据集,则只需进行想象。请记住,培训数据的质量将决定整个系统的成败,只要它是可靠的,您就可以从为支持企业而编写的算法林中选择任何您喜欢的树


编辑:对训练数据的一个良好的健全性检查是计算探测器和库图像的平均面。(这正是它听起来的样子;在控制图像大小后,取每个图像的RGB通道之和,并将每个像素除以图像数量。)预处理越好,平均人脸看起来就越人性化。如果两张普通的脸看起来像不同的人——不同的性别、种族、头发颜色等等——这是一个警告信号,表明你的训练数据可能不适合你的想法。

有许多不同的算法。基本上你要找的是“计算机视觉”。我们在大学里做了一个关于面部识别和检测的项目。你需要做的是广泛地使用谷歌,并尝试理解所有这些东西。这涉及到一些数学问题,所以要做好准备。先去。然后,您需要搜索特定算法的pdf出版物

你可以走一条艰难的路——自己写一个所有算法的实现。或者简单的方法-使用一些计算机视觉库,如OpenCV或OpenVIDIA


事实上,做一些有用的东西并不难。所以要勇敢。更难的是,要制作一个能够在不同且不断变化的条件下工作的软件。这就是谷歌不会帮助你的地方。但是我想您不想深入到那么深。

这个问题对于堆栈溢出来说太高了。例如,如果你有一些应该用来检测眼睛不工作的代码,那么这(可能)是有责任的。首先,你需要阅读一些人脸识别技术,然后尝试实现一种。@Petar:对不起,我是在挖苦你。我还是删除了评论。我只是想说明这可能是计算机科学中最困难的问题之一,它不是在有人告诉你算法后几天内你就拼凑出来的:)如果我对人脸识别一无所知,我的第一选择是谷歌。我在几秒钟内找到了几篇关于人脸识别算法的文章。我想写一个操作系统,我该如何开始?我上一个人脸识别项目是inv