我想计算一个分布中图像之间的距离,为了更多的解释,如果我们有MNIST数据集,我想计算它们之间的距离。它会很高,因为图像是可变的,图像属于第1类,其他属于第2类,等等。。。并且同一类别(例如类别1(中的图像之间的距离将较低。
那么,我该怎么做呢?什么是合适的距离测量?是KL还是EMD还是其他衡量标准?
谢谢。
您可以研究triplet loss
,以最小化相似类之间的嵌入距离,并最大化不同类之间的插入距离。MNIST示例和解释链接,
https://www.tensorflow.org/addons/tutorials/losses_triplet
https://www.coursera.org/lecture/convolutional-neural-networks/face-verification-and-binary-classification-xTihv
https://towardsdatascience.com/contrasting-contrastive-loss-functions-3c13ca5f055e
https://gombru.github.io/2019/04/03/ranking_loss/
另一种方法是使用通用的预训练图像分类器卷积层来提取图像的重要特征,并将输出平坦化为向量。这类似于可以计算距离的单词嵌入。类似地,使用这种从图像中嵌入的方法可以用来计算与其他方法的相似性,如余弦距离、欧几里得距离。
这种回购对于基于深度学习的图像相似性((很有用
https://github.com/ryanfwy/image-similarity
一些替代方法,
你可以尝试下面的repo进行图像哈希,以获得基于各种方法的图像相似性。这可能不会很好地工作,各种扭曲和变化。
https://github.com/JohannesBuchner/imagehash
图像与地球移动距离的相似性
https://stats.stackexchange.com/questions/404775/calculate-earth-movers-distance-for-two-grayscale-images
https://www.hindawi.com/journals/jam/2013/749429/