GithubHelp home page GithubHelp logo

vlfeat / vlfeat Goto Github PK

View Code? Open in Web Editor NEW
1.6K 1.6K 623.0 10.16 MB

An open library of computer vision algorithms

Home Page: http://vlfeat.org/

License: BSD 2-Clause "Simplified" License

Makefile 3.14% MATLAB 18.75% CSS 1.46% Python 3.44% Clean 0.30% TeX 0.31% Shell 0.09% C 62.95% C++ 0.70% Objective-C 1.27% HTML 7.02% Roff 0.50% M 0.07%

vlfeat's Introduction

VLFeat -- Vision Lab Features Library

Version 0.9.21

The VLFeat open source library implements popular computer vision algorithms specialising in image understanding and local featurexs extraction and matching. Algorithms incldue Fisher Vector, VLAD, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixes, quick shift superpixels, large scale SVM training, and many others. It is written in C for efficiency and compatibility, with interfaces in MATLAB for ease of use, and detailed documentation throughout. It supports Windows, Mac OS X, and Linux.

VLFeat is distributed under the BSD license (see the COPYING file).

The documentation is available online and shipped with the library as doc/index.html. See also:

Quick start with MATLAB

To start using VLFeat as a MATLAB toolbox, download the latest VLFeat binary package. Note that the pre-compiled binaries require MATLAB 2009B and later. Unpack it, for example by using WinZIP (Windows), by double clicking on the archive (Mac), or by using the command line (Linux and Mac):

> tar xzf vlfeat-X.Y.Z-bin.tar.gz

Here X.Y.Z denotes the latest version. Start MATLAB and run the VLFeat setup command:

> run <VLFEATROOT>/toolbox/vl_setup

Here <VLFEATROOT> should be replaced with the path to the VLFeat directory created by unpacking the archive. All VLFeat demos can now be run in a row by the command:

> vl_demo

Check out the individual demos by editing this file: edit vl_demo.

Octave support

The toolbox should be laregly compatible with GNU Octave, an open source MATLAB equivalent. However, the binary distribution does not ship with pre-built GNU Octave MEX files. To compile them use

> cd <vlfeat directory>
> make MKOCTFILE=<path to the mkoctfile program>

Changes

  • 0.9.21 Maintenance release. Bugfixes.
  • 0.9.20 Maintenance release. Bugfixes.
  • 0.9.19 Maintenance release. Minor bugfixes and fixes compilation with MATLAB 2014a.
  • 0.9.18 Several bugfixes. Improved documentation, particularly of the covariant detectors. Minor enhancements of the Fisher vectors.
  • 0.9.17 Rewritten SVM implementation, adding support for SGD and SDCA optimisers and various loss functions (hinge, squared hinge, logistic, etc.) and improving the interface. Added infrastructure to support multi-core computations using OpenMP (MATLAB 2009B or later required). Added OpenMP support to KD-trees and KMeans. Added new Gaussian Mixture Models, VLAD encoding, and Fisher Vector encodings (also with OpenMP support). Added LIOP feature descriptors. Added new object category recognition example code, supporting several standard benchmarks off-the-shelf.
  • 0.9.16 Added VL_COVDET. This function implements the following detectors: DoG, Hessian, Harris Laplace, Hessian Laplace, Multiscale Hessian, Multiscale Harris. It also implements affine adaptation, estiamtion of feature orientation, computation of descriptors on the affine patches (including raw patches), and sourcing of custom feature frame.
  • 0.9.15 Added VL_HOG (HOG features). Added VL_SVMPEGASOS and a vastly improved SVM implementation. Added VL_IHASHSUM (hashed counting). Improved INTHIST (integral histogram). Added VL_CUMMAX. Improved the implementation of VL_ROC and VL_PR(). Added VL_DET() (Detection Error Trade-off (DET) curves). Improved the verbosity control to AIB. Added support for Xcode 4.3, improved support for past and future Xcode versions. Completed the migration of the old test code in toolbox/test, moving the functionality to the new unit tests toolbox/xtest.
  • 0.9.14 Added SLIC superpixels. Added VL_ALPHANUM(). Improved Windows binary package and added support for Visual Studio 2010. Improved the documentation layout and added a proper bibliography. Bugfixes and other minor improvements. Moved from the GPL to the less restrictive BSD license.
  • 0.9.13 Fixed Windows binary package.
  • 0.9.12 Fixes vl_compile and the architecture string on Linux 32 bit.
  • 0.9.11 Fixes a compatibility problem on older Mac OS X versions. A few bugfixes are included too.
  • 0.9.10 Improves the homogeneous kernel map. Plenty of small tweaks and improvements. Make maci64 the default architecture on the Mac.
  • 0.9.9 Added: sift matching example. Extended Caltech-101 classification example to use kd-trees.
  • 0.9.8 Added: image distance transform, PEGASOS, floating point K-means, homogeneous kernel maps, a Caltech-101 classification example. Improved documentation.
  • 0.9.7 Changed the Mac OS X binary distribution to require a less recent version of Mac OS X (10.5).
  • 0.9.6 Changed the GNU/Linux binary distribution to require a less recent version of the C library.
  • 0.9.5 Added kd-tree and new SSE-accelerated vector/histogram comparison code. Improved dense SIFT (dsift) implementation. Added Snow Leopard and MATLAB R2009b support.
  • 0.9.4 Added quick shift. Renamed dhog to dsift and improved implementation and documentation. Improved tutorials. Added 64 bit Windows binaries. Many other small changes.
  • 0.9.3 Namespace change (everything begins with a vl_ prefix now). Many other changes to provide compilation support on Windows with MATLAB 7.
  • beta-3 Completes to the ikmeans code.
  • beta-2 Many additions.
  • beta-1 Initial public release.

vlfeat's People

Contributors

achalddave avatar ahmedmagdiosman avatar bfulkers avatar bitonic avatar davnov134 avatar dstoup avatar ffreling avatar guysoft avatar jkerfs avatar kwaugh avatar lenck avatar pmoulon avatar pppoe avatar sarbohan avatar sulc avatar tpfister avatar vedaldi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vlfeat's Issues

[doc] Fisher/gmm: data is expected to be row major

Hi,
The documentation indicates the data matrix has one feature vector per column

[...] data has dimension rows and numData columns.

However, afaic througout fisher.c and gmm.c data access seems to be row major and thus assumes a feature vector per row for example

for(dim = 0; dim < dimension; dim++) {
        TYPE diff = data[i_d*dimension + dim] - means[i_cl*dimension + dim] ;

I would propose to adapt the documentation accordingly :)

SIFT cli results different than the matlab version?

