我想vlfeat
在 Octave 上使用库,但 vlfeat.org 没有在 Octave 上安装它的说明。任何帮助/指针将不胜感激。
user1403483
问问题
2014 次
1 回答
0
我需要对octave makefile应用补丁。这是使 vlfeat 在全新安装的 Ubuntu 13.04 上运行的完整脚本:
# install required packages
sudo apt-get install octave octave-pkg-dev build-essential octave-image transfig
# get vlfeat
wget http://www.vlfeat.org/download/vlfeat-0.9.16.tar.gz
tar xzvf vlfeat-0.9.16.tar.gz
# apply patch
cd vlfeat-0.9.16
sed -i 's/mex $(OCTAVE_MEX_FLAGS)/mex $(OCTAVE_MEX_FLAGS) $(OCTAVE_MEX_LDFLAGS)/' make/octave.mak
# compile
MKOCTFILE=mkoctfile make
# run demo
mkdir -p doc/demo
cd toolbox
octave --persist --eval "vl_setup; vl_demo"
在我的系统上,演示一直执行,直到达到需要当前架构的点为止。在这一步似乎无法识别八度音阶并且演示停止。但是尽管如此,它还是能够产生一些显示它通常工作的图。但我不知道到什么程度,因为我没有做任何进一步的测试。
更新:
要运行,phow_caltech101
我首先必须安装liblinear
,因为提供的 SVM 使用了一些 octave 未提供的 matlab 函数:
cd
wget "http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/liblinear.cgi?+http://www.csie.ntu.edu.tw/~cjlin/liblinear+tar.gz" -O liblinear.tar.gz
tar xzvf liblinear.tar.gz
cd liblinear-1.93/matlab
sed -i 's/include\/octave/include\/octave-3.6.4\/octave/' Makefile
make octave
比我必须修补一些 vlfeat 文件:
cd
cd vlfeat-0.9.16
patch -p0 << EOF
--- apps/phow_caltech101.m 2012-10-04 11:57:08.000000000 +0200
+++ apps/phow_caltech101.m 2013-06-07 12:37:29.413434382 +0200
@@ -56,7 +56,7 @@
conf.numSpatialY = [2 4] ;
conf.quantizer = 'kdtree' ;
conf.svm.C = 10 ;
-conf.svm.solver = 'pegasos' ;
+conf.svm.solver = 'liblinear' ;
conf.svm.biasMultiplier = 1 ;
conf.phowOpts = {'Step', 3} ;
conf.clobber = false ;
@@ -218,6 +218,8 @@
conf.svm.biasMultiplier, conf.svm.C), ...
'col') ;
w = svm.w' ;
+ b = w(end,:);
+ w = w(1:(end-1),:);
end
model.b = conf.svm.biasMultiplier * b ;
@@ -259,7 +261,7 @@
% -------------------------------------------------------------------------
im = im2single(im) ;
-if size(im,1) > 480, im = imresize(im, [480 NaN]) ; end
+if size(im,1) > 480, im = imresize(im, [480 round(480*size(im,2)/size(im,1))]) ; end
% -------------------------------------------------------------------------
function hist = getImageDescriptor(model, im)
EOF
patch -p0 << EOF
--- toolbox/sift/vl_phow.m 2012-10-04 11:57:08.000000000 +0200
+++ toolbox/sift/vl_phow.m 2013-06-07 12:08:43.653416992 +0200
@@ -135,6 +135,8 @@
sigma = opts.sizes(si) / opts.magnif ;
ims = vl_imsmooth(im, sigma) ;
+ ims = im2single(ims);
+
% extract dense SIFT features from all channels
for k = 1:numChannels
[f{k}, d{k}] = vl_dsift(...
EOF
然后我能够成功运行它:
octave --eval "addpath('~/liblinear-1.93/matlab'); cd toolbox; vl_setup; cd ../apps; phow_caltech101" --persist
于 2013-06-06T11:15:04.080 回答