0

我想找到与另一张图片相似的图片。所以在研究之后我发现了两种方法首先是两种方法通过它的属性来表示图像,比如

length = full pattern = check color = blue

但这种方法的局限性在于,我将无法获得一个包含所有特征的详尽数据集。

我发现的第二种方法是提取特征并进行特征映射。所以我决定将深度卷积神经网络与 caffe 结合使用,以便通过使用任何现有模型,我可以学习特征,然后执行特征匹配或其他一些操作。我只是想接受一个一般性的建议,什么是其他好的方法,值得一试。而且由于我刚刚开始使用 caffe,所以任何人都可以提供一般指导方针如何解决 caffe 的问题?提前致谢

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

4

1 回答 1

4

确实,经验表明,使用 ConvNets 提取的特征之间的欧几里德距离对于同一类的图像更近,而对于不同类的图像更远 - 但重要的是要了解您正在寻找什么样的相似性.

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

您可以查看的一种特殊类型的卷积神经网络是连体网络,它旨在学习两个图像之间的相似性,给定具有标签相同/不同的图像对的数据集。您可以在 Caffe 中寻找此方法的实现

另一种方法是采用在 ImageNet 数据上训练的 ConvNet(有关选项,请参见此处),并使用 python/matlab 接口对图像进行分类,然后提取倒数第​​二层,并将其用作该图像的表示。现在你可以取这些表示的欧几里德距离,这将是你的相似性度量。

与 Caffe 无关,您还可以使用包含在 OpenCV 等开源库中的“老派”特征匹配方法(此类方法的示例教程)。

于 2015-06-30T08:19:58.280 回答