Tracking social groups within and across cameras
Matlab C++ Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
detections
utils
DEMO_data.mat
DEMO_test.m
DEMO_train.m
MC_groundtruth.txt
MITRE_score.m
README.md
appearance_features_[1 2 4 5].mat
breakDownGTintoWindows.m
computeSiftScores.m
compute_pairwise_features.m
createConsistentSolution.m
createCorrelationMatrix.m
detectUnfeasibleAssociations.m
extractHSVcolorHistograms.m
extractSiftDescriptor.m
featureMap.m
groups_GT_def.mat
hammingLoss.m
load_data.m
load_data_from_window.m
lossM.m
makePrediction.m
modifyFeasibilityWithPreviousPrediction.m
oracleCall.m
precomputeAppearanceFeatures.m
precomputeAverageTrajectory.m
precomputeCameraShifts.m
precomputeSiftDescriptors.m
prepareForScoreTrackingOnly.m
previewResults.m
sift_features_[1 2 4 5].mat
trainFW.m
trajectory_features_[1 2 4 5].mat

README.md

Tracking Social Groups Within and Across Cameras

Groups are considered by modern sociological crowd theories the atomic entities where social processes arise and develop. To detect groups both physical and sociological cues need to be taken into account. While physical evidence is observable even at a frame-wise level, sociological aspects might need a few seconds to unfold. As a consequence, recent methods provide group detections over short temporal windows. Working with temporal windows, on the other hand, introduces a consistency problem from window to window that can be neatly formulated as a tracking problem.

The proposed solution formulates the group tracking problem as a supervised Correlation Clustering (CC) problem. Eventually, every cluster should contain all and only observation refering to the same group. A Structural SVM (SSVM) classifier is used to learn a proper similarity measure balancing the contribution of different features (HSV, SIFT, ...), leaving the algorithm with no parameters to tune. Multi-Camera group tracking is handled inside the framework by adopting an orthogonal feature encoding allowing the classifier to learn different feature weights for inter- and intra-cameras associations.

Overview of the inference procedure

  1. The image on the left pictures a few example of groups detected over short temporal windows. These groups need to be tracked both in the same camera and across cameras.
  2. The image on the right models an instance of the problem: a set of group detections is observed in different cameras. For each pair of detection we can compute a correlation W (dashed lines) and the CC will select a subset of associations to form clusters (solid lines).

The clustering solution depends on the way correlations are defined. We let the SSVM learn a correlation score which linearly combine the contribution of different features. Details about the learning procedure can be found in the paper.

How to run the code

It's actually pretty easy. There are a few dependencies needed by the code: mexopencv by Kota Yamaguchi, gurobi optimizer here and vlfeat by Andrea Vedaldi. Once dependecies have been installed, you can start from the DEMO_test.m:

  • download the code
  • look for the DEMO_test.m file
  • hit run!

This code will make inference on the test data and display results, features and learning is already precomputed.

Once you are familiar with the testing, you can also try to retrain the model using the same or different data/feature set. This can be done throuh DEMO_train.m. As before, just hit run! If everything is fine, the training should yeld something like this:

Visualization requires the dataset images, which will be released shortly. In the mean time you can still train/test the algorithm and see the results on the youtube video (link below).