RobustSplittingLoss#
- class deepinv.loss.mri.RobustSplittingLoss(mask_generator, physics_generator, noise_model=GaussianNoise(sigma=0.1), alpha=0.75, eps=1e-9, metric=torch.nn.MSELoss())[source]#
Bases:
WeightedSplittingLoss
Robust Weighted Splitting Loss
Implements the Robust-SSDU loss from “Clean self-supervised MRI reconstruction from noisy, sub-sampled training data with Robust SSDU”. The loss is designed for problems where measurements are observed as \(y_i=M_iAx+\epsilon\), where \(M_i\) is a random mask, such as in
MRI
whereA
is the Fourier transform, and \(\epsilon\) is Gaussian noise. The loss is related to thedeepinv.loss.mri.WeightedSplittingLoss
as follows:\[\mathcal{L}_\text{Robust-SSDU}=\mathcal{L}_\text{Weighted-SSDU}(\tilde{y};y) + \lVert(1+\frac{1}{\alpha^2}) M_1 M (\forw{\inverse{\tilde{y},A} - y}\rVert_2^2\]where \(\tilde{y}\sim\mathcal{N}(y,\alpha^2\sigma^2\mathbf{I})\) is further noised (i.e. “noisier”) measurement, and \(\alpha\) is a hyperparameter. This is derived from Eqs. 34 & 35 of the paper. At inference, the original measurement \(y\) is used as input.
Note
See
deepinv.loss.mri.WeightedSplittingLoss
on what is expected of the input measurements, and themask_generator
.- Parameters:
mask_generator (deepinv.physics.generator.BernoulliSplittingMaskGenerator) – splitting mask generator for further subsampling.
physics_generator (deepinv.physics.generator.BaseMaskGenerator) – original mask generator used to generate the measurements.
noise_model (deepinv.physics.NoiseModel) – noise model for adding further noise, must be of same type as original measurement noise. Note this loss only supports
deepinv.physics.GaussianNoise
.alpha (float) – hyperparameter controlling further noise std.
eps (float) – small value to avoid division by zero.
metric (Metric, torch.nn.Module) – metric used for computing data consistency, which is set as the mean squared error by default.