Hi Paul,
We've been looking more into what happens with the proposal mixture.
For now, a pull-request is pending with some fixes to the proposals, for when they are used in a mixture:
https://github.com/unibas-gravis/icp-proposal/pull/3 One part is returning an appropriate transition probability in case the proposal is unable to transition.
Example for the ICP-proposal:
if (to.copy(shapeParameters = from.shapeParameters).allParameters != from.allParameters) {
Double.NegativeInfinity
}
else {
// Compute transition probability
}
In case the transition involved something else than shape (rotation, translation), then a negative infinite can be returned as the proposal will never be able to do this transition.
In the paper, we always only used the same proposal, so this was never an issue. The tutorials will also be updated in the near future with this change.
Another part is the adjustment for the asymmetry in the ICP-proposal. This can be done with a mixture of ICP-proposals with different step-size.
Alternatively, we've found that even a symmetrical random pose proposal can be helpful. Only using a single ICP-proposal will increase the speed and the mixture with a wide random pose increases the acceptance rate (I get +50%).
In the pull-request I've also divided the face fitting into 2 files: BfmFittingComplete (uses the independent point evaluator to register a complete face), BfmFittingPartial (uses the Hausdorff and collective likelihood to register a face with a missing nose).
As for the unnormalized probabilities. As long as proposals operate orthogonal to each other, their unnormalized values can be used. If not, the correct transition probability is necessary.
As mentioned earlier, we are currently working on having many of the parameters automatically adjusted. For now, it is however unsure if it will be in the same repository, or in a new repository.
Best
Dennis