Hi,
when I am using the cli interface to get the SIFT for a custom frame, I get slightly different results from the matlab equivalent process. For the --read-frames=frames.key option in cli, I guess that frames.key should be just a file with my custom frame e.g. 100 100 10 0 like in the matlab case? (with the -1 to account for the c/matlab indexing difference)

Is that assumption wrong?

problem with vl_kmeans. ACCESS VIOLATION

Hi,
when running vl_means, I get the following error:
Can you help me with that? Thanks in advance

MATLAB crash file:C:\Users\GIUSEP~1\AppData\Local\Temp\matlab_crash_dump.5532-1:


      Access violation detected at Tue Sep 23 16:41:09 2014

Configuration:
Crash Decoding : Disabled
Default Encoding : windows-1252
MATLAB Architecture: win64
MATLAB Root : C:\Program Files\MATLAB\R2014a
MATLAB Version : 8.3.0.532 (R2014a)
Operating System : Microsoft Windows 7 Professional
Processor ID : x86 Family 6 Model 30 Stepping 5, GenuineIntel
Virtual Machine : Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
Window System : Version 6.1 (Build 7601: Service Pack 1)

Fault Count: 1

Abnormal termination:
Access violation

Register State (from fault):
RAX = 000000007be553e0 RBX = 0000000000000014
RCX = 000000007be55520 RDX = ffffffff841aac20
RSP = 00000000040271a8 RBP = 000000007ca27860
RSI = 0000000000000000 RDI = 0000000000000140

R8 = 0000000000000140 R9 = 000000000000000a
R10 = 0000000000000028 R11 = 000000007be553e0
R12 = 000000005516c140 R13 = 0000000000000000
R14 = 0000000000002710 R15 = 0000000004028610

RIP = 0000000007f6e480 EFL = 00010287

CS = 0033 FS = 0053 GS = 002b

