Noise Models
GaussianMixtureNoiseModel
Bases: Module
Define a noise model parameterized as a mixture of gaussians.
If config.path is not provided a new object is initialized from scratch.
Otherwise, a model is loaded from config.path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
GaussianMixtureNMConfig
|
A |
required |
Attributes:
| Name | Type | Description |
|---|---|---|
min_signal |
float
|
Minimum signal intensity expected in the image. |
max_signal |
float
|
Maximum signal intensity expected in the image. |
path |
Union[str, Path]
|
Path to the directory where the trained noise model (*.npz) is saved in the |
weight |
Parameter
|
A [3*n_gaussian, n_coeff] sized array containing the values of the weights
describing the GMM noise model, with each row corresponding to one
parameter of each gaussian, namely [mean, standard deviation and weight].
Specifically, rows are organized as follows:
- first n_gaussian rows correspond to the means
- next n_gaussian rows correspond to the weights
- last n_gaussian rows correspond to the standard deviations
If |
n_gaussian |
int
|
Number of gaussians in the mixture. |
n_coeff |
int
|
Number of coefficients to describe the functional relationship between gaussian parameters and the signal. 2 implies a linear relationship, 3 implies a quadratic relationship and so on. |
device |
device
|
GPU device. |
min_sigma |
float
|
All values of |
fit(signal, observation, learning_rate=0.1, batch_size=250000, n_epochs=2000, lower_clip=0.0, upper_clip=100.0)
Training to learn the noise model from signal - observation pairs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
signal
|
NDArray
|
Clean Signal Data |
required |
observation
|
NDArray
|
Noisy Observation Data |
required |
learning_rate
|
float
|
Learning rate. Default = 1e-1. |
0.1
|
batch_size
|
int
|
Nini-batch size. Default = 250000. |
250000
|
n_epochs
|
int
|
Number of epochs. Default = 2000. |
2000
|
lower_clip
|
int
|
Lower percentile for clipping. Default is 0. |
0.0
|
upper_clip
|
int
|
Upper percentile for clipping. Default is 100. |
100.0
|
get_gaussian_parameters(signals)
Returns the noise model for given signals
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
signals
|
Tensor
|
Underlying signals |
required |
Returns:
| Name | Type | Description |
|---|---|---|
noise_model |
list of Tensor
|
Contains a list of |
get_signal_observation_pairs(signal, observation, lower_clip, upper_clip)
Returns the Signal-Observation pixel intensities as a two-column array
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
signal
|
numpy array
|
Clean Signal Data |
required |
observation
|
NDArray
|
Noisy observation Data |
required |
lower_clip
|
float
|
Lower percentile bound for clipping. |
required |
upper_clip
|
float
|
Upper percentile bound for clipping. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
noise_model |
list of torch floats
|
Contains a list of |
likelihood(observations, signals)
Evaluates the likelihood of observations given the signals and the corresponding gaussian parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
observations
|
Tensor
|
Noisy observations. Shape is (batch, 1, dim1, dim2). |
required |
signals
|
Tensor
|
Underlying signals. Shape is (batch, 1, dim1, dim2). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
value |
torch.Tensor:
|
Likelihood of observations given the signals and the GMM noise model |
normal_density(x, mean, std)
Evaluates the normal probability density at x given the mean mean and standard deviation std.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Tensor
|
The ground-truth tensor. Shape is (batch, 1, dim1, dim2). |
required |
mean
|
Tensor
|
The inferred mean of distribution. Shape is (batch, 1, dim1, dim2). |
required |
std
|
Tensor
|
The inferred standard deviation of distribution. Shape is (batch, 1, dim1, dim2). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
tmp |
Tensor
|
Normal probability density of |
polynomial_regressor(weight_params, signals)
Combines weight_params and signal signals to regress for the gaussian parameter values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
weight_params
|
Tensor
|
Corresponds to specific rows of the |
required |
signals
|
Tensor
|
Signals |
required |
Returns:
| Name | Type | Description |
|---|---|---|
value |
Tensor
|
Corresponds to either of mean, standard deviation or weight, evaluated at |
sample_observation_from_signal(signal)
Sample an instance of observation based on an input signal using a learned Gaussian Mixture Model. For each pixel in the input signal, samples a corresponding noisy pixel.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
signal
|
NDArray
|
Clean 2D signal data. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
observation |
numpy array
|
An instance of noisy observation data based on the input signal. |
MultiChannelNoiseModel
Bases: Module
likelihood(obs, signal)
Compute the likelihood of observations given signals for each channel.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
obs
|
Tensor
|
Noisy observations, i.e., the target(s). Specifically, the input noisy image for HDN, or the noisy unmixed images used for supervision for denoiSplit. Shape: (B, C, [Z], Y, X), where C is the number of unmixed channels. |
required |
signal
|
Tensor
|
Underlying signals, i.e., the (clean) output of the model. Specifically, the denoised image for HDN, or the unmixed images for denoiSplit. Shape: (B, C, [Z], Y, X), where C is the number of unmixed channels. |
required |
create_histogram(bins, min_val, max_val, observation, signal)
Creates a 2D histogram from 'observation' and 'signal'.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bins
|
int
|
Number of bins in x and y. |
required |
min_val
|
float
|
Lower bound of the lowest bin in x and y. |
required |
max_val
|
float
|
Upper bound of the highest bin in x and y. |
required |
observation
|
ndarray
|
3D numpy array (stack of 2D images). Observation.shape[0] must be divisible by signal.shape[0]. Assumes that n subsequent images in observation belong to one image in 'signal'. |
required |
signal
|
ndarray
|
3D numpy array (stack of 2D images). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
histogram |
ndarray
|
A 3D array: - histogram[0]: Normalized 2D counts. - histogram[1]: Lower boundaries of bins along y. - histogram[2]: Upper boundaries of bins along y. |
The values for x can be obtained by transposing 'histogram[1]' and 'histogram[2]'.
|
|
multichannel_noise_model_factory(model_config)
Multi-channel noise model factory.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_config
|
Optional[MultiChannelNMConfig]
|
Noise model configuration, a |
required |
Returns:
| Type | Description |
|---|---|
Optional[MultiChannelNoiseModel]
|
A noise model instance. |
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
If the chosen noise model |
noise_model_factory(model_config)
Noise model factory for single-channel noise models.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_config
|
Optional[GaussianMixtureNMConfig]
|
Noise model configuration for a single Gaussian mixture noise model. |
required |
Returns:
| Type | Description |
|---|---|
Optional[GaussianMixtureNoiseModel]
|
A single noise model instance, or None if no config is provided. |
Raises:
| Type | Description |
|---|---|
NotImplementedError
|
If the chosen noise model |
train_gm_noise_model(model_config, signal, observation)
Train a Gaussian mixture noise model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_config
|
GaussianMixtureNoiseModel
|
description |
required |
Returns:
| Type | Description |
|---|---|
_description_
|
|