-
Notifications
You must be signed in to change notification settings - Fork 14
Multiple Tracking Results Comparison
Tracking Results Comparison is intended to facilitate these use cases:
- You track some movies with two or more trackers, say {MDN, DeepLabCut, and Unet}. You export the results to .trk files. This may occur over some period of time. How do the tracking results compare?
- You track some movies with a single tracker, but with varying parameters or pre/postprocessing. For instance, you might vary the number of training iterations or similar. Again, you would like to visually browse the effects of this sweep.
APT currently supports these workflows to some extent using Imported Tracking. However, currently there is at most one set of Imported Tracking results; meanwhile simultaneously visualizing "live"/temporary tracking results for multiple trackers is not supported. (Even if this were supported, it is not clear how parameter sweeps would be handled.)
This functionality can be thought of as enabling an arbitrary number of imported tracking results, grouped by identifiers.
It is assumed that you have trained a tracker(s) and tracked movies, generating/exporting a set of .trk files. Each tracked set shares some characteristic: tracker type, parameter setting in a sweep, etc. Tracked sets need not include all movies in a project. Two tracked sets also do not need to contain precisely the same subset of movies to be compared to each other. APT requires a simple string identifier for each set.
% Set 1. Trained for a long time (say). id: 'longTrain'
/path/to/mov1/results_long.trk
/path/to/mov2/results_long.trk
% Set 2. Trained for a short time (say). id: 'shortTrain'
/path/to/mov1/results_short.trk
/path/to/mov2/results_short.trk
% Add/import tracking results to APT project.
% Let's say APT currently has movie 1 open
lObj.trackResAddCurrMov('longTrain','/path/to/mov1/results_long.trk');
lObj.trackResAddCurrMov('shortTrain','/path/to/mov1/results_short.trk');
% ... Navigating around APT will now show both sets of tracking results ...
% Change some cosmetics
lObj.trackResSetMarkerCosmetics('longTrain','Marker','.','MarkerSize',18);
% Compare differences between the two sets with Navigation Table
lObj.suspSetComputeFcn(@outlierDiffTrkRes);
lObj.suspComputeUI; % Brings up navigation table
% Saving project DOES save the added tracking results
...
Currently this functionality is mostly command-line only but it should be easy to add UI if useful.
In addition to UI, some internal reorganization of tracking results may be useful. For instance rather than always exporting to trkfiles, you might want to save a certain tracking run in the project with a certain label/id, etc.