OSEMIteration#
- class deepinv.optim.optim_iterators.OSEMIteration(eps=1e-6, cost_fn=None, **kwargs)[source]#
Bases:
OptimIteratorPerforms a single iteration of the OSEM algorithm, which is a classic baseline reconstruction method for inverse problems with Poisson noise statistics. Note that
deepinv.optim.optim_iterators.MLEMIterationis a special case with one subset only. More details on the algorithm can be found in the documentation of thedeepinv.optim.optimizers.OSEMoptimizer.- forward(X, cur_data_fidelity, cur_prior, cur_params, y, physics, sensitivities, *args, **kwargs)[source]#
Perform one Ordered-Subsets Expectation-Maximization step.
- Parameters:
X (dict) – Dictionary containing the current iterate and the estimated cost.
cur_data_fidelity (deepinv.optim.DataFidelity) – Instance of the DataFidelity class defining the current data fidelity.
cur_prior (deepinv.optim.Prior) – Instance of the Prior class defining the current prior.
cur_params (dict) – Dictionary containing the current parameters of the algorithm.
y (deepinv.utils.TensorList) – Measurement subsets.
physics (deepinv.physics.StackedLinearPhysics) – Physics operators corresponding to the measurement subsets.
sensitivities (list[torch.Tensor]) – Precomputed sensitivity maps \(A_l^T \mathbf{1}\) for each subset.
- Returns:
Dictionary
{"est": (x, None), "cost": F, "it": k + 1}containing the updated iterate and estimated cost.- Return type:
dict[str, tuple[torch.Tensor, None] | torch.Tensor | int | None]