Stack Trace (from fault):
[ 0] 0x0000000007f6e480 C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251\MSVCR90.dll+00124032 memmove+00000592
[ 1] 0x0000000006e8244e \I-PATH-SBS2008\NewFolderRedirections\GiuseppeLippolis\Documents\MATLAB\vlfeat-0.9.18-bin.tar\vlfeat-0.9.18\toolbox\mex\mexw64\vl_kmeans.mexw64+00009294 mexFunction+00003758
[ 2] 0x00000000fc5ef711 C:\Program Files\MATLAB\R2014a\bin\win64\libmex.dll+00063249 mexRunMexFile+00000129
[ 3] 0x00000000fc5ee1e2 C:\Program Files\MATLAB\R2014a\bin\win64\libmex.dll+00057826 inSwapMexfileReader+00000226
[ 4] 0x00000000fc5ef294 C:\Program Files\MATLAB\R2014a\bin\win64\libmex.dll+00062100 _constructor_lm_mexmaci64+00001620
[ 5] 0x000000000463be4f C:\Program Files\MATLAB\R2014a\bin\win64\m_dispatcher.dll+00048719 Mfh_file::dispatch_fh+00000687
[ 6] 0x000000000463c77a C:\Program Files\MATLAB\R2014a\bin\win64\m_dispatcher.dll+00051066 Mfunction_handle::dispatch+00000810
[ 7] 0x000000000478cdfe C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00577022 MathWorks::MException::MExceptionEnvelope::GetID+00371822
[ 8] 0x00000000048068a7 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+01075367 inEachVisibleName+00016119
[ 9] 0x000000000478ab1a C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00568090 MathWorks::MException::MExceptionEnvelope::GetID+00362890
[ 10] 0x00000000047a446f C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00672879 MathWorks::MException::MExceptionEnvelope::GetID+00467679
[ 11] 0x00000000047a45b8 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00673208 MathWorks::MException::MExceptionEnvelope::GetID+00468008
[ 12] 0x0000000004794a2d C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00608813 MathWorks::MException::MExceptionEnvelope::GetID+00403613
[ 13] 0x000000000479192c C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00596268 MathWorks::MException::MExceptionEnvelope::GetID+00391068
[ 14] 0x00000000047a11c9 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00659913 MathWorks::MException::MExceptionEnvelope::GetID+00454713
[ 15] 0x000000000463c00e C:\Program Files\MATLAB\R2014a\bin\win64\m_dispatcher.dll+00049166 Mfh_file::dispatch_fh+00001134
[ 16] 0x000000000463c77a C:\Program Files\MATLAB\R2014a\bin\win64\m_dispatcher.dll+00051066 Mfunction_handle::dispatch+00000810
[ 17] 0x000000000478cdfe C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00577022 MathWorks::MException::MExceptionEnvelope::GetID+00371822
[ 18] 0x00000000048068a7 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+01075367 inEachVisibleName+00016119
[ 19] 0x000000000478ab1a C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00568090 MathWorks::MException::MExceptionEnvelope::GetID+00362890
[ 20] 0x00000000047a446f C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00672879 MathWorks::MException::MExceptionEnvelope::GetID+00467679
[ 21] 0x00000000047a45b8 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00673208 MathWorks::MException::MExceptionEnvelope::GetID+00468008
[ 22] 0x0000000004794a2d C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00608813 MathWorks::MException::MExceptionEnvelope::GetID+00403613
[ 23] 0x000000000479192c C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00596268 MathWorks::MException::MExceptionEnvelope::GetID+00391068
[ 24] 0x00000000047a11c9 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+00659913 MathWorks::MException::MExceptionEnvelope::GetID+00454713
[ 25] 0x000000000463c00e C:\Program Files\MATLAB\R2014a\bin\win64\m_dispatcher.dll+00049166 Mfh_file::dispatch_fh+00001134
[ 26] 0x000000000463c77a C:\Program Files\MATLAB\R2014a\bin\win64\m_dispatcher.dll+00051066 Mfunction_handle::dispatch+00000810
[ 27] 0x0000000004814a0e C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+01133070 inValidateLoadedObject+00003486
[ 28] 0x000000000481bd95 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+01162645 inResetInterpreter+00005029
[ 29] 0x0000000004820a05 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+01182213 MathWorks::MException::MExceptionEnvelope::Copy+00010997
[ 30] 0x00000000048209d2 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+01182162 MathWorks::MException::MExceptionEnvelope::Copy+00010946
[ 31] 0x0000000004820997 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+01182103 MathWorks::MException::MExceptionEnvelope::Copy+00010887
[ 32] 0x0000000004c0e89c C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+05302428 inMexPutVariable+00004204
[ 33] 0x0000000004c0ebf6 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+05303286 inMexPutVariable+00005062
[ 34] 0x0000000004c0f02e C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+05304366 inMexPutVariable+00006142
[ 35] 0x0000000004c0f36c C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+05305196 inMexPutVariable+00006972
[ 36] 0x0000000004b20161 C:\Program Files\MATLAB\R2014a\bin\win64\m_interpreter.dll+04325729 inEvalCmdWithLocalReturn+00000065
[ 37] 0x000000000417becd C:\Program Files\MATLAB\R2014a\bin\win64\libmwbridge.dll+00048845 mnDebugPrompt+00000109
[ 38] 0x000000000417cfaf C:\Program Files\MATLAB\R2014a\bin\win64\libmwbridge.dll+00053167 mnParser+00000735
[ 39] 0x00000000fd0afae4 C:\Program Files\MATLAB\R2014a\bin\win64\mcr.dll+00195300 mcrInstance::mnParser_on_interpreter_thread+00000036
[ 40] 0x00000000fd093af0 C:\Program Files\MATLAB\R2014a\bin\win64\mcr.dll+00080624 mcr::runtime::setInterpreterThreadToCurrent+00029488
[ 41] 0x00000000fd093b50 C:\Program Files\MATLAB\R2014a\bin\win64\mcr.dll+00080720 mcr::runtime::setInterpreterThreadToCurrent+00029584
[ 42] 0x00000000fab6e026 C:\Program Files\MATLAB\R2014a\bin\win64\uiw.dll+00581670 UIW_IsUserMessage+00000086
[ 43] 0x00000000fab6e705 C:\Program Files\MATLAB\R2014a\bin\win64\uiw.dll+00583429 UIW_SetGLIMUserMsg+00000117
[ 44] 0x00000000fab6e789 C:\Program Files\MATLAB\R2014a\bin\win64\uiw.dll+00583561 UIW_SetGLIMUserMsg+00000249
[ 45] 0x00000000771a87fe C:\Windows\system32\USER32.dll+00165886 GetMenuBarInfo+00000638
[ 46] 0x000000007718f5fb C:\Windows\system32\USER32.dll+00062971 SystemParametersInfoW+00000235
[ 47] 0x0000000077194895 C:\Windows\system32\USER32.dll+00084117 IsProcessDPIAware+00000465
[ 48] 0x00000000773f11f5 C:\Windows\SYSTEM32\ntdll.dll+00332277 KiUserCallbackDispatcher+00000031
[ 49] 0x000000007719908a C:\Windows\system32\USER32.dll+00102538 PeekMessageW+00000186
[ 50] 0x00000000771950fe C:\Windows\system32\USER32.dll+00086270 GetKeyState+00000238
[ 51] 0x0000000077193a6f C:\Windows\system32\USER32.dll+00080495 PeekMessageA+00000087
[ 52] 0x00000000fab1bd4b C:\Program Files\MATLAB\R2014a\bin\win64\uiw.dll+00245067 UIW_SetCurrentDialog+00000731
[ 53] 0x00000000fab6fbe2 C:\Program Files\MATLAB\R2014a\bin\win64\uiw.dll+00588770 ws_FreeSystemFont+00000482
[ 54] 0x00000001000e2ed0 C:\Program Files\MATLAB\R2014a\bin\win64\libmwservices.dll+00995024 services::system_events::PpeDispatchHook::~PpeDispatchHook+00053488
[ 55] 0x00000001000e36a5 C:\Program Files\MATLAB\R2014a\bin\win64\libmwservices.dll+00997029 services::system_events::PpeDispatchHook::~PpeDispatchHook+00055493
[ 56] 0x00000001000e4330 C:\Program Files\MATLAB\R2014a\bin\win64\libmwservices.dll+01000240 services::system_events::PpeDispatchHook::~PpeDispatchHook+00058704
[ 57] 0x00000001000ed4c6 C:\Program Files\MATLAB\R2014a\bin\win64\libmwservices.dll+01037510 sysq::removeProcessPendingEventsHook+00011030
[ 58] 0x00000001000ed7ca C:\Program Files\MATLAB\R2014a\bin\win64\libmwservices.dll+01038282 svWS_ProcessPendingEvents+00000138
[ 59] 0x00000000fd094b6d C:\Program Files\MATLAB\R2014a\bin\win64\mcr.dll+00084845 mcr::runtime::setInterpreterThreadToCurrent+00033709
[ 60] 0x00000000fd094e3b C:\Program Files\MATLAB\R2014a\bin\win64\mcr.dll+00085563 mcr::runtime::setInterpreterThreadToCurrent+00034427
[ 61] 0x00000000fd088b75 C:\Program Files\MATLAB\R2014a\bin\win64\mcr.dll+00035701 mcrInstantiationError::operator=+00003221
[ 62] 0x00000000fd08bea2 C:\Program Files\MATLAB\R2014a\bin\win64\mcr.dll+00048802 mcr_invoke_on_interpreter_thread+00001602
[ 63] 0x00000000fa7e6e5d C:\Program Files\MATLAB\R2014a\bin\win64\MVMLocal.dll+00159325 mvm_server::inproc::LocalFactory::createMVM+00040653
[ 64] 0x00000000051fafaa C:\Program Files\MATLAB\R2014a\bin\win64\mvm.dll+00569258 mvm::detail::SessionImpl::privateSession+00001754
[ 65] 0x00000000051fd32a C:\Program Files\MATLAB\R2014a\bin\win64\mvm.dll+00578346 mvm::detail::SessionImpl::privateSession+00010842
[ 66] 0x00000000051fce85 C:\Program Files\MATLAB\R2014a\bin\win64\mvm.dll+00577157 mvm::detail::SessionImpl::privateSession+00009653
[ 67] 0x0000000140004f79 C:\Program Files\MATLAB\R2014a\bin\win64\MATLAB.exe+00020345
[ 68] 0x0000000140006a07 C:\Program Files\MATLAB\R2014a\bin\win64\MATLAB.exe+00027143
[ 69] 0x00000000772959ed C:\Windows\system32\kernel32.dll+00088557 BaseThreadInitThunk+00000013
[ 70] 0x00000000773cc541 C:\Windows\SYSTEM32\ntdll.dll+00181569 RtlUserThreadStart+00000033

This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.

If this problem is reproducible, please submit a Service Request via:
http://www.mathworks.com/support/contact_us/

A technical support engineer might contact you with further information.

Thank you for your help.

Minor bug spotted in a Matlab test function

Hi,

In v.0.9.13, there is a minor bug in vl_test_pattern.m. It calls vlfeat_root.m twice but this function appears to have been renamed to vl_root.m. Other m-files ought to be checked for the same/similar bugs due to file name changes.

better explanation of how to do vl_quickseg in C api

Hi. I'm trying to achieve what you show in vl_quickseg doing using the C api.
( http://www.vlfeat.org/overview/quickshift.html#tut.qs.multi )

From the docs it is not really clear how that would work using vl_quickshift_get_parents and vl_quickshift_get_dists
Some pointers on how to use the information returned from vl_quickshift_process or a vl_quickseg.c :) would be most appreciated!

