Skip to content

TODO: Make pipeline robust to overall scaling (e.g. as a result of changes in units) #198

@calebweinreb

Description

@calebweinreb

I received an email from a user who inferred 3D keypoints in then applied kpms. Results were poor when the keypoints were represented in meters, but much better when the unit was changed (in his case to micrometers). There are a few places in the code where this sensitivity to absolute scale might come in:

  • Some noise is added to the keypoint trajectories (which helps with convergence). Currently the noise scale is set based on the assumption that keypoints are defined in units of pixels (as is typically the case for 2D data). We could instead set the noise scale based on some empirical property of the keypoints, e.g. median-absolute-deviation.

  • When users skip the noise calibration step (which will always be the case for 3D keypoints), the resulting noise prior might be inappropriate. Rather than using a default slope and intercept when users skip noise calibration, maybe we should use some other heuristic to determine the noise prior. For example, we could base it on the frame-to-frame jitter in keypoint coordinates, or require users to provide some kind of estimate (which would be applied uniformly to all keypoints).

Once these two changes are made, it should be possible to scale the keypoint coordinates by several orders of magnitude without seeing a substantive change in the results of the pipeline. We should check this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions