如何使用 sift 将 TF-IDF 与视觉词袋结合使用

问题描述

我使用与此链接相同的方法https://medium.com/analytics-vidhya/bag-of-visual-words-bag-of-features-9a2f7aec7866

链接中所述,TD IDF 可用于从视觉词袋中删除不太重要的“视觉词”。但是,在网上查看后,似乎 TD-IDF 仅用于文本特征提取。 (例如,sklearn.feature_extraction.text.TfidfTransformer)

是否有一种简单的方法可以使用 TF-IDF 进行图像分类而不是文本分类

解决方法

我怀疑它对于图像是否足够标准,但自己计算它很容易:

  • 对于任何“视觉词”,文档频率 (DF) 是包含该“视觉词”的图像数量除以图像总数。 IDF 是该值的倒数。
  • 特定图像中“视觉词”的“词频”(TF) 是“词”在图像中出现的次数除以该图像中“词”的总数。

现在只需应用公式:TFIDF = TF * log(IDF)。

或者,您可以将每个图像表示为带有表示视觉词的字符串的伪句子,然后在伪句子集上使用标准 TfidfTransformer。但这可能是更多的工作,但没有什么好处。