[Work Log] Testing full-tree covariance matrix

September 18, 2013
Project Tulips
Subproject Data Association v3
Working path projects/​tulips/​trunk/​src/​matlab/​data_association_3
SVN Revision 15229
Unless otherwise noted, all filesystem paths are relative to the "Working path" named above.

Running covariance confirmation for model_type = 3.

Results don't match.

Off-diagonals are okay.

on-diagonal's are larger in reference impl; on order of 10.

Reference implementation has all positive eigenvalues. Likely bug is in testing implementation.

Open question: Does branch_index need to be incremented by start_index?

also, is prior_K including start_index?

Root curve is block incorrect, which means we can focus on either build_root_object or build_sibling block.

Got it: prior_K was computed with model_type = 1. It contains no perturb covariance. But root block does contain perturb covariance.

Re-attach using:

wacv_Corrs_ratt = wacv_Corrs;
for i = 1:numel(wacv_Corrs_reatt)
    C = wacv_Corrs_reatt{i};
    wacv_Corrs_reatt = attach_2(wacv_Corrs_reatt, i, C.parent_ci, C.start_index, C.branch_index,params);

Now results are identical for the testing set

results differ on the full set.

in testing set, all branches occured from the zero point on the parent. the full set has branches from other points, and we're getting different results.

Found the cause of the problem: it was leftover cruft code I added during debugging. Caused non-symmetric matrix.

TODO: Move "confirm full covariance against reference implementation" into its own test folder

TODO: handle nonzero start-index in branching. re-run confirmation

TODO: finish "confirm curve-tree ML against reference implementation"

Struggling with curve_ml5, where Chol is failing. Looks like the problem is in att_Set_Branch_index; branch conditional covariance is not positive definite.

Found: indexing bug in attachment/attach_2.m

Comparing three methods:

% method 1
ml1 = curve_tree_ml_ref(wacv_Corrs_reatt, params, data_)
% method 2
ml2 = curve_tree_ml(wacv_Corrs_reatt, params, data_)
% method 3
ml3 = 0;
for i = 1:numel(wacv_Corrs_reatt)
    ml = ml + curve_ml5( ...
            wacv_Corrs_reatt{i}, ...
            data_, ...
            params, ...
            get_model_kernel(params, params.model_type), ...
            params.ml_block_size, ...

All three currently differ significantly.

Also compared against an indendent model, whose ML was about 300 points lower.

At this point, method 2 and method 3 should be giving the same results, but aren't.

Moved covariance matrix test to test/test_construct_attachment_covariance.m.

Re-ran and now it's failing :-/

Modified it to save the output; re-running to debug.

Needed to re-run attach_2(), because prior_K was stale


Posted by Kyle Simek
blog comments powered by Disqus