This research consisted in improving the computational efficiency, improving performance and looking at more specific details at why this descriptor is able to obtain results. We make both the descriptor code and the dataset presented in the paper publicly available. For more details please refer to the journal paper.
The DaLI is a descriptor built by embedding the image patch as a surface and then using the Heat Kernel Signature to calculate the heat diffusion along the surface. In order to become invariant to illumination changes, logarithmic sampling along with the Fast Fourier Transform is employed. A flowchart of how the descriptor and its compressed (PCA) variant is constructed is shown above. The percentages indicate the computation time spent on each step. An example of a DaLI descriptor is shown below.
- Frequency 1
- Frequency 2
- Frequency 3
- Frequency 4
- Frequency 5
- Frequency 6
We make the full dataset that appears in the paper available to anyone who wishes to use it. We include the code to reproduce the main figures in the paper. This dataset consists of 192 unique 640x480 grayscale images corresponding to 12 different objects. Points of interest obtained by the Difference of Gaussians (DoG) detector are provided and matched across different pairs of images. We provide three different evaluations:
- Deformation only (
- Illumination only (
- Both deformation and illumination (
To reproduce the results in the paper start by downloading and unpacking the dataset:
wget http://hi.cs.waseda.ac.jp/~esimo//data/dali_dataset.tar.bz2 tar xvjf dali_dataset.tar.bz2 cd dali_dataset
Next run matlab and from matlab call:
test_both % or test_deform, test_illum depending on what you wish to evaluate
This will extract the patches and start evaluating different descriptors. However, it
will not evaluate the DaLI descriptor as it is unable to be run under matlab due to
library conflicts. In order to also compute the DaLI descriptor please run the same
command from octave after uncommenting
init_final_desc.m. Note that once the results are obtained they can also be
loaded under matlab.
In order to calculate the DaLI-PCA descriptor it is necessary to compute the DaLI
descriptor first, then run the
dalipca.m script from matlab. This will
generate the cached descriptor files for the descriptor. It is then possible to uncomment
init_final_desc.m which will allow
obtaining results with both matlab and octave.
To summarize all the steps:
- Download and unpack dataset
- Run test_both, test_illum and test_deform from matlab
As we know this is fairly complicated we also provide the results
files for all the descriptors, which allow you to directly uncomment all the
init_final_desc.m directly after unpackaging this. It will
also allow you to avoid having to spend many hours computing descriptors.
To compare against your descriptor, please look at
descriptors/main_desc_dali.m as an example of how to create the descriptor
structure. It is then as simple as adding a new line to
All results in the paper were obtained on a x86_64 machine running Ubuntu 12.04 LTS using Matlab 18.104.22.1689 (R2012a) and Octave 3.2. On other platforms and software versions results may differ from the paper.
The GIH descriptor is not provided as the only available implementation can only be run on the 32 bit Windows operating system.
There is an additional deformation level that does not appear in the paper and is disabled by default.
We have also evaluated the descriptor on two real world sequences taken from:
Francesc Moreno-Noguer, Pascal Fua Stochastic Exploration of Ambiguities for Nonrigid Shape Recovery IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013
The results are shown in the paper. As a supplement to the paper we show the full sequence with the relative improvement of DaLI over DAISY below:
Do not hesitate to contact me for any questions and inquiries.