python图像检索_图像检索(4):IF-IDF,RootSift,VLAD

TF-IDF

RootSift

VLAD

TF-IDF

TF-IDF是一种用于信息检索的常用加权技术,在文本检索中,用以评估词语对于一个文件数据库中的其中一份文件的重要程度。词语的重要性随着它在文件中出现的频率成正比增加,但同时会随着它在文件数据库中出现的频率成反比下降。像‘的’,‘我们’,‘地’等这些常用词在所有文章中出现的频率会很高,并不能很好的表征一个文档的内容。

同样的在图像检索中也引入了IF-IDF权重,

词频(Term Frequency,TF) 一个visual word在一个图像中出现的频率的很高,则说明该visual word 能够很好的代表图像的内容。 $$TF = \frac{图像中某个word出现的次数}{图像word的总的个数}$$

逆文档词频(Inverse Document Frequency,IDF) 一些常见的word,会在每一图像出现的频率都很高,但是这些word并不能很好的表示图像的内容,所以要给这一部分word低一些的权重。IDF,描述一个word的普遍重要性,如古欧word在很多的图像中出现的频率都很高,则给予其较低的权重。$$IDF = \log(\frac{图像的总个数}{含有该word的图像数 + 1})$$

将分母+1是为了防止除数为0的情况出现。从上式中可以看出,包含当前word的图像个数越多,IDF的值越小,说明该词越不重要。反之,该词越重要。

计算得到了TF和IDF,则有

\[TF-IDF = TF * IDF

\]

从TF和IDF的计算公式可以看出,IDF是针对整个图像数据库而言的,可以在训练完成后计算一次得到。而TF则是针对具体的某张图像来说的,需要多次计算。

将TF-IDF权值赋给BoW向量,再进行\(l_2\)的归一化,即可得到一个可用于图像检索的向量。

C++实现

void compute_idf(const vector<> &bow,vector &idf){

int img_count = bow.size();

int clu_count = bow[0].size();

idf = vector(clu_count,1.0);

for(int i = 0; i < img_count; i ++){

for(int j = 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值