@Author: Huynh Manh @Parallelization of Sparse Coding and Dictionary Learning for multi-target tracking @CSCI 7551 - Parallel Distributed System @Fall 2016 Brief Description: Implementation of parallelized spase coding and dictionary learning is a part of my bigger application of multi-target tracking. In this code, I tried to parallelize sparse coding algorithm (which is mainly based on SVD) and sparse coding (using basic matching pursuit algorithm). I've basically done parallel implementation of basic matching pursuit and calculating Error Matrix in Dictionary Update. There are some parts (working on independent atom sets, and parallelization of SVD) havent been completed. Enviroments: - Code can be compiled and run on Dozer. Install: - Download the zipped file containing the codes.The main file for GPU KSVD implementation names kSVD_gpu.cpp, serial version is kSVD.cpp. - Download the dataset consisting 4 folders: + det (detection file), + gt(groundtruth of human detection) + img1 (sequence of videos) + MOG2_BG_new: background subtraction images - Extract code and dataset into 2 different folders. Before compilation: - open main.cpp and change the path to detection file(line 47), image files(line 48), background subtraction files (line 49) - without changing this, there will be error when running the code. - turning on X11-forwading, IF you dont do this, there will be error too. How to compile: //I used cmake to compile the code, for cmake this is the procedure. //CPU version, in main.cpp (line 27), set cpu_version = 1, set gpu_version = 0 (line 26) 1. Create a new "build" folder in the same folder with main.cpp 2. cd build 3. cmake ../ 4. make After this step, you will see executable file "main" How to run 1. ./main //GPU version, in main.cpp (line 26), set gpu_version = 2, set cpu_version = 0(line 27). Repeate step 1 - 4 for compiling and run as simillar as cpu_version. Run with different parameters: 1. Change histogram bins: in tracking.cpp (line 363) change the value of HistSize . 2. Change the sparsity In main.cpp, change the value of sparsity (line 28) The results will display the frame number, dictionary size, and run time for each frame. Please see the report file for an sample run . For any errors, please dont hesitate to email me at huynh.manh@ucdenver.edu.