Nonlinear forward models#
TL;DR
Joint estimation of the image and the coil sensitivities (
nlinv) and model-based parameter estimation (moba) have forward operators that are nonlinear in the unknowns.Both are solved by iteratively regularized Gauss-Newton: each step solves a linearized least-squares problem with a Tikhonov term whose weight decreases geometrically, and the number of steps acts as a regularization parameter.
nlinvresolves the ambiguity between image and sensitivities with a Sobolev weighting of the coils; the data term of a signal model is nonconvex in its parameters, so the result depends on the starting point.A model-based reconstruction estimates parameter maps directly; a subspace reconstruction keeps the forward model linear and fits the parameters afterwards.
Inverse problems and their solvers assumes a known, linear forward operator. Two common MRI reconstructions do not satisfy that assumption: the coil sensitivities can be unknowns alongside the image, and the image can be a function of physical parameters. Both lead to a nonlinear operator \(F\) and are solved by the same Gauss-Newton method.
Two nonlinear models#
Joint estimation of image and sensitivities. When the acquisition has no autocalibration (ACS) region large enough for a separate calibration, or the coil sensitivity maps are to be estimated from all of the data, both are unknowns:
The operator is bilinear: linear in \(x\) for fixed \(S\), linear in \(S\) for fixed
\(x\), and nonlinear in the pair. This is nonlinear inversion, BART’s
nlinv,[1] which bartorch.tools.nlinv() runs; its sensitivities
are the calibration for a subsequent linear reconstruction.
Model-based parameter estimation. A quantitative experiment acquires a series of contrasts whose dependence on tissue parameters \(\theta\) is given by a signal model \(M\) — a mono-exponential decay in \(T_2\), an inversion recovery in \(T_1\), or a Bloch simulation of the sequence:
with \(e\) the contrast index. The unknowns are the parameter maps. This is
model-based reconstruction, BART’s moba,[2][3][4] which
bartorch.apps.moba() performs over a TorchSim signal model;
bartorch.apps.mobafit() fits the same models voxel by voxel to
reconstructed images.
A Gauss-Newton solver requires the value \(F(x)\), the derivative \(DF_x\) at a
point as a linear operator, and its adjoint \(DF_x^H\). A
NonlinearOperator provides the three, and
F.linearize(x) returns \(DF_x\) as a LinearOperator.
Iteratively regularized Gauss-Newton#
Each Gauss-Newton step replaces \(F\) by its linearization at the current iterate \(x_k\) and solves the resulting linear problem with a Tikhonov term centred on a reference \(x_{\mathrm{ref}}\):
that is, \(x_{k+1} = x_k + (DF^H DF + \alpha_k I)^{-1}\left[DF^H (y - F(x_k)) - \alpha_k (x_k - x_{\mathrm{ref}})\right]\) with \(DF = DF_{x_k}\). The weight decreases geometrically, \(\alpha_{k+1} = (\alpha_k - \alpha_{\min})/q + \alpha_{\min}\) with \(q = 2\) by default.[5] The early steps are strongly regularized and change the iterate only along well-determined directions; later steps admit the poorly determined ones. The number of steps is a regularization parameter: stopping early gives a smoother estimate, and continuing eventually fits the noise.
IRGNM implements this loop and
IRGNMBlock one step of it. Without an inner solver
the linear problem is solved by conjugate gradients inside BART, as in
nlinv; with inner= it is passed to a solver of bartorch.optim, and
that solver’s regularization terms add a penalty to the step.
Identifiability#
The bilinear model has a symmetry: \(S_c \cdot x\) is unchanged by
\(S_c \mapsto \gamma S_c\) and \(x \mapsto x / \gamma\) for any nonzero function
\(\gamma(r)\), so the data do not determine how structure is shared between the
two factors. nlinv resolves this with the prior knowledge that
sensitivities are smooth, built into the model: the coil unknown is a k-space
representation \(\hat{s}\), and the sensitivities are
a Sobolev weighting that attenuates the high spatial frequencies of the
coil estimate. The IRGNM penalty on \(\hat{s}\) is then a penalty on the
Sobolev norm of \(S\), and the image receives the high-frequency structure. The
product \(x \cdot \sqrt{\sum_c \lvert S_c \rvert^2}\) is invariant to \(\gamma\)
up to its phase, which is why nlinv reports the image multiplied by the
root sum of squares of the estimated sensitivities.
NonlinearSense is this model;
CoilSense() is the unweighted product in front of any
linear encoding, which leaves the regularization of the coils to the caller.
Signal models have no such symmetry — the model fixes the meaning of each
map — but the data term is nonconvex in \(\theta\), so the result depends on the
starting point. The models of bartorch.nlop impose bounds by solving
for a transformed variable, so that every iterate stays within the bounds;
initial() builds a starting point from
parameter values and split() converts a
solution back to named maps in physical units.
Approaches to parameter mapping#
Approach |
Unknown |
Forward model |
Cross-contrast information in the reconstruction |
Problem |
Output |
|---|---|---|---|---|---|
Reconstruction, then voxel-wise fit |
One image per contrast |
Linear, \(P_e F S\) |
Only through a joint regularizer, if one is used; none if the contrasts are reconstructed separately |
Linear reconstruction, then a nonlinear fit per voxel |
Contrast images, then parameter maps |
Subspace reconstruction |
Coefficient maps of a low-dimensional basis \(\Phi\) |
Linear, \(P_e F S\, \Phi\) |
The signal evolution is restricted to the span of \(\Phi\)[6][7] |
Linear; convex with a convex regularizer |
Coefficient maps, then parameter maps by dictionary matching or fitting |
Model-based reconstruction |
Parameter maps \(\theta\) |
Nonlinear, \(P_e F S\, M(\theta)\) |
The signal model couples every contrast to the same parameters |
Nonlinear, nonconvex |
Parameter maps |
A model-based reconstruction estimates fewer unknowns from the same data — for a multi-echo experiment, a few maps rather than one image per echo — and applies regularization to the maps. This improves the estimate when the model describes the signal; a signal the model does not describe, such as partial volume of two tissues or an imperfect refocusing, becomes a bias in the maps. A subspace reconstruction restricts the signal to a basis derived from a dictionary of simulated signals, keeps a linear forward model, and defers the nonlinear estimation of the parameters to a separate step. Subspace-constrained T1 mapping and Parameter maps straight from k-space apply the second and third routes.
Signal models and their derivatives#
The signal models — InversionRecovery(),
MultiEcho(), Bloch() — are
TorchSim simulators presented as
BART nonlinear operators. A signal model is voxel-wise: the signal of a voxel
depends only on that voxel’s parameters, so one forward-mode automatic
differentiation pass gives the derivative for the whole volume and no Jacobian
matrix is formed. TorchOperator does the same for any
differentiable PyTorch function. Composition with @ places a model in front
of an encoding; the derivative of E @ M at \(\theta\) is \(E\, DM_\theta\).
Differentiation through reconstruction describes how gradients pass through the Gauss-Newton
steps themselves.