LION.models.learned_fbp.DeepFusionBP

Classes

DBP_block(channels)

DBP's deep CNN: a convolution and ReLU, fifteen convolution, batch normalisation and ReLU layers, and a last convolution, from the channels single-angle backprojections to one image.

DeepFusionBPNetwork(operator_params[, ...])

DeepFusionBP: DeepFBP's learnable filter and interpolation network, then a backprojection of each angle on its own, and DBP's deep CNN fusing them into one image (for sparse-view CT).

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).

single_back_projections(operator_params)

The backprojection of each projection on its own: one differentiable backprojector per angle, made from the geometry with that angle (so they add up to the full backprojection).


class LION.models.learned_fbp.DeepFusionBP.DBP_block(channels)[source]

Bases: Module

DBP’s deep CNN: a convolution and ReLU, fifteen convolution, batch normalisation and ReLU layers, and a last convolution, from the channels single-angle backprojections to one image.

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

initial_layer(in_channels, out_channels, kernel_size, stride, padding)[source]

The first layer: a convolution and ReLU.

conv_block(in_channels, out_channels, kernel_size, stride, padding)[source]

An intermediate layer: a convolution, batch normalisation and ReLU.

final_layer(in_channels, out_channels, kernel_size, stride, padding)[source]

The last layer: a convolution, no activation.

forward(x)[source]

The image (B, 1, H, W) from the stacked backprojections x (B, channels, H, W).

class LION.models.learned_fbp.DeepFusionBP.DeepFusionBPNetwork(operator_params, model_parameters=None)[source]

Bases: LIONmodel

DeepFusionBP: DeepFBP’s learnable filter and interpolation network, then a backprojection of each angle on its own, and DBP’s deep CNN fusing them into one image (for sparse-view CT). 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).

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 (see the class).

forward(x)[source]

The reconstructions (B, 1, H, W) of the sinograms x (B, 1, angles, detectors): filter, interpolation, single-angle backprojections, fusion.

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

Where DeepFusionBP comes from: the MPhil thesis that proposed it (Sainz Bear), BibTeX (“bib”) or “MLA”.

class LION.models.learned_fbp.DeepFusionBP.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.DeepFusionBP.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.

class LION.models.learned_fbp.DeepFusionBP.single_back_projections(operator_params)[source]

Bases: Module

The backprojection of each projection on its own: one differentiable backprojector per angle, made from the geometry with that angle (so they add up to the full backprojection).

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

forward(sinogram)[source]

The single-angle backprojections of sinogram (B, 1, angles, detectors), as channels: (B, angles, H, W).