我正在做一个小项目,通过他们的个人资料图片涉及Twitter用户的面孔。
我遇到的一个问题是,在我滤除了清晰的人像照片以外的所有图像之后,一小部分但相当多的Twitter用户使用Justin Bieber的图片作为个人资料图片。
为了将它们过滤掉,我如何以编程方式判断一张照片是否是贾斯汀·比伯的照片?
[justin-bieber]
标签。
我正在做一个小项目,通过他们的个人资料图片涉及Twitter用户的面孔。
我遇到的一个问题是,在我滤除了清晰的人像照片以外的所有图像之后,一小部分但相当多的Twitter用户使用Justin Bieber的图片作为个人资料图片。
为了将它们过滤掉,我如何以编程方式判断一张照片是否是贾斯汀·比伯的照片?
[justin-bieber]
标签。
Answers:
更好的主意可能是将出现在一个以上用户的提要中的所有图像都丢弃掉-无需识别。
我觉得http://www.tineye.com/commercial_api可能是这里的解决方案。只需将Twitter个人资料图像扔给Tineye,看看它是否返回可以被清晰识别(或使用简单的单词计数逻辑自动评分)与(或有关)那个麻袋*的图像(和相关URL)。 *。
简单!
由于您只能过滤那些清晰的人像照片,因此我假设您具有某种特征生成方法,可以将原始图像转换为对机器学习有用的特征。如果是真的,您可以尝试通过为分类算法提供一堆已知的Bieber照片以及一堆已知的非Biebers来训练分类算法(其中有很多:神经网络等)。训练完模型后,就可以用来预测新图像是否为Bieber。
这种有监督的学习技术确实需要您拥有知道正确答案的数据(无论是否有比伯),但是这些数据很可能可以通过Google图片搜索找到。它还要求您具有正确的功能,而我对图像处理或算法的了解还不足以知道这是否是主要缺点。
您可以使用eigenfaces之类的方法,http://en.wikipedia.org/wiki/Eigenface。以下内容很好地介绍了该过程以及与不同实现的链接。
http://www.pages.drexel.edu/~sis26/Eigenface%20Tutorial.htm
从这里开始,通常将其用于分类方法,训练模型然后预测案例。您可以通过对一群知名名人进行培训来做到这一点,如果您将Twitter的面孔预测为经过培训的名人模型中的面孔,则将其删除。与此类似http://blog.cordiner.net/2010/12/02/eigenfaces-face-recognition-matlab/
这遭受了不断的修正。很快会有一个新的贾斯汀·比伯(Justin Bieber)不在您的训练模型中,因此您无法对其进行预测。还有像惠特尼·休斯顿(Whitney Houston)的情况,您可能从未想过要加她,但几周以来,出于尊重和钦佩,她可能是一个共同的形象。但是,您将不会遇到上面提到的婴儿图片的缺点。为了解决这些问题,您可以使用更多的分层聚类方法。如果除去前几组集群,如果它们达到一定的支持水平,它们会非常接近,则第一个集群有15个项目,然后再构建第二个集群。现在,您不必担心培训模型中的谁,但您会陷入婴儿图片问题。
http://face.com/具有免费的面部识别API
如果您想自己做,我建议您使用英特尔的免费开源OpenCV(计算机视觉CV)项目。
您需要使用一种算法来检测图片所指的人。您可以基于名人的不同肖像图片建立模型,并使用分类器确保该图片引用您的数据库图片之一。您需要根据喜欢的脸部的不同参数(例如眼睛之间的距离或其他参数)使用特定的分类器,以提高模型的准确性。还有皮肤分析。最重要的是建立一个好的分类器。此方法可能很容易受到攻击。
但是还有一个很好的人脸识别项目http://opencv-code.com/Opencv_Face_Detection