2015-04-05 144 views
0

我想查找类似于其他图像的图像。所以,研究后,我发现两种方法首先在两个由它的属性表示图像像查找相似图片

length = full pattern = check color = blue

但这种方法的局限是,我将无法得到详尽的数据集的全部功能标记。

我发现的第二种方法是提取特征并进行特征映射。 所以我决定使用caffe深层卷积神经网络,通过使用任何现有的模型,我可以学习特征,然后执行特征匹配或其他操作。我只想提出一个普遍的建议,其他的方法可以是很好的,值得一试。而且,因为我刚刚开始与caffe,所以任何人都可以给出一个通用的指导方法来解决caffe的问题? 在此先感谢

我看着phash只是好奇,它会发现图像是相同的,就像有轻微的强度变化和一些其他变化wiill它也可以为同样的类型(语义)像t恤与蓝色和红色条纹它会给黑色和白色条纹类似,并会考虑像衬衫的长度,领风格等

回答

4

这是事实证明,这是真的,使用提取的特征之间的欧氏距离ConvNets对于同一类的图像更接近,而对于不同类的图像则更接近 - 但了解您寻找的是什么样的相似性非常重要。

可以定义许多类型的相似性度量,并且您使用的特征类型(在ConvNets的情况下,它被训练的数据类型)会影响您将获得的类似图像的类型。例如,也许给狗的图像,你想找到其他的狗的照片,但不是特定的那只确切的狗,或者,你可能有一张教堂的照片,你想找到另一个完全相同的教堂的图像,但从不同的角度 - 这是两个非常不同的问题,用不同的方法可以用来解决它们。

您可以查看一种特定类型的卷积神经网络,即Siamese网络,它是为了学习两张图像之间的相似性而构建的,给出了具有相同/不同名标签的图像对的数据集。您可以在Caffe中查找此方法的实现here

一种不同的方法,是采取上训练ImageNet数据(see here for options)一个ConvNet,和使​​用Python/MATLAB接口进行分类的图像,然后提取第二到最后层,并用其作为该图像的表示。现在你可以把这些表示的欧氏距离,这将是你的相似性度量。

与Caffe无关,您还可以使用OpenCV(an example tutorial of such method)等开放源代码库中包含的“老派”功能匹配方法。