Also I couldn't find this anywhere on the site documentation what is the main numeric range vlfeat uses for pixels/color?
Is it 0.0 - 1.0 or 0 - 255 ?

Thanks!
Theo

ps thanks for the library!

run the library from visual studio without having Matlab

Hi!
is it possible to use VLfeat library from VisualStudio without having Matlab? I am trying to but I have several problems. For example I am coding vl_phow (because there is only a matlab file) and I have to use vl_dsift but this seem to depend on mexutils and mex. And this gives an error because I do not have matlab. What am I doing wrong?

Thanks very much!

imopv_sse2.c self-inclusion

Hi there,
is it correct that in lines 29 and 33 of file vl/imopv_sse2.c there are two includes that include the file itself?

Thanks,

Pedro

sift cli - important documentation error

This page:
http://www.vlfeat.org/man/sift.html

says that command line program "sift" produces an ascii file with "5 floats and 128 integers" (5 for the frame, 128 for the descriptor).

However when I run it in ascii mode, each line has 4 floats and 128 integers.
(sames difference when I run it to produce the frame or descriptors separately)

I'm currently trying to read in a binary version of the file, and haven't been able to successfully read the values, because this documentation is apparently out of date (incorrect)?

I can't seem to find any combination of X_sizeof(double)+128_sizeof(unsigned char) or X_sizeof(float)+128_sizeof(unsigned char), where X = {4,5} that will read in a good descriptor (and frame).

(again same problem when I try this for a descriptor or frame only file)

For example for the binary case, I can try to read in the first 4 floats or doubles in python like so:
f = open('image_0001.binsift', 'rb')
struct.unpack('f',f.read(4))
// or
struct.unpack('d',f.read(8))

but the results are gibberish (and certainly don't match the corresponding results in ascii) ... apparently the description in the documentation doesn't match what is being written out by the program.. this should probably be updated for people to be able to use it.

Why the class of covdet output sift descriptor is single?

I both used covdet sift descriptor in vlfeat and the original hesaff code of Dr. Michal Perd’och. Hesaff's output format is unsigned char as Lowe sift.
Why the class of covdet sift descriptor is single? Usually we treat Hesaff as sift with gravity contraint, but in vlfeat if we don't note that covdet's output is single it might cause bugs.

geometry of dsift

as describe in the page
http://www.vlfeat.org/sandbox/matlab/vl_dsift.html
The X coordiante of the center of the first descriptor is therefore at (XMIN + XMIN + 3*SIZE) / 2 = XMIN + 3/2 * SIZE
so the spatial bin is 4x4 or 3x3?
if it is 3x3, then the above description seems correct(as far as I understand)
but the sift feature is always with 4x4 spatial-bin by default, should it be XMIN + 2 * SIZE
SIZE a spatial bin covers SIZE pixels

Compiling using clang-503.0.40 on OSX 10.9.3 and Matlab 2014a

OK, so I was trying to compile vlfeat on OSX 10.9.3 with XCode 5.1.1 and clang-503.0.40 for Matlab 2014a and I encountered two different errors:

1. Unable to find Matlab executable

Symptoms

Running make info yields:

** MATLAB support
MATLAB support disabled (MEX not found)
        mex_src = ./toolbox/aib/vl_aib.c ./toolbox/aib/vl_aibhist.c ...
        mex_tgt = toolbox/mex/mexmaci64/vl_aib.mexmaci64 toolbox/mex/mexmaci64/vl_aibhist.mexmaci64 ...
        mex_dep = toolbox/mex/mexmaci64/vl_aib.d toolbox/mex/mexmaci64/vl_aibhist.d ...
          m_src = ./toolbox/aib/vl_aib.m ./toolbox/aib/vl_aibcut.m ...
          m_lnk = toolbox/noprefix/aib.m toolbox/noprefix/aibcut.m ...
        mex_dll = toolbox/mex/mexmaci64/libvl.dylib
    MATLAB_PATH = 
     MATLAB_EXE = /bin/matlab
            MEX = mex
...

which obviously shows that Matlab couldn't be found.

Running mex on the command line yields:

Not enough input arguments.

So matlab is definitely on the path.

Solution

Run:

make MATLAB_PATH=/Applications/MATLAB_R2014a.app

2. Linker error (-exported_symbols_list)

Symptoms

Detected compiler: clang 50100
Clang does not support OpenMP yet, disabling.
            MEX toolbox/mex/mexmaci64/vl_aib.mexmaci64
Building with 'Xcode with Clang'.
ld: can't open -exported_symbols_list file: /Applications/MATLAB_R2014a.app/extern/lib/$Arch/$MAPFILE
clang: error: linker command failed with exit code 1 (use -v to see invocation)

make: *** [toolbox/mex/mexmaci64/vl_aib.mexmaci64] Error 255

Seems like $Arch and $MAPFILE are not properly set?

Solution

--- make/matlab.mak
+++ make/matlab.mak
@@ -122,7 +122,7 @@
 -arch x86_64 \
 -Wl,-syslibroot,$(SDKROOT) \
 -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET) \
--bundle -Wl,-exported_symbols_list,$(MATLAB_PATH)/extern/lib/\$$Arch/\$$MAPFILE \
+-bundle -Wl,-exported_symbols_list,$(MATLAB_PATH)/extern/lib/maci64/mexFunction.map \
 $(if $(DISABLE_OPENMP),,-L$(MATLAB_PATH)/sys/os/$(ARCH)/) \
 $(call escape,$(STD_LDFLAGS))'
 endif

This also appears on L105 for the 32-bit Mac compilation. Not sure why this isn't set? But setting it explicitly definitely seems to work.

How to plot covdet feature frames using C Api?

I am using the following code to plot the covdet feature frames. But the output is different from vl_plotframe in matlab. Please tell me how can I plot it using C Api?

Code Snippet:
VlCovDetFeature const * feature = (VlCovDetFeature*)vl_covdet_get_features(covdet) ;

for (int i=0;i<numFeatures;i++)
{
    float x = feature[i].frame.y;
    float y = feature[i].frame.x;
    float sigma = feature[i].frame.a11;

   cvDrawCircle(Image, cvPoint(x,y), sigma, CV_RGB( 255,0,0));
}

Possible error in LIOP descriptor

Hi,

During using LIOP descriptor I have faced with problem. Possible bug is in vl_liopdesc_process on the following lines of code (513-516):

      if (ix >= 0 && iy >= 0) { a = patch[ix   + iy * L] ; }
      if (ix <  L && iy >= 0) { b = patch[ix+1 + iy * L] ; }
      if (ix >= 0 && iy <  L) { c = patch[ix   + (iy+1) * L] ; }
      if (ix <  L && iy <  L) { d = patch[ix+1 + (iy+1) * L] ; }

