BOF算法和VLAD算法的对比

BOF和VLAD是两种图像检索算法,均基于SIFT特征和K-Means聚类。BOF使用词频矢量表示图像,而VLAD保存了特征到聚类中心的残差信息,且经过L2归一化,提供更详细描述。VLAD虽然精度更高但计算复杂度也增加。
摘要由CSDN通过智能技术生成

前言

BOF算法(Bag of Features)和VLAD算法(Vector of Locally Aggregated Descriptors)都是图像检索算法,都使用聚类来将特征描述子分组,进而形成视觉单词表,但又有不同点,下面是两个算法的流程和对比。

BOF算法的流程

1、提取训练集图片的SIFT特征,设N张图片得到共M个128维的特征向量,存入des

2、对des进行K-Means聚类,得到K个聚类中心,即码本

3、计算一个图像的每个特征向量到K个聚类中心的距离,并将其映射到距离最近的聚类中心上(将该聚类中心对应的词频+1),就将这幅图像变成了一个与聚类中心序列相对应的词频矢量,将训练集的所有图片都进行这样的操作,得到了N个词频矢量。

4、输入测试图片,提取测试图片的SIFT特征,然后用第三步的方法得到测试图片的词频矢量。

5、计算测试图片的词频矢量和N个训练集的词频矢量的距离(欧氏距离or余弦距离)

6、得到距离最近的x张图片

VLAD算法流程

1、提取图像的SIFT描述子,设N张图片得到共M个128维的特征向量,存入des

2、对des进行K-Means聚类,得到K个聚类中心,即码本

3、把一副图像所有的SIFT描述子按照最近邻原则分配到聚类中心上,对每个聚类中心做残差和(即属于当前聚类中心的所有SIFT减去聚类中心然后求和),对这个残差和做L2归一化,然后拼接成一个K*128的长向量。128是单条SIFT的长度。对所有图片进行这个操作,共得到N个长向量。

4、输入测试图片,提取测试图片的SIFT特征,然后用第三步的方法得到测试图片的长向量。

5、计算测试图片的向量和N个训练集的向量的距离(欧氏距离or余弦距离)

6、得到距离最近的x张图片

区别

BOF(Bag Of Features):建立码本时采用K-means,在映射时,利用视觉词袋量化图像特征,统计的词频直方图,该词频直方图即为编码后的特征向量,损失的信息较多。

VLAD(vector of locally aggregated descriptors):VLAD像BOF那样,只考虑离特征点最近的聚类中心,VLAD保存了每个特征点到离它最近的聚类中心的距离; 像Fisher vector那样,VLAD考虑了特征点的每一维的值,对图像局部信息有更细致的刻画; 而且VLAD特征没有损失信息。

VLAD算法比BOF算法更加准确,但计算量也更大,需要更多时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

捕赤鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值