Image processing 寻找相似的图像

Image processing 寻找相似的图像,image-processing,similarity,caffe,Image Processing,Similarity,Caffe,我想找到与另一个图像相似的图像。所以经过研究,我发现了两种方法,第一种是两种,通过图像的属性来表示图像,比如 length=full 图案=支票 颜色=蓝色 但这种方法的局限性在于,我无法获得一个包含所有标记特征的详尽数据集 我发现的第二种方法是提取特征并进行特征映射。 因此,我决定将深度卷积神经网络与caffe结合使用,以便通过使用任何现有的模型,我可以学习特征,然后执行特征匹配或其他操作。我只是想提出一个一般性的建议,还有哪些方法是好的,值得一试。既然我刚开始接触caffe,那么谁能给我一个

我想找到与另一个图像相似的图像。所以经过研究,我发现了两种方法,第一种是两种,通过图像的属性来表示图像,比如

length=full
图案=支票
颜色=蓝色

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

我发现的第二种方法是提取特征并进行特征映射。 因此,我决定将深度卷积神经网络与caffe结合使用,以便通过使用任何现有的模型,我可以学习特征,然后执行特征匹配或其他操作。我只是想提出一个一般性的建议,还有哪些方法是好的,值得一试。既然我刚开始接触caffe,那么谁能给我一个关于如何处理caffe问题的一般性指导方针呢? 提前谢谢


我看了Phasy.好奇的是它会发现像小强度变化和其他变化一样的图像,它也能赋予同一类型(语义上)类似于蓝色和红色条纹的T恤,它会给黑色和白色条纹相似,并且会考虑诸如衬衫长度之类的东西,衣领风格等确实,经验证明,使用ConvNets提取的特征之间的欧几里德距离对于同一类别的图像更近,而对于不同类别的图像则更远,但了解您所寻找的相似性是很重要的

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

你可以看到一种特殊的卷积神经网络是暹罗网络,它是为了学习两幅图像之间的相似性而建立的,给定一组标签相同/不相同的图像对。您可以在Caffe中查找此方法的实现

另一种方法是使用一个在ImageNet data()上训练过的ConvNet,使用python/matlab接口对图像进行分类,然后提取从第二层到最后一层的图像,并将其用作该图像的表示。现在你可以只取这些表示的欧几里德距离,这就是你的相似性度量


与Caffe无关,您还可以使用OpenCV()等开源库中包含的“老式”特征匹配方法

事实上,经验表明,对于同一类别的图像,使用CONVNET提取的特征之间的欧几里德距离更近,而对于不同类别的图像,欧几里德距离更远,但了解您所寻找的相似性很重要

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

你可以看到一种特殊的卷积神经网络是暹罗网络,它是为了学习两幅图像之间的相似性而建立的,给定一组标签相同/不相同的图像对。您可以在Caffe中查找此方法的实现

另一种方法是使用一个在ImageNet data()上训练过的ConvNet,使用python/matlab接口对图像进行分类,然后提取从第二层到最后一层的图像,并将其用作该图像的表示。现在你可以只取这些表示的欧几里德距离,这就是你的相似性度量

与Caffe无关,您还可以使用OpenCV()等开源库中包含的“老式”特征匹配方法