For example, in case of iy == L - 1, the code will cause undefined behaviour.

allocated array size

In vl_ubcmatch.c, line 166, an array of length K1+K2 is allocated. Looking at the code, I believe the length should be K1. Of course allocating more space than required will not lead to errors but appears unnecessary.

vl_ubcmatch.c:166 Pair* pairs_begin = (Pair*) mxMalloc(sizeof(Pair) * (K1+K2)) ;

Warning for EstimateOrientations in vl_covdet

In vl_covdet, when using EstimateOrientations in conjunction with user defined Frames the number of returned descriptors can increase.
This, according to the doc, is given by multiple orientation assignment of some descriptors.

I think would be helpful to raise a warning in such cases.

running phow_caltech101 stops in failure OSX 10.8.5 64

I checked my installation and octave mex make and ran successfully vl_sift_demo_basic. Here is vl_version output:

octave:7> vl_version verbose
VLFeat version 0.9.17
Static config: X64, little_endian, GNU C 40201 LP64, POSIX_threads, SSE2, OpenMP
4 CPU(s): GenuineIntel MMX SSE SSE2 SSE3 SSE41 SSE42
OpenMP: max threads: 4 (library: 4)
Debug: no
SIMD enabled: yes

Initially it was failing for same reason ( error: vl_dsift: I must be a matrix of class SINGLE ) in line 159. So I changed the imread line to the following.

imu = imread(fullfile(conf.calDir, images{selTrainFeats(ii)}));
imu = im2single(imu);
if size(imu,3) > 1, im = rgb2gray(imu) ; else im = imu ; end
im = standarizeImage(im) ;

With this change baseline-vocab.mat is built. But now it fails in vl_phow line 140. Note that it always fails on this image.

kmeans: Elkan: total dist. calc.: 110869672 (3.70 % of Lloyd)
kmeans: K-means terminated in 60.86 s with energy 5.49657e+09
Processing BACKGROUND_Google/image_0001.jpg (0.01 %)
vl_phow: color space: gray
vl_phow: image size: 145 x 144
vl_phow: sizes: [ 4 6 8 10]
error: vl_dsift: I must be a matrix of class SINGLE.
error: called from:
error: /Users/arman/vlfeat/toolbox/sift/vl_phow.m at line 140, column 21
error: /Users/arman/vlfeat/apps/phow_caltech101.m at line 288, column 19
error: /Users/arman/vlfeat/apps/phow_caltech101.m at line 192, column 16

vl_imsmooth problem

Hi,

I got this error when I compute vl_phow

"Attempt to execute SCRIPT vl_imsmooth as a function"

Someone gave this solution:
You are getting this error because your path ".../vlfeat-0.9.16/toolbox/imop/vl_imsmooth.m"
has a higher precedence than " ...../vlfeat-0.9.16/toolbox/mex/mexa64/vl_imsmooth.mexa64"
so you can simply run

pathtool

I tried it, but it doesn't work. Thanks

novi

error while loading shared libraries: libvl.so

I try to use g++ to compile the simplest "Hello World" program of vlfeat. My system is Ubuntu 12.04 LTS 64-bit.

I can compile successfully, but when I run it, it failed with message like this:
"error while loading shared libraries: libvl.so: cannot open shared object file: No such file or directory"

Anyone tell me how to fix it?

Bug in vl_distance_mahalanobis_sq_ non optimised implementation

While porting vlfeat to android I found a bug in the non optimised implementation of vl_distance_mahalanobis_sq_.

Using either the SSE2 or AVX implementation the distance is computed like this :

    T a = *X++ ;
    T b = *MU++ ;
    T c = *S++ ;
    T delta = a - b ;
    acc += (delta * delta) * c;

However in the non optimised implementation is (mathop.c line 460) :

  T const * X_end = X + dimension ;
  T acc = 0.0 ;
  while (X < X_end) {
    T d = *X++ - *MU++ ;
    acc += d * d / (*S++) ;
  }

The division on acc += d * d / (*S++) ; should be replaced by a multiplication to ensure the same behaviour of each version of the function.

Correction is :

  T const * X_end = X + dimension ;
  T acc = 0.0 ;
  while (X < X_end) {
    T d = *X++ - *MU++ ;
    acc += d * d * (*S++) ; // using multiplication instead of division
  }

This bug make the Fischer Vector implementation wrong if you disable any optimisations.

Thanks !

Jérémy

make -n doesn't work

"make -n" is supposed to print what make would do, but not actually do anything. This is currently broken in the dependency-generator. I.e.

cc .... -MF ....

is still executed. This happens because quiet() in the Makefile bypasses make's build mechanisms, and just generating the command to run ends up running the command.

octave linkage error fedora 17 x86_64

With the latest version of vlfeat, building with

make MKOCTFILE=which mkoctfile

then:
cd toolbox
octave

octave:1> vl_setup
octave:2> K=3;
octave:3> data = uint8(rand(2,1000) * 255) ;
octave:4> [C,A] = vl_ikmeans(data,K) ;
error: /home/borsh/bin/lib/vlfeat/toolbox/mex/octave/vl_ikmeans.mex: failed to load: /home/borsh/bin/lib/vlfeat/toolbox/mex/octave/vl_ikmeans.mex: undefined symbol: vl_ikm_new
octave:4>

I managed to get it working with:

LD_PRELOAD=./mex/octave/libvl.so octave

Bug with vl_fisher.c

In vlfeat-0.9.19\toolbox\fisher\vl_fisher, Line 151:

OUT(ENC) = mxCreateNumericMatrix (dimension * numClusters * 2, 1, classID, mxREAL) ;

the returned fisher code will always be one column, no matter how many columns exist in the input feature matrix!

problem with vlad encoding

Dear Sir
There is a function vl_kmeans_quantize(C API),which should work with 5 parameters.However,in your demo code,it works like this: vl_kmeans_quantize(kmeans,indexes,dataToEncode,numDataToEncode);.Is there a problem?

error in vl_demo_svm

When I ran 'vl_demo_svm' in matlab 2014a, it came across an error:

Error using findstr
Input strings must have one row.

Error in ezplot>ezimplicit (line 198)
    if (isa(f, 'inline') && ~isempty(findstr(char(f), '=')))

Error in ezplot (line 153)
                hp = ezimplicit(cax, f{1}, vars, labels, args{:});

Error in vl_demo_svm (line 38)
line = ezplot(eq, [-0.9 0.9 -0.9 0.9]);

Then I went into ezplot.m, changed following line

