FAQ » History » Version 15

Ivan Damnjanovic, 2011-03-30 04:41 PM

1 1 Ivan Damnjanovic
h1. FAQ
2 1 Ivan Damnjanovic
3 1 Ivan Damnjanovic
h2. Q1: What is SMALLbox?
4 1 Ivan Damnjanovic
5 2 Ivan Damnjanovic
*A1:* *SMALLbox* is an evaluation framework for processing signals using adaptive sparse structured representations. SMALLbox is built within FP7 EU FET project called "SMALL" that is exploring new provably good methods to obtain inherently data-driven sparse models, which are able to cope with large-scale and complicated data. The main focus of research in the area of *sparse representations* is in developing reliable algorithms with provable performance and bounded complexity. There exist many applications for which it was proven beneficial to sparsely represent the data in some transform domain (i.e. "dictionary"). Moreover, the success of sparse models heavily depends on the choice of a “dictionary” to reflect the natural structures of a class of data. *Dictionary learning for sparse representation* deals with inferring such a dictionary from training data and is a key to the extension of sparse models for new exotic types of data.
6 2 Ivan Damnjanovic
SMALLbox provides an easy way to evaluate these methods against state-of-the art alternatives in a variety of standard signal processing problems. This is achieved trough a unifying interface that enables a seamless connection between the three types of modules: problems, dictionary learning algorithms and sparse solvers. In addition, it provides interoperability between existing state-of-the-art toolboxes. 
7 2 Ivan Damnjanovic
As an open source MATLAB toolbox, the SMALLbox can be seen as not only as a evaluation and educational tool, but as a tool for reproducible research in the sparse representations research community.
8 1 Ivan Damnjanovic
9 3 Ivan Damnjanovic
h2. Q2: How to obtain SMALLbox?
10 2 Ivan Damnjanovic
11 9 Ivan Damnjanovic
The SMALLbox project is maintained by people at the "Centre for Digital Music at SEECS, Queen Mary University of London":http://www.elec.qmul.ac.uk/digitalmusic/. To access the SMALLbox project page follow the link bellow:
12 9 Ivan Damnjanovic
13 9 Ivan Damnjanovic
https://code.soundsoftware.ac.uk/projects/smallbox/
14 9 Ivan Damnjanovic
15 10 Ivan Damnjanovic
If you want to try the latest stable public release please go to *Downloads* section. If you want to check the latest development and to contribute to the project then please first register to soundsoftware.ac.uk following the link in the upper right corner of the page. 
16 10 Ivan Damnjanovic
The code repository hosted at soundsoftware.ac.uk is using Mercurial distributed version control, so you will need mercurial installed on your system.  If you are new to mercurial the easiest way to start is to install EasyMercurial, which you can find at https://code.soundsoftware.ac.uk/projects/easyhg.
17 10 Ivan Damnjanovic
To check out SMALLbox repository please hg clone the following URL, or provide this URL to your preferred Mercurial client (e.g. EasyMercurial):
18 10 Ivan Damnjanovic
19 11 Ivan Damnjanovic
https://code.soundsoftware.ac.uk/hg/smallbox
20 9 Ivan Damnjanovic
21 1 Ivan Damnjanovic
22 3 Ivan Damnjanovic
h2. Q3: How to install SMALLbox?
23 1 Ivan Damnjanovic
24 12 Ivan Damnjanovic
To install the toolbox run the script *SMALLboxSetup.m* from the MATLAB command prompt and follow the instructions. *SmallboxSetup.m* is in the root SMALLbox directory. The SMALLbox installation involves the automatic download of several existing toolboxes. These are described in Q5. Due to the automatic download of toolboxes you must have an active internet connection.
25 12 Ivan Damnjanovic
Please note that within the toolboxes are several MEX components that must be compiled. If you do not already have MEX setup, run "mex -setup" or type "help mex" in the MATLAB command prompt.
26 12 Ivan Damnjanovic
Once installed, there are two optional demo functions that can be run. Further information can be found in the README.txt in the main SMALLbox directory.
27 1 Ivan Damnjanovic
28 1 Ivan Damnjanovic
29 3 Ivan Damnjanovic
h2. Q4: What are the Problem, solver, and DL structures in SMALLbox?
30 1 Ivan Damnjanovic
31 13 Ivan Damnjanovic
There are three main structures in SMALLbox that describe common parts of problem solving using sparse representation and dictionary learning - *Problem*, *DL* and *solver* structures.
32 13 Ivan Damnjanovic
33 15 Ivan Damnjanovic
The *Problem* structure defines all necessary aspects of a problem to be solved. To be compatible with the SPARCO, it needs to have five fields defined prior to any sparse representation of the data: *A* – a matrix or operator representing dictionary in which signal is sparse, *b* – a vector or matrix representing signal or signals to be represented, *reconstruct* – a function handle to reconstruct the signal from coefficients, *signalSize* – the dimension of the signal, *sizeA* – if matrix A is given as an operator the size of the dictionary needs to be defined in advance. Other fields that further describe the problem, which are useful for either reconstruction of the signal or representation of the results, might be generated by the SPARCO generateProblem function or the SMALLbox problem functions. The new problems implemented in the SMALLbox version 1.0 are: Image De-noising, Automatic Music Transcription and Image Representation using another image as a dictionary. In the case of a dictionary learning problem, fields *A* and *reconstruct* are not defined while generating the problem, but after the dictionary is learned and prior to the sparse representation. In this case, field *b* needs to be given in matrix form to represent the training data and another field *p* defining the number of dictionary elements to be learned needs to be specified.
34 13 Ivan Damnjanovic
35 1 Ivan Damnjanovic
36 3 Ivan Damnjanovic
h2. Q5: What is included in SMALLbox?
37 1 Ivan Damnjanovic
38 1 Ivan Damnjanovic
39 3 Ivan Damnjanovic
h2. Q6: How do I contribute?
40 1 Ivan Damnjanovic
41 1 Ivan Damnjanovic
42 3 Ivan Damnjanovic
h2. Q7: I want to add my solver to SMALLbox. How?
43 1 Ivan Damnjanovic
44 1 Ivan Damnjanovic
45 3 Ivan Damnjanovic
h2. Q8: I want to add my dictionary learning algorithm to SMALLbox. How?
46 1 Ivan Damnjanovic
47 3 Ivan Damnjanovic
48 3 Ivan Damnjanovic
h2. Q9: I want to add a new sparse representation problem. How? 
49 3 Ivan Damnjanovic
50 3 Ivan Damnjanovic
h2. Q10: I want to add a new problem for dictionary learning. How?