*************************************************************************************************
* Matlab source codes and demo for incremental accelerated kernel discriminant analysis (IAKDA) *
* Author: Nikolaos Gkalelis, Information Technologies Institute (ITI), Centre for Research and	*
		Technology Hellas (CERTH), Thessaloniki, Greece 										*														*
* Released: September 2017          	                                						*
*************************************************************************************************

The Matlab functions in this folder implement IAKDA and demonstrate its use in an incremental 
learning problem using the yahoo dataset. IAKDA is described in the paper:
	N. Gkalelis, V. Mezaris, "Incremental accelerated kernel discriminant analysis",
	Proc. ACM Multimedia 2017, Mountain View, CA, USA, October 2017.

[Usages:]
The functions "iakdaInit.m" and "iakdaUpdate.m" implement IKDA. Specifically, "iakdaInit.m" is
used to initialize the dimensionality reduction (DR) matrix, while "iakdaUpdate.m" updates this
matrix every time a new chunk of data is provided.

IKDA requires three parameters to be set: the kernel type and kernel parameter(s), and the
regularization parameter for the kernel matrix of the training data.

The function "demo_iakda.m" demonstrates the use of IKDA in an incremental learning
scenario using 10 training partitions and an independent testing partition of the yahoo set. The
feature vectors in this dataset contain the 4096 neurons of the trained CNN provided in [1], [2].
Learning and classification in the DR subspace provided from IKDA is performed using a linear SVM
(LSVM). Specifically, the LSVM implementation provided in the fitcsvm function of Matlab is used.

Additionally, the following set of auxiliary functions are used:
- "kernelize.m": Compute the kernel matrix of training/testing data
- "sqdistance.m": Compute the square Euclidean or Mahalanobis distances between vector pairs.
- "normFea.m": Performs the normalization of feature vectors (currently the unity length or zero
mean normalization are implemented)
- "sortFeaLabels.m": Sorts a set of labelled observations according to their ground truth labels.
- "cmpAp.m": Computes the average precision using the predicted scores and ground truth labels.

[1] T. Tommasi, T. Tuytelaars, "A Testbed for Cross-Dataset Analysis", TASK-CV Workshop, ECCV 2014.
[2] T. Tommasi, N.Patricia, B. Caputo, T. Tuytelaars, "A Deeper Look at Dataset Bias", GCPR 2015.

[Restrictions:]
Documents using the matlab codes of IKDA must reference the following paper: 
    N. Gkalelis, V. Mezaris, "Incremental accelerated kernel discriminant analysis",
	Proc. ACM Multimedia 2017, Mountain View, CA, USA, October 2017.
	
The copyright and license information for this software are detailed in the file
license_Nikolaos_Gkalelis.txt.

This software re-uses also certain pre-existing parts of code. Additional licenses apply to these
software parts. For details on licence and copyrights concerning these software parts see files
license_Michael_Chen.txt, sqdistance.m.

[Informations:]
Any comments and questions can be sent to gkalelis@iti.gr
