

📝笔记:使用vlfeat的Matlab接口简单实现BOW以及VLAD
source link: https://vincentqin.tech/posts/vlfeat-feature-embedding/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

📝笔记:使用vlfeat的Matlab接口简单实现BOW以及VLAD
本文使用 vlfeat 的 Matlab
接口实现 BOW
以及 VLAD
。
先放出代码,细节后续补充。
close all
% add vlfeat toolbox
run('vlfeat-0.9.21\toolbox\vl_setup');
%% Train a codebook
% trainning data generation
numDatabase = 10000;
dimLocalDesc = 128;
X = uint8(floor(255*rand(dimLocalDesc,numDatabase))); % can be computed by vl_sift
% setting params to KMeans
K = 10; % number of clusters
[centers,assn] = vl_ikmeans(X,K,'verbose');
% build a kd-tree to softassignment
kdtree = vl_kdtreebuild(single(centers),'verbose');
%% Compute IDF for database
nn_kdtree = vl_kdtreequery(kdtree, single(centers), single(X));
assignments = zeros(K,size(X,2));
assignments(sub2ind(size(assignments), nn_kdtree, 1:length(nn))) = 1;
% or: assignments(sub2ind(size(assignments), assn, 1:length(nn))) = 1;
IDF = log(numDatabase*ones(K,1)./(sum(assignments,2) + 1) );
%% Encode with BOW and VLAD
numofLocalKPs = 100; % number of keypoints
query = uint8(floor(255*rand(dimLocalDesc,numofLocalKPs))); % can be computed by vl_sift
% todo: can be retrieval with vl_ikmeanspush(query,centers) ;
nn = vl_kdtreequery(kdtree, single(centers), single(query));
% soft assignment
query_assign = zeros(K,numofLocalKPs); %only 1 each col
query_assign(sub2ind(size(query_assign), nn, 1:length(nn))) = 1;
% encode with vlad and bow
enc_vlad = vl_vlad(single(query),single(centers),single(query_assign),'verbose');
enc_bow = sum(query_assign,2);
numTotalWords = sum(enc_bow);
TF = enc_bow / numTotalWords;
enc_bow = TF .* IDF;
% show
bar(enc_bow);
set(gcf,'color',[1 1 1]);
TF-IDF
加权后的BOW
向量长这个样子:
- Post author: Vincent Qin
- Post link: https://www.vincentqin.tech/posts/vlfeat-feature-embedding/
- Copyright Notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.
Recommend
-
4
matlab笔记:在服务器上激活matlab遇到的问题 | 高深远的博客matlab笔记:在服务器上激活matlab遇到的问题 发表于 2020-05-02 | 更新于: 2020-05-02 | 分类于
-
8
如何实现 Matlab 多重 parfor 循环 作者: 张志强 ...
-
4
【Matlab】自编代码实现感知机 2016年05月06日 Author: Guofei 文章归类: 趣文,文章编号: 版权声明:本文作者是郭飞。转载随意,但需要标明原...
-
8
【丢弃】【遗传算法】Matlab实现 2016年10月01日 Author: Guofei 文章归类: ,文章编号: 690 版权声明:本文作者是郭飞。转载随意,但需要标明...
-
5
matlab笔记:安装MinGW编译器 | 高深远的博客matlab笔记:安装MinGW编译器 发表于 2020-01-15 | 更新于: 2020-01-21 | 分类于 环境配置 | | 阅读次...
-
7
matlab笔记:久未使用之后踩的一堆坑 发表于 2019-11-10 | 更新于: 2020-02-07 | 分类于 程序与设计 |
-
12
matlab笔记:MEX文件函数使用中的问题 | 高深远的博客matlab笔记:MEX文件函数使用中的问题 发表于 2020-01-21 | 更新于: 2020-01-28 | 分类于 环境配置...
-
6
matlab笔记:一个非线性方程问题的多种求解方法 发表于 2019-11-16 | 更新于: 2020-02-07 | 分类于 程序与设计 |
-
3
用 JavaScript 实现一个简单的笔记应用程序 作者:佚名 2022-10-21 14:21:46 记笔记是学习新知识技能比较好的做法。记笔记的一些好处是:记笔记可以作为学习辅助工具,记笔记可以提高注意力和对细节的关注,促进主...
-
5
【笔记】IDEA从接口跳转到实现类 2022-11-09 2 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK