[Work Log] Struggling with index offset and shrinkage

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

running with 5mm in-plane variance. Dataset 4 and 5's issues seem to be resolved. Interesting, since we still have isotropoic offset veriance in-place, too.

Can we get old issue to return by setting in-plane variance to zero?


Yes. And setting in-plane to nonzero and isotropic to zero?


Yes. But shifting is very significant, and motion is large and random.

The offset mystery

There's obviously some part of the model thats resulting in these offsets, its just a matter of zeroing out parameters until the phenomenon goes away.

Position perturbation variance is the root of the problem; both iso and nonisotropic version fail in this way.

Some modification I made is causing indices to collapse... probably insufficient flexibility since I disabled rate and smoothness perturbations.

weird, rate and position variance seem tied to disappearing curves (index collape?). Seems that increasing rate variance a lot is causing it.

Increasing rate variance seems to facilitate perturb_rate_variance having more influcence. Possibly because we're getting index shrinkage, so small fluctuations in rate result in large fluctuations in structure.

Preventing index shrinkage

My current hypothesis is that index shrinkage is resulting in the highly non-intuitive results we're seeing. Intuition assumes index corresponds to distance, but when shrinkage occurs, this is no longer the case, so intuition becomes cloudy or fails entirely.

We really need to constrain indices somehow, without preventing corrections.

First attempt: force length to remain constant. added a squared penalty over total change in index length. It's tricky because of our view-grouped transformation; only one group contributes to the size of the maximum end-point, and only one index contributes to the minimum start-point. Implemented, but didn't get desired result. Instead, indices shifted wildly to comply with the length constraint. In some cases, overall shrinkage occurred, combined with occasional spikes to keep the length up.


Observation: plot of index vs. observation number is smooth. Add a GP prior over index using observation ordinal as index.


Implemented in optimize_ml_wrt_indices_2.m. Initial tests seem promising, but need to train on parameters. Zeroth and first derivitives w.r.t. parameters:

\[ \begin{align} g(x) = \log p(x | t) &= -0.5 x^\top \left( \sigma_1^2 K_1 + \sigma_2^2 K_2 + \sigma_3^2 K_3 \right)^{-1} x - 0.5 \log \left | \sigma_1^2 K_1 + \sigma_2^2 K_2 + \sigma_3^2 K_3 \right | - C \\ &= -0.5 x^\top U^{-1} x - 0.5 \log | U | - C \\ \frac{\partial g(x)}{\partial \sigma_i} &= \sigma_i \left(z' K_i z - \text{Tr}\left[U^{-1} K_i\right] \right) \end{align} \]

where \(U = \sigma_1 K_1 + ... \) and \(z = U^{-1} x \).


  1. get curve indices from reconstruction
  2. group by view; get corresponding ordinal; add to set
  3. construct energy function over set of curves using functions above
  4. initial fit of rate and offset using direct means;
  5. refine all using Newton-Raphson
Posted by Kyle Simek
blog comments powered by Disqus