LION.models.learned_fbp.DeepFBP

Classes

DeepFBPNetwork(operator_params[, ...])

DeepFBP (Tan et al., 2024): FBP with learned parts.

DenoisingResidualBlock(channels)

A 2D residual block of the denoiser: two 3x3 convolutions with a ReLU between them, added to the input.

IntermediateResidualBlock(channels)

A residual block of the interpolation network: a depthwise 1D convolution along the detector, batch normalisation and PReLU, each projection on its own (as in DeepFBP).

LearnableFilter(init_filter[, per_angle, ...])

A learnable filter of the projections, applied in the frequency domain (it replaces FBP's ramp filter): init_filter (its initial frequency response), one shared by every angle, or one per angle (per_angle, with num_angles).


class LION.models.learned_fbp.DeepFBP.DeepFBPNetwork(operator_params, model_parameters=None)[source]

Bases: LIONmodel

DeepFBP (Tan et al., 2024): FBP with learned parts. A learnable filter (initially Ram-Lak), an interpolation network (1D convolutions along the detector, each projection on its own), a differentiable backprojection (normalised by the backprojection of ones), and a residual CNN denoiser with a ReLU output. CT only. Takes the measurements (B, 1, angles, detectors).

model_parameters (default_parameters()):

  • filter_type: “Filter I” (one filter for every angle) or anything else (one filter per angle);

  • fft_padding_twice_detectors: the projections zero-padded to at least twice the detectors before filtering (True);

  • normalizer: divide the backprojection by the backprojection of ones (True).

Initialize internal Module state, shared by both nn.Module and ScriptModule.

compute_projection_size_padded()[source]

The FFT length of the filter: the next power of two of at least twice the number of detectors, so filtering isn’t circular (fft_padding_twice_detectors; False: of the number of detectors, as older versions did).

ram_lak_filter(size)[source]

The Ram-Lak (ramp) filter of FFT length size, in the frequency domain: the learnable filter’s initial value.

static default_parameters()[source]

One shared filter, padded FFT, normalised backprojection (see the class).

forward(x)[source]

The reconstructions (B, 1, H, W), non-negative, of the sinograms x (B, 1, angles, detectors): filter, interpolation, backprojection, denoising.

static cite(cite_format='bib')[source]

Where DeepFBP comes from: its citation, BibTeX (“bib”) or “MLA”.

class LION.models.learned_fbp.DeepFBP.DenoisingResidualBlock(channels)[source]

Bases: Module

A 2D residual block of the denoiser: two 3x3 convolutions with a ReLU between them, added to the input.

Initialize internal Module state, shared by both nn.Module and ScriptModule.

forward(x)[source]

x plus the block of it.

class LION.models.learned_fbp.DeepFBP.IntermediateResidualBlock(channels)[source]

Bases: Module

A residual block of the interpolation network: a depthwise 1D convolution along the detector, batch normalisation and PReLU, each projection on its own (as in DeepFBP).

Initialize internal Module state, shared by both nn.Module and ScriptModule.

forward(x)[source]

x plus the block of it.

class LION.models.learned_fbp.DeepFBP.LearnableFilter(init_filter, per_angle=False, num_angles=None)[source]

Bases: Module

A learnable filter of the projections, applied in the frequency domain (it replaces FBP’s ramp filter): init_filter (its initial frequency response), one shared by every angle, or one per angle (per_angle, with num_angles).

Initialize internal Module state, shared by both nn.Module and ScriptModule.

forward(x)[source]

The projections x (B, angles, detectors) filtered, each along the detector.