RobustSplittingLoss#

class deepinv.loss.mri.RobustSplittingLoss(mask_generator, physics_generator, noise_model=None, alpha=0.75, metric=None)[source]#

Bases: WeightedSplittingLoss

Robust Weighted Splitting Loss

Implements the Robust-SSDU loss from Millard and Chiew[1]. 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 where A is the Fourier transform, and \(\epsilon\) is Gaussian noise. The loss is related to the deepinv.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 [1]. 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 the mask_generator.

Parameters:


References:

class Noisier2NoiseMetric(weight, pixel_metric)[source]#

Bases: Module

Helper metric for computing weighted Noisier2Noise

static expand_mask(mask, y)[source]#

Expand mask intermediate dimensions to match those of y, where intermediate dimensions are those (e.g. depth, coils, time) that are not the first two dims (batch, channel), nor the final two dims (H, W).