if (isa(f, 'inline') && ~isempty(findstr(char(f), '=')))

into

if (isa(f, 'inline') && ~isempty(findstr(char(f)', '=')))

And it works fine now.

Should this be a bug? Or I have missed some instruction and thus it leads this happening?

Thanks!

Compiling from sources to use C API

Hi,

I would like to use the C API of your library but I fail to compile the example given in the Documentation.

I tried compiling the library from sources but it fails with the error

/usr/bin/ld: cannot find -liomp5
collect2: error: ld returned 1 exit status
make: *** [toolbox/mex/mexa64/libvl.so] Error 1

Is there a more comprehensive documentation about compiling from sources?
My OS is Ubuntu 14.04 with g++ 4.8.2

Thanks

PS: the same problem is encounter when trying to complie the mex interface for GNu Octave using mkoctfile 3.8.2 (latest stable).

fail to make

operating system: fedora21 x64
matlab: x64

error information

mex: unrecognized option '-glnxa64'
mex: unrecognized option '-O'
mex: unrecognized option '-largeArrayDims'
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
restricted \write18 enabled.
entering extended mode
! I can't find file `"CFLAGS=$CFLAGS -std=c99 -Wall -Wextra -Wno-unused-functio
n -Wno-long-long -Wno-variadic-macros -DNDEBUG -O3 -m64 -D_GNU_SOURCE -fno-stac
k-protector"'.
<*> ... -m64 -D_GNU_SOURCE -fno-stack-protector"
LDFLAGS=$LDFLAGS -m64 -Wl...

(Press Enter to retry, or Control-D to exit)
Please type another input file name:
! I can't find file `"CFLAGS=$CFLAGS -std=c99 -Wall -Wextra -Wno-unused-functio
n -Wno-long-long -Wno-variadic-macros -DNDEBUG -O3 -m64 -D_GNU_SOURCE -fno-stac
k-protector"'.
<*> ... -m64 -D_GNU_SOURCE -fno-stack-protector"
LDFLAGS=$LDFLAGS -m64 -Wl...

(Press Enter to retry, or Control-D to exit)

Undefined function 'eq' for input arguments of type 'cell' in traintest.m

Hi!

I downloaded and installed the Framework according to the Homepage!
The vl_demo script as well as the phow_caltech101.m script is running perfectly.
However, whenever I call the script traintest.m (or if I run the experiments.m file) the following error occurs:

Undefined function 'eq' for input arguments of type 'cell'.

Error in fullfile (line 39)
elseif (f(end)==fs) || (part(1)==fs || (bIsPC && (f(end)=='/' || part(1)=='/'))
)

Error in traintest (line 69)
encoder = trainEncoder(fullfile(imdb.imageDir,imdb.images.name(train)), ...

Error in experiments (line 155)
traintest(...

(error pasted from experiments.m)

I downloaded all the neccesary image files and didn't change anything in the scripts.
I am running Matlab R2012a on a Xubuntu 13.10 64bit platform!

regards

build error in ubuntu 11.10

Hi, I just tried to compile the package and got this weird linker error. Any thought?

$ make
MK toolbox/mex/mexa64/
CC toolbox/mex/mexa64/vl_mser.d
CC toolbox/mex/mexa64/vl_erfill.d
CC toolbox/mex/mexa64/vl_localmax.d
CC toolbox/mex/mexa64/vl_pegasos.d
CC toolbox/mex/mexa64/vl_ihashfind.d
CC toolbox/mex/mexa64/vl_homkermap.d
CC toolbox/mex/mexa64/vl_alldist.d
CC toolbox/mex/mexa64/vl_alldist2.d
CC toolbox/mex/mexa64/vl_binsearch.d
CC toolbox/mex/mexa64/vl_simdctrl.d
CC toolbox/mex/mexa64/vl_binsum.d
CC toolbox/mex/mexa64/vl_ihashsum.d
CC toolbox/mex/mexa64/vl_kdtreebuild.d
CC toolbox/mex/mexa64/vl_samplinthist.d
CC toolbox/mex/mexa64/vl_getpid.d
CC toolbox/mex/mexa64/vl_twister.d
CC toolbox/mex/mexa64/vl_kdtreequery.d
CC toolbox/mex/mexa64/vl_inthist.d
CC toolbox/mex/mexa64/vl_lbp.d
CC toolbox/mex/mexa64/vl_version.d
CC toolbox/mex/mexa64/vl_rodr.d
CC toolbox/mex/mexa64/vl_irodr.d
CC toolbox/mex/mexa64/vl_quickshift.d
CC toolbox/mex/mexa64/vl_imwbackwardmx.d
CC toolbox/mex/mexa64/vl_tpsumx.d
CC toolbox/mex/mexa64/vl_imdisttf.d
CC toolbox/mex/mexa64/vl_imintegral.d
CC toolbox/mex/mexa64/vl_imsmooth.d
CC toolbox/mex/mexa64/vl_dsift.d
CC toolbox/mex/mexa64/vl_ubcmatch.d
CC toolbox/mex/mexa64/vl_siftdescriptor.d
CC toolbox/mex/mexa64/vl_sift.d
CC toolbox/mex/mexa64/vl_aibhist.d
CC toolbox/mex/mexa64/vl_aib.d
CC toolbox/mex/mexa64/vl_ikmeanspush.d
CC toolbox/mex/mexa64/vl_ikmeans.d
CC toolbox/mex/mexa64/vl_hikmeans.d
CC toolbox/mex/mexa64/vl_kmeans.d
CC toolbox/mex/mexa64/vl_hikmeanspush.d
MK bin/glnxa64/
MK bin/glnxa64/objs/
CC bin/glnxa64/test_vec_comp.d
CC bin/glnxa64/test_threads.d
CC bin/glnxa64/test_stringop.d
CC bin/glnxa64/test_rand.d
CC bin/glnxa64/test_qsort-def.d
CC bin/glnxa64/test_nan.d
CC bin/glnxa64/test_mathop.d
CC bin/glnxa64/test_mathop_abs.d
CC bin/glnxa64/test_imopv.d
CC bin/glnxa64/test_host.d
CC bin/glnxa64/test_heap-def.d
CC bin/glnxa64/test_getopt_long.d
CC bin/glnxa64/sift.d
CC bin/glnxa64/mser.d
CC bin/glnxa64/aib.d
CC bin/glnxa64/objs/stringop.d
CC bin/glnxa64/objs/sift.d
CC bin/glnxa64/objs/rodrigues.d
CC bin/glnxa64/objs/random.d
CC bin/glnxa64/objs/quickshift.d
CC bin/glnxa64/objs/pgm.d
CC bin/glnxa64/objs/pegasos.d
CC bin/glnxa64/objs/mser.d
CC bin/glnxa64/objs/mathop_sse2.d
CC bin/glnxa64/objs/mathop.d
CC bin/glnxa64/objs/lbp.d
CC bin/glnxa64/objs/kmeans.d
CC bin/glnxa64/objs/kdtree.d
CC bin/glnxa64/objs/imopv_sse2.d
CC bin/glnxa64/objs/imopv.d
CC bin/glnxa64/objs/ikmeans.d
CC bin/glnxa64/objs/host.d
CC bin/glnxa64/objs/homkermap.d
CC bin/glnxa64/objs/hikmeans.d
CC bin/glnxa64/objs/getopt_long.d
CC bin/glnxa64/objs/generic.d
CC bin/glnxa64/objs/dsift.d
CC bin/glnxa64/objs/array.d
CC bin/glnxa64/objs/aib.d
CC bin/glnxa64/objs/aib.o
CC bin/glnxa64/objs/array.o
CC bin/glnxa64/objs/dsift.o
CC bin/glnxa64/objs/generic.o
CC bin/glnxa64/objs/getopt_long.o
CC bin/glnxa64/objs/hikmeans.o
CC bin/glnxa64/objs/homkermap.o
CC bin/glnxa64/objs/host.o
CC bin/glnxa64/objs/ikmeans.o
CC bin/glnxa64/objs/imopv.o
CC bin/glnxa64/objs/imopv_sse2.o
CC bin/glnxa64/objs/kdtree.o
CC bin/glnxa64/objs/kmeans.o
vl/kmeans.c:546:11: warning: variable ‘allDone’ set but not used [-Wunused-but-set-variable]
vl/kmeans.c:546:11: warning: variable ‘allDone’ set but not used [-Wunused-but-set-variable]
CC bin/glnxa64/objs/lbp.o
CC bin/glnxa64/objs/mathop.o
CC bin/glnxa64/objs/mathop_sse2.o
CC bin/glnxa64/objs/mser.o
CC bin/glnxa64/objs/pegasos.o
CC bin/glnxa64/objs/pgm.o
CC bin/glnxa64/objs/quickshift.o
CC bin/glnxa64/objs/random.o
CC bin/glnxa64/objs/rodrigues.o
CC bin/glnxa64/objs/sift.o
CC bin/glnxa64/objs/stringop.o
CC bin/glnxa64/libvl.so
CC bin/glnxa64/aib
******* Offending Command:
cc '-std=c99' '-Wall' '-Wextra' '-Wno-unused-function' '-Wno-long-long' '-Wno-variadic-macros' '-I.' '-DNDEBUG' '-O3' '-lm' '-Wl,--rpath,$ORIGIN/' '-Lbin/glnxa64' '-lvl' 'src/aib.c' '-o' 'bin/glnxa64/aib'
******* Error Code: 1
******* Command Output:
/tmp/cclyk1YX.o: In function main': aib.c:(.text.startup+0x43d): undefined reference tovl_aib_new'
aib.c:(.text.startup+0x448): undefined reference to vl_aib_process' aib.c:(.text.startup+0x47d): undefined reference tovl_aib_delete'
collect2: ld returned 1 exit status
make: *** [bin/glnxa64/aib] Error 1

LBP unit test seems produce incorrect result

Hi Sir,
I downloaded the VLFEAT 0.9.17 package and wanted to learn LBP algorithem. I found there is a Matlab LBP test program in "vlfeat-0.9.17.tar\vlfeat-0.9.17\vlfeat-0.9.17\toolbox\xtest\vl_test_lbp.m". But the test result seems not correct.
In function "test_one_on"
function test_one_on()
I = {} ;
I{1} = [0 0 0 ; 0 0 1 ; 0 0 0] ;
I{2} = [0 0 0 ; 0 0 0 ; 0 0 1] ;
I{3} = [0 0 0 ; 0 0 0 ; 0 1 0] ;
I{4} = [0 0 0 ; 0 0 0 ; 1 0 0] ;
I{5} = [0 0 0 ; 1 0 0 ; 0 0 0] ;
I{6} = [1 0 0 ; 0 0 0 ; 0 0 0] ;
I{7} = [0 1 0 ; 0 0 0 ; 0 0 0] ;
I{8} = [0 0 1 ; 0 0 0 ; 0 0 0] ;

for j=0:7
h = vl_lbp(single(I{j+1}), 3) ;
h = find(squeeze(h))
vl_assert_equal(h, j * 7 + 1) ;
end

I found in vllbp.c, this LBP object is created with transposed feature. For input array [0 0 0 ; 0 0 1 ; 0 0 0] , it assume the LBP value equal to 1. Abviously, the LBP value before quantizaiton is 00000001b, if the matrix is transposed, the LBP value before quantization is 00000100. The LBP value after quantizaiton is 14 which is not consistent with your result.
Could you check it?

Thank you,.
Adam

[MATLAB] vl_fisher always return nx1 vector although numData >1

Hi

I run the following code in MATLAB:

numFeatures = 5000 ;
dimension = 2 ;
data = rand(dimension,numFeatures) ;
numClusters = 30 ;
[means, covariances, priors] = vl_gmm(data, numClusters);
numDataToBeEncoded = 1000;
dataToBeEncoded = rand(dimension,numDataToBeEncoded);
encoding = vl_fisher(dataToBeEncoded, means, covariances, priors);
size(encoding)

The size of encoding is 120x1 , although dataToBeEncoded is 2x1000.
I assume the correct dimension of encoding should be 120x1000.

I looked at the source code of vl_fisher.c , it seems OUT(ENC)'s has only 1 column regardless of numData.

image

Use of uninitialized memory when computing LIOP descriptor

In liop.c:vl_liopdesc_process memset is called as:

memset(desc,0,self->dimension);

but should be called like

memset(desc,0,sizeof(float)*self->dimension);

This means that currently the last three quarters of the descriptor entries are currently never initialized to zero and hence are biased by garbage memory and invalid.

vl_homogeneouskernelmap_evaluate_T does not always store 2*order+1 dimensional vector

Note: I just reviewed the source code and this was already fixed.

Example:
With order set to 3, inputting 0 will only set 0 for the first 4 elements to dest instead of all 2*3+1=7 elements as per the documentation.

VlHomogeneousKernelMap* map;
float* dest = new float[7];

map = vl_homogeneouskernelmap_new(VlHomogeneousKernelIntersection,
          1.0,         // Standard kernel
          (vl_size) 3,
          -1.0,        // Default
          VlHomogeneousKernelMapWindowRectangular);

vl_homogeneouskernelmap_evaluate_f(map, dest, (vl_size) 1, 0.0);

cout << dest[4]; // Not necessarily 0

Possible fix:
homkermap.c Line 471: Change j <= self->order to j < 2*self->order + 1

.SIFT file - missing of length of the descriptor

Hi,
I am running the command-line SIFT implementation of the VLFEATROOT project on a macos64 (Mavericks) with pgm files I am able to have usable .sift as result's file BUT the problem is that it does not provide at his top line the numbers of features & length of the descriptor.
I really need these values for the completion of my sift descriptors software.

Thank you very much for your help.

vl_dsift crashes with divide by zero

line 275 in vl_dsift.c dims [1] = numFrames ;
if image produces 0 features. dims is then used for creating arrays.

In runs of hundred of images, it is quite likely to run in to an image with zero sift features ( although that is a feature by itself :) )

-Arman

Name of vl_gmm_get_loglikelyhood mismatch

Hi guys,

i was trying to use the function vl_gmm_get_loglikelyhood and i realized that there is a small mismatch between the gmm.h and the gmm.c files.

While in gmm.h is defined as: "vl_gmm_get_loglikelyhood", in gmm.c is defined as "vl_gmm_get_loglikelihood".

So, whenever you tried to call the function with any of the names it returns error: vlfeat/libvl.so: undefined symbol: vl_gmm_get_loglikelihood.

I noticed it, cause i am using the pre-compiled version 0.9.18 of the library obtained from:
http://www.vlfeat.org/download/vlfeat-0.9.18-bin.tar.gz

Best regards, Luis Tobias.

VLAD & FV mAP is low

I have use vlad & fv to complish a vehilce retrieval mission, but all of their precision is low(about 20%),
so i code the vlad by myself,with the same vocabulary ,the precision is 90% ,is there a bug in VLAD or FV? thank you!!

vl_pr and vl_roc are dependent on data point ordering when scores are equal

An example in which output AP is wrong: when
(1) data points are ordered as positives first, then negatives
(2) all data points are assigned exactly the same score,
AP returned is 1.

Source of error: vl_pr and vl_roc both use the vl_tpfp helper function. vl_tpfp sorts the scores in descending order. Unfortunately the rankings assigned by the matlab sort function when scores are equal are meaningless. In fact, the ranks when all scores are equal are the same as the indices of the data points.=> because the data points are ordered positives first, the rankings match exactly, returning the perfect AP score of 1.

Scores returned by vl_pr and vl_roc must not depend on the ordering of the data points. One way to fix this could be to find unique scores in the data and sort those alone, and then map those rankings back to all the data points.

Possible performance improvement for ucbmatch

In the vl_ucbmatch.c file, I inserted code to exit the loop early if there's a second_best already and the current accumulation has become greater than the second_best.
This code results in a performance improvement cutting the matching time in half for my images of 4000x3000.

process without matching: 23 secs
process with matching and not exiting early: 63 secs
process with matching and this early exit: 43 secs

        for(bin = 0 ; bin < ND ; ++bin) {                               
            int delta =                                         
                ((int) L1_pt[bin]) -                              
                ((int) L2_pt[bin]) ;                              
            acc += delta*delta ;

            if ( acc > second_best ) {
                break;
            }
        }   

Bug in C API vlad document

The demo code writes
"
for(i = 0; i < numDataToEncode; i++) {
assignments[i + numCenters * indexes[i]] = 1.;
}
"
But I think it should be

"
for(i = 0; i < numDataToEncode; i++) {
assignments[i + numDataToEncode * indexes[i]] = 1.;
}
"

install with octave: *.d files end up in the VLFeat root directory

Hi,
I'm having trouble installing vlfeat to use with Octave. I've followed the Install instructions in the README but ll *.d files end up in the VLFeat root instead of toolbox/mex/octave/mexa64. Therefore I get a bunch of errors similar to the following:

mv: cannot stat ‘./toolbox/geometry/vl_irodr.d’: No such file or directory
      MKOCTFILE toolbox/mex/octave/mexa64/vl_rodr.d

Any suggestions please? I'm not sure where in the Makefiles the files should have been generated into toolbox/mex/octave/mexa64/.

Mac OS X 10.9 (Mavericks) linker error

Hello,

When compiling vlfeat-0.9.17 on Mac OS X 10.9, I get the linker error copied below regarding missing libgomp. It appears that Xcode 5 does not support OpenMP.

As a workaround, I can successfully build using gcc-4.8 installed using macports,then editing make/dll.mak and make/matlab.mak to remove the offending option -mmacosx-version-min.

make CC=gcc-mp-4.8 

Thanks for a great library for the community!

******* Offending Command:
gcc '-m64' '-dynamiclib' '-undefined' 'suppress' '-flat_namespace' '-install_name' '@loader_path/libvl.dylib' '-compatibility_version' '0.9.17' '-current_version' '0.9.17' '-isysroot' '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk' '-mmacosx_version_min=10.4' '-lm' '-lpthread' '-m64' '-fopenmp' 'bin/maci64/objs/aib.o' 'bin/maci64/objs/array.o' 'bin/maci64/objs/covdet.o' 'bin/maci64/objs/dsift.o' 'bin/maci64/objs/fisher.o' 'bin/maci64/objs/generic.o' 'bin/maci64/objs/getopt_long.o' 'bin/maci64/objs/gmm.o' 'bin/maci64/objs/hikmeans.o' 'bin/maci64/objs/hog.o' 'bin/maci64/objs/homkermap.o' 'bin/maci64/objs/host.o' 'bin/maci64/objs/ikmeans.o' 'bin/maci64/objs/imopv.o' 'bin/maci64/objs/imopv_sse2.o' 'bin/maci64/objs/kdtree.o' 'bin/maci64/objs/kmeans.o' 'bin/maci64/objs/lbp.o' 'bin/maci64/objs/liop.o' 'bin/maci64/objs/mathop.o' 'bin/maci64/objs/mathop_avx.o' 'bin/maci64/objs/mathop_sse2.o' 'bin/maci64/objs/mser.o' 'bin/maci64/objs/pgm.o' 'bin/maci64/objs/quickshift.o' 'bin/maci64/objs/random.o' 'bin/maci64/objs/rodrigues.o' 'bin/maci64/objs/scalespace.o' 'bin/maci64/objs/sift.o' 'bin/maci64/objs/slic.o' 'bin/maci64/objs/stringop.o' 'bin/maci64/objs/svm.o' 'bin/maci64/objs/svmdataset.o' 'bin/maci64/objs/vlad.o' '-o' 'bin/maci64/libvl.dylib'
******* Error Code: 1
******* Command Output:
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [bin/maci64/libvl.dylib] Error 1

Issue with running vl_sift.m

When I go through the tutorial on vl_sift on the site, I get the error: "Attempt to execute SCRIPT vl_sift as a function". Is this a common installation error or something?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.