Note
New to DeepInverse? Get started with the basics with the 5 minute quickstart tutorial.
Patch priors for limited-angle computed tomography#
In this example we use patch priors for limited angle computed tomography. More precisely, we consider the inverse problem \(y = \mathrm{noisy}(Ax)\), where \(A\) is the discretized Radon transform with \(100\) equispace angles between 20 and 160 degrees. For the reconstruction, we minimize the variational problem
Here, the regularizier \(g\) is explicitly defined as
where \(P_i\) is the linear operator which extracts the \(i\)-th patch from the image \(x\) and \(h\) is a regularizer on the space of patches. We consider the following two choices of \(h\):
The expected patch log-likelihood (EPLL) prior was proposed by Zoran and Weiss[1]. It sets \(h(x)=-\log(p_\theta(x))\), where \(p_\theta\) is the probability density function of a Gaussian mixture model. The parameters \(\theta\) are estimated a-priori on a (possibly small) data set of training patches using an expectation maximization algorithm. In contrast to the original paper by Zoran and Weiss, we minimize the arising variational problem by simply applying the Adam optimizers. For an example for using the (approximated) half-quadratic splitting algorithm proposed by Zoran and Weiss, we refer to the denoising exampleβ¦
The patch normalizing flow regularizer (PatchNR) was proposed by AltekrΓΌger et al.[2]. It models \(h(x)=-\log(p_{\theta}(x))\) as negative log-likelihood function of a probaility density function \(p_\theta={\mathcal{T}_\theta}_\#\mathcal{N}(0,I)\) which is given as the push-forward measure of a standard normal distribution under a normalizing flow (invertible neural network) \(\mathcal{T}_\theta\).
import torch
from torch.utils.data import DataLoader
from deepinv.datasets import PatchDataset
from deepinv import Trainer
from deepinv.physics import LogPoissonNoise, Tomography, Denoising, UniformNoise
from deepinv.optim import LogPoissonLikelihood, PatchPrior, PatchNR, EPLL
from deepinv.loss.metric import PSNR
from deepinv.utils import plot
from deepinv.utils import load_torch_url
from tqdm import tqdm
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.float32
Load training and test images#
Here, we use downsampled images from the βLoDoPaB-CT datasetβ. Moreover, we define the size of the used patches and generate the dataset of patches in the training images.
url = "https://huggingface.co/datasets/deepinv/LoDoPaB-CT_toy/resolve/main/LoDoPaB-CT_small.pt"
dataset = load_torch_url(url)
train_imgs = dataset["train_imgs"].to(device)
test_imgs = dataset["test_imgs"].to(device)
img_size = train_imgs.shape[-1]
patch_size = 3
verbose = True
train_dataset = PatchDataset(train_imgs, patch_size=patch_size)
Set parameters for EPLL and PatchNR#
For PatchNR, we choose the number of hidden neurons in the subnetworks and for the training batch size and number of epochs. For EPLL, we set the number of mixture components and the maximum number of steps and batch size for fitting the EM algorithm.
patchnr_subnetsize = 128
patchnr_epochs = 5
patchnr_batch_size = 32
patchnr_learning_rate = 1e-4
epll_num_components = 20
epll_max_iter = 20
epll_batch_size = 10000
Training / EM algorithm#
If the parameter retrain is False, we just load pretrained weights. Set the parameter to True for retraining. On the cpu, this takes up to a couple of minutes. After training, we define the corresponding patch priors
Note
The normalizing flow training minimizes the forward Kullback-Leibler (maximum likelihood) loss function given by
\[\mathcal{L}(\theta)=\mathrm{KL}(P_X,{\mathcal{T}_\theta}_\#P_Z)= \mathbb{E}_{x\sim P_X}[p_{{\mathcal{T}_\theta}_\#P_Z}(x)]+\mathrm{const},\]where \(\mathcal{T}_\theta\) is the normalizing flow with parameters \(\theta\), latent distribution \(P_Z\), data distribution \(P_X\) and push-forward measure \({\mathcal{T}_\theta}_\#P_Z\).
retrain = False
if retrain:
model_patchnr = PatchNR(
pretrained=None,
sub_net_size=patchnr_subnetsize,
device=device,
patch_size=patch_size,
)
patchnr_dataloader = DataLoader(
train_dataset,
batch_size=patchnr_batch_size,
shuffle=True,
drop_last=True,
)
class NFTrainer(Trainer):
def compute_loss(self, physics, x, y, train=True, epoch=None):
logs = {}
self.optimizer.zero_grad() # Zero the gradients
# Evaluate reconstruction network
invs, jac_inv = self.model(y)
# Compute the Kullback Leibler loss
loss_total = torch.mean(
0.5 * torch.sum(invs.view(invs.shape[0], -1) ** 2, -1)
- jac_inv.view(invs.shape[0])
)
current_log = (
self.logs_total_loss_train if train else self.logs_total_loss_eval
)
current_log.update(loss_total.item())
logs[f"TotalLoss"] = current_log.avg
if train:
loss_total.backward() # Backward the total loss
self.optimizer.step() # Optimizer step
return invs, logs
optimizer = torch.optim.Adam(
model_patchnr.normalizing_flow.parameters(), lr=patchnr_learning_rate
)
trainer = NFTrainer(
model=model_patchnr.normalizing_flow,
physics=Denoising(UniformNoise(1.0 / 255.0)),
optimizer=optimizer,
train_dataloader=patchnr_dataloader,
device=device,
losses=[],
epochs=patchnr_epochs,
online_measurements=True,
verbose=verbose,
)
trainer.train()
model_epll = EPLL(
pretrained=None,
n_components=epll_num_components,
patch_size=patch_size,
device=device,
)
epll_dataloader = DataLoader(
train_dataset,
batch_size=epll_batch_size,
shuffle=True,
drop_last=False,
)
model_epll.GMM.fit(epll_dataloader, verbose=verbose, max_iters=epll_max_iter)
else:
model_patchnr = PatchNR(
pretrained="PatchNR_lodopab_small2",
sub_net_size=patchnr_subnetsize,
device=device,
patch_size=patch_size,
)
model_epll = EPLL(
pretrained="GMM_lodopab_small2",
n_components=epll_num_components,
patch_size=patch_size,
device=device,
)
patchnr_prior = PatchPrior(model_patchnr, patch_size=patch_size)
epll_prior = PatchPrior(model_epll.negative_log_likelihood, patch_size=patch_size)
/home/runner/work/deepinv/deepinv/.venv/lib/python3.12/site-packages/FrEIA/modules/all_in_one_block.py:66: SyntaxWarning: invalid escape sequence '\m'
Initial value for the global affine scaling :math:`s_\mathrm{global}`.
Downloading: "https://drive.google.com/uc?export=download&id=1Z2us9ZHjDGOlU6r1Jee0s2BBej2XV5-i" to /home/runner/.cache/torch/hub/checkpoints/PatchNR_lodopab_small.pt
0%| | 0.00/739k [00:00<?, ?B/s]
100%|ββββββββββ| 739k/739k [00:00<00:00, 14.2MB/s]
Downloading: "https://huggingface.co/deepinv/EPLL/resolve/main/GMM_lodopab_small2.pt?download=true" to /home/runner/.cache/torch/hub/checkpoints/GMM_lodopab_small2.pt
0%| | 0.00/28.9k [00:00<?, ?B/s]
100%|ββββββββββ| 28.9k/28.9k [00:00<00:00, 148MB/s]
Definition of forward operator and noise model#
The training depends only on the image domain or prior distribution. For the reconstruction, we now define forward operator and noise model. For the noise model, we use log-Poisson noise as suggested for the LoDoPaB dataset. Then, we generate an observation by applying the physics and compute the filtered backprojection.
mu = 1 / 50.0 * (362.0 / img_size)
N0 = 1024.0
num_angles = 100
noise_model = LogPoissonNoise(mu=mu, N0=N0)
data_fidelity = LogPoissonLikelihood(mu=mu, N0=N0)
angles = torch.linspace(20, 160, steps=num_angles, device=device)
physics = Tomography(
img_width=img_size, angles=angles, device=device, noise_model=noise_model
)
observation = physics(test_imgs)
fbp = physics.A_dagger(observation)
/home/runner/work/deepinv/deepinv/deepinv/physics/tomography.py:189: UserWarning: The default value of `normalize` is not specified and will be automatically set to `True`. Set `normalize` explicitly to `True` or `False` to avoid this warning.
warn(
Power iteration converged at iteration 14, ||A^T A||_2=4830.79
Reconstruction loop#
We define a reconstruction loop for minimizing the variational problem using the Adam optimizer. As initialization, we choose the filtered backprojection.
optim_steps = 200
lr_variational_problem = 0.02
def minimize_variational_problem(prior, lam):
imgs = fbp.detach().clone()
imgs.requires_grad_(True)
optimizer = torch.optim.Adam([imgs], lr=lr_variational_problem)
for i in (progress_bar := tqdm(range(optim_steps))):
optimizer.zero_grad()
loss = data_fidelity(imgs, observation, physics).mean() + lam * prior(imgs)
loss.backward()
optimizer.step()
progress_bar.set_description("Step {}".format(i + 1))
return imgs.detach()
Run and plot#
Finally, we run the reconstruction loop for both priors and plot the results. The regularization parameter is roughly choosen by a grid search but not fine-tuned
lam_patchnr = 120.0
lam_epll = 120.0
recon_patchnr = minimize_variational_problem(patchnr_prior, lam_patchnr)
recon_epll = minimize_variational_problem(epll_prior, lam_epll)
psnr_fbp = PSNR()(fbp, test_imgs).item()
psnr_patchnr = PSNR()(recon_patchnr, test_imgs).item()
psnr_epll = PSNR()(recon_epll, test_imgs).item()
print("PSNRs:")
print("Filtered Backprojection: {0:.2f}".format(psnr_fbp))
print("EPLL: {0:.2f}".format(psnr_epll))
print("PatchNR: {0:.2f}".format(psnr_patchnr))
plot(
[
test_imgs,
fbp.clip(0, 1),
recon_epll.clip(0, 1),
recon_patchnr.clip(0, 1),
],
["Ground truth", "Filtered Backprojection", "EPLL", "PatchNR"],
)

0%| | 0/200 [00:00<?, ?it/s]
Step 1: 0%| | 0/200 [00:00<?, ?it/s]
Step 2: 0%| | 0/200 [00:00<?, ?it/s]
Step 3: 0%| | 0/200 [00:00<?, ?it/s]
Step 3: 2%|β | 3/200 [00:00<00:08, 23.15it/s]
Step 4: 2%|β | 3/200 [00:00<00:08, 23.15it/s]
Step 5: 2%|β | 3/200 [00:00<00:08, 23.15it/s]
Step 6: 2%|β | 3/200 [00:00<00:08, 23.15it/s]
Step 6: 3%|β | 6/200 [00:00<00:08, 23.58it/s]
Step 7: 3%|β | 6/200 [00:00<00:08, 23.58it/s]
Step 8: 3%|β | 6/200 [00:00<00:08, 23.58it/s]
Step 9: 3%|β | 6/200 [00:00<00:08, 23.58it/s]
Step 9: 4%|β | 9/200 [00:00<00:07, 23.88it/s]
Step 10: 4%|β | 9/200 [00:00<00:07, 23.88it/s]
Step 11: 4%|β | 9/200 [00:00<00:07, 23.88it/s]
Step 12: 4%|β | 9/200 [00:00<00:07, 23.88it/s]
Step 12: 6%|β | 12/200 [00:00<00:07, 23.95it/s]
Step 13: 6%|β | 12/200 [00:00<00:07, 23.95it/s]
Step 14: 6%|β | 12/200 [00:00<00:07, 23.95it/s]
Step 15: 6%|β | 12/200 [00:00<00:07, 23.95it/s]
Step 15: 8%|β | 15/200 [00:00<00:07, 23.98it/s]
Step 16: 8%|β | 15/200 [00:00<00:07, 23.98it/s]
Step 17: 8%|β | 15/200 [00:00<00:07, 23.98it/s]
Step 18: 8%|β | 15/200 [00:00<00:07, 23.98it/s]
Step 18: 9%|β | 18/200 [00:00<00:07, 24.01it/s]
Step 19: 9%|β | 18/200 [00:00<00:07, 24.01it/s]
Step 20: 9%|β | 18/200 [00:00<00:07, 24.01it/s]
Step 21: 9%|β | 18/200 [00:00<00:07, 24.01it/s]
Step 21: 10%|β | 21/200 [00:00<00:07, 24.08it/s]
Step 22: 10%|β | 21/200 [00:00<00:07, 24.08it/s]
Step 23: 10%|β | 21/200 [00:00<00:07, 24.08it/s]
Step 24: 10%|β | 21/200 [00:01<00:07, 24.08it/s]
Step 24: 12%|ββ | 24/200 [00:01<00:07, 24.09it/s]
Step 25: 12%|ββ | 24/200 [00:01<00:07, 24.09it/s]
Step 26: 12%|ββ | 24/200 [00:01<00:07, 24.09it/s]
Step 27: 12%|ββ | 24/200 [00:01<00:07, 24.09it/s]
Step 27: 14%|ββ | 27/200 [00:01<00:07, 24.11it/s]
Step 28: 14%|ββ | 27/200 [00:01<00:07, 24.11it/s]
Step 29: 14%|ββ | 27/200 [00:01<00:07, 24.11it/s]
Step 30: 14%|ββ | 27/200 [00:01<00:07, 24.11it/s]
Step 30: 15%|ββ | 30/200 [00:01<00:07, 24.13it/s]
Step 31: 15%|ββ | 30/200 [00:01<00:07, 24.13it/s]
Step 32: 15%|ββ | 30/200 [00:01<00:07, 24.13it/s]
Step 33: 15%|ββ | 30/200 [00:01<00:07, 24.13it/s]
Step 33: 16%|ββ | 33/200 [00:01<00:06, 24.17it/s]
Step 34: 16%|ββ | 33/200 [00:01<00:06, 24.17it/s]
Step 35: 16%|ββ | 33/200 [00:01<00:06, 24.17it/s]
Step 36: 16%|ββ | 33/200 [00:01<00:06, 24.17it/s]
Step 36: 18%|ββ | 36/200 [00:01<00:06, 24.19it/s]
Step 37: 18%|ββ | 36/200 [00:01<00:06, 24.19it/s]
Step 38: 18%|ββ | 36/200 [00:01<00:06, 24.19it/s]
Step 39: 18%|ββ | 36/200 [00:01<00:06, 24.19it/s]
Step 39: 20%|ββ | 39/200 [00:01<00:06, 24.18it/s]
Step 40: 20%|ββ | 39/200 [00:01<00:06, 24.18it/s]
Step 41: 20%|ββ | 39/200 [00:01<00:06, 24.18it/s]
Step 42: 20%|ββ | 39/200 [00:01<00:06, 24.18it/s]
Step 42: 21%|ββ | 42/200 [00:01<00:06, 24.18it/s]
Step 43: 21%|ββ | 42/200 [00:01<00:06, 24.18it/s]
Step 44: 21%|ββ | 42/200 [00:01<00:06, 24.18it/s]
Step 45: 21%|ββ | 42/200 [00:01<00:06, 24.18it/s]
Step 45: 22%|βββ | 45/200 [00:01<00:06, 24.22it/s]
Step 46: 22%|βββ | 45/200 [00:01<00:06, 24.22it/s]
Step 47: 22%|βββ | 45/200 [00:01<00:06, 24.22it/s]
Step 48: 22%|βββ | 45/200 [00:01<00:06, 24.22it/s]
Step 48: 24%|βββ | 48/200 [00:01<00:06, 24.18it/s]
Step 49: 24%|βββ | 48/200 [00:02<00:06, 24.18it/s]
Step 50: 24%|βββ | 48/200 [00:02<00:06, 24.18it/s]
Step 51: 24%|βββ | 48/200 [00:02<00:06, 24.18it/s]
Step 51: 26%|βββ | 51/200 [00:02<00:06, 24.09it/s]
Step 52: 26%|βββ | 51/200 [00:02<00:06, 24.09it/s]
Step 53: 26%|βββ | 51/200 [00:02<00:06, 24.09it/s]
Step 54: 26%|βββ | 51/200 [00:02<00:06, 24.09it/s]
Step 54: 27%|βββ | 54/200 [00:02<00:06, 24.02it/s]
Step 55: 27%|βββ | 54/200 [00:02<00:06, 24.02it/s]
Step 56: 27%|βββ | 54/200 [00:02<00:06, 24.02it/s]
Step 57: 27%|βββ | 54/200 [00:02<00:06, 24.02it/s]
Step 57: 28%|βββ | 57/200 [00:02<00:05, 24.03it/s]
Step 58: 28%|βββ | 57/200 [00:02<00:05, 24.03it/s]
Step 59: 28%|βββ | 57/200 [00:02<00:05, 24.03it/s]
Step 60: 28%|βββ | 57/200 [00:02<00:05, 24.03it/s]
Step 60: 30%|βββ | 60/200 [00:02<00:05, 23.97it/s]
Step 61: 30%|βββ | 60/200 [00:02<00:05, 23.97it/s]
Step 62: 30%|βββ | 60/200 [00:02<00:05, 23.97it/s]
Step 63: 30%|βββ | 60/200 [00:02<00:05, 23.97it/s]
Step 63: 32%|ββββ | 63/200 [00:02<00:05, 23.98it/s]
Step 64: 32%|ββββ | 63/200 [00:02<00:05, 23.98it/s]
Step 65: 32%|ββββ | 63/200 [00:02<00:05, 23.98it/s]
Step 66: 32%|ββββ | 63/200 [00:02<00:05, 23.98it/s]
Step 66: 33%|ββββ | 66/200 [00:02<00:05, 23.99it/s]
Step 67: 33%|ββββ | 66/200 [00:02<00:05, 23.99it/s]
Step 68: 33%|ββββ | 66/200 [00:02<00:05, 23.99it/s]
Step 69: 33%|ββββ | 66/200 [00:02<00:05, 23.99it/s]
Step 69: 34%|ββββ | 69/200 [00:02<00:05, 24.00it/s]
Step 70: 34%|ββββ | 69/200 [00:02<00:05, 24.00it/s]
Step 71: 34%|ββββ | 69/200 [00:02<00:05, 24.00it/s]
Step 72: 34%|ββββ | 69/200 [00:02<00:05, 24.00it/s]
Step 72: 36%|ββββ | 72/200 [00:02<00:05, 23.99it/s]
Step 73: 36%|ββββ | 72/200 [00:03<00:05, 23.99it/s]
Step 74: 36%|ββββ | 72/200 [00:03<00:05, 23.99it/s]
Step 75: 36%|ββββ | 72/200 [00:03<00:05, 23.99it/s]
Step 75: 38%|ββββ | 75/200 [00:03<00:05, 24.05it/s]
Step 76: 38%|ββββ | 75/200 [00:03<00:05, 24.05it/s]
Step 77: 38%|ββββ | 75/200 [00:03<00:05, 24.05it/s]
Step 78: 38%|ββββ | 75/200 [00:03<00:05, 24.05it/s]
Step 78: 39%|ββββ | 78/200 [00:03<00:05, 23.96it/s]
Step 79: 39%|ββββ | 78/200 [00:03<00:05, 23.96it/s]
Step 80: 39%|ββββ | 78/200 [00:03<00:05, 23.96it/s]
Step 81: 39%|ββββ | 78/200 [00:03<00:05, 23.96it/s]
Step 81: 40%|ββββ | 81/200 [00:03<00:04, 23.82it/s]
Step 82: 40%|ββββ | 81/200 [00:03<00:04, 23.82it/s]
Step 83: 40%|ββββ | 81/200 [00:03<00:04, 23.82it/s]
Step 84: 40%|ββββ | 81/200 [00:03<00:04, 23.82it/s]
Step 84: 42%|βββββ | 84/200 [00:03<00:04, 23.83it/s]
Step 85: 42%|βββββ | 84/200 [00:03<00:04, 23.83it/s]
Step 86: 42%|βββββ | 84/200 [00:03<00:04, 23.83it/s]
Step 87: 42%|βββββ | 84/200 [00:03<00:04, 23.83it/s]
Step 87: 44%|βββββ | 87/200 [00:03<00:04, 23.85it/s]
Step 88: 44%|βββββ | 87/200 [00:03<00:04, 23.85it/s]
Step 89: 44%|βββββ | 87/200 [00:03<00:04, 23.85it/s]
Step 90: 44%|βββββ | 87/200 [00:03<00:04, 23.85it/s]
Step 90: 45%|βββββ | 90/200 [00:03<00:04, 23.84it/s]
Step 91: 45%|βββββ | 90/200 [00:03<00:04, 23.84it/s]
Step 92: 45%|βββββ | 90/200 [00:03<00:04, 23.84it/s]
Step 93: 45%|βββββ | 90/200 [00:03<00:04, 23.84it/s]
Step 93: 46%|βββββ | 93/200 [00:03<00:04, 23.91it/s]
Step 94: 46%|βββββ | 93/200 [00:03<00:04, 23.91it/s]
Step 95: 46%|βββββ | 93/200 [00:03<00:04, 23.91it/s]
Step 96: 46%|βββββ | 93/200 [00:04<00:04, 23.91it/s]
Step 96: 48%|βββββ | 96/200 [00:04<00:04, 23.89it/s]
Step 97: 48%|βββββ | 96/200 [00:04<00:04, 23.89it/s]
Step 98: 48%|βββββ | 96/200 [00:04<00:04, 23.89it/s]
Step 99: 48%|βββββ | 96/200 [00:04<00:04, 23.89it/s]
Step 99: 50%|βββββ | 99/200 [00:04<00:04, 23.94it/s]
Step 100: 50%|βββββ | 99/200 [00:04<00:04, 23.94it/s]
Step 101: 50%|βββββ | 99/200 [00:04<00:04, 23.94it/s]
Step 102: 50%|βββββ | 99/200 [00:04<00:04, 23.94it/s]
Step 102: 51%|βββββ | 102/200 [00:04<00:04, 23.93it/s]
Step 103: 51%|βββββ | 102/200 [00:04<00:04, 23.93it/s]
Step 104: 51%|βββββ | 102/200 [00:04<00:04, 23.93it/s]
Step 105: 51%|βββββ | 102/200 [00:04<00:04, 23.93it/s]
Step 105: 52%|ββββββ | 105/200 [00:04<00:03, 24.03it/s]
Step 106: 52%|ββββββ | 105/200 [00:04<00:03, 24.03it/s]
Step 107: 52%|ββββββ | 105/200 [00:04<00:03, 24.03it/s]
Step 108: 52%|ββββββ | 105/200 [00:04<00:03, 24.03it/s]
Step 108: 54%|ββββββ | 108/200 [00:04<00:03, 24.10it/s]
Step 109: 54%|ββββββ | 108/200 [00:04<00:03, 24.10it/s]
Step 110: 54%|ββββββ | 108/200 [00:04<00:03, 24.10it/s]
Step 111: 54%|ββββββ | 108/200 [00:04<00:03, 24.10it/s]
Step 111: 56%|ββββββ | 111/200 [00:04<00:03, 24.13it/s]
Step 112: 56%|ββββββ | 111/200 [00:04<00:03, 24.13it/s]
Step 113: 56%|ββββββ | 111/200 [00:04<00:03, 24.13it/s]
Step 114: 56%|ββββββ | 111/200 [00:04<00:03, 24.13it/s]
Step 114: 57%|ββββββ | 114/200 [00:04<00:03, 24.15it/s]
Step 115: 57%|ββββββ | 114/200 [00:04<00:03, 24.15it/s]
Step 116: 57%|ββββββ | 114/200 [00:04<00:03, 24.15it/s]
Step 117: 57%|ββββββ | 114/200 [00:04<00:03, 24.15it/s]
Step 117: 58%|ββββββ | 117/200 [00:04<00:03, 24.19it/s]
Step 118: 58%|ββββββ | 117/200 [00:04<00:03, 24.19it/s]
Step 119: 58%|ββββββ | 117/200 [00:04<00:03, 24.19it/s]
Step 120: 58%|ββββββ | 117/200 [00:04<00:03, 24.19it/s]
Step 120: 60%|ββββββ | 120/200 [00:04<00:03, 24.19it/s]
Step 121: 60%|ββββββ | 120/200 [00:05<00:03, 24.19it/s]
Step 122: 60%|ββββββ | 120/200 [00:05<00:03, 24.19it/s]
Step 123: 60%|ββββββ | 120/200 [00:05<00:03, 24.19it/s]
Step 123: 62%|βββββββ | 123/200 [00:05<00:03, 24.17it/s]
Step 124: 62%|βββββββ | 123/200 [00:05<00:03, 24.17it/s]
Step 125: 62%|βββββββ | 123/200 [00:05<00:03, 24.17it/s]
Step 126: 62%|βββββββ | 123/200 [00:05<00:03, 24.17it/s]
Step 126: 63%|βββββββ | 126/200 [00:05<00:03, 24.17it/s]
Step 127: 63%|βββββββ | 126/200 [00:05<00:03, 24.17it/s]
Step 128: 63%|βββββββ | 126/200 [00:05<00:03, 24.17it/s]
Step 129: 63%|βββββββ | 126/200 [00:05<00:03, 24.17it/s]
Step 129: 64%|βββββββ | 129/200 [00:05<00:02, 24.16it/s]
Step 130: 64%|βββββββ | 129/200 [00:05<00:02, 24.16it/s]
Step 131: 64%|βββββββ | 129/200 [00:05<00:02, 24.16it/s]
Step 132: 64%|βββββββ | 129/200 [00:05<00:02, 24.16it/s]
Step 132: 66%|βββββββ | 132/200 [00:05<00:02, 24.20it/s]
Step 133: 66%|βββββββ | 132/200 [00:05<00:02, 24.20it/s]
Step 134: 66%|βββββββ | 132/200 [00:05<00:02, 24.20it/s]
Step 135: 66%|βββββββ | 132/200 [00:05<00:02, 24.20it/s]
Step 135: 68%|βββββββ | 135/200 [00:05<00:02, 24.18it/s]
Step 136: 68%|βββββββ | 135/200 [00:05<00:02, 24.18it/s]
Step 137: 68%|βββββββ | 135/200 [00:05<00:02, 24.18it/s]
Step 138: 68%|βββββββ | 135/200 [00:05<00:02, 24.18it/s]
Step 138: 69%|βββββββ | 138/200 [00:05<00:02, 24.19it/s]
Step 139: 69%|βββββββ | 138/200 [00:05<00:02, 24.19it/s]
Step 140: 69%|βββββββ | 138/200 [00:05<00:02, 24.19it/s]
Step 141: 69%|βββββββ | 138/200 [00:05<00:02, 24.19it/s]
Step 141: 70%|βββββββ | 141/200 [00:05<00:02, 24.18it/s]
Step 142: 70%|βββββββ | 141/200 [00:05<00:02, 24.18it/s]
Step 143: 70%|βββββββ | 141/200 [00:05<00:02, 24.18it/s]
Step 144: 70%|βββββββ | 141/200 [00:05<00:02, 24.18it/s]
Step 144: 72%|ββββββββ | 144/200 [00:05<00:02, 24.19it/s]
Step 145: 72%|ββββββββ | 144/200 [00:06<00:02, 24.19it/s]
Step 146: 72%|ββββββββ | 144/200 [00:06<00:02, 24.19it/s]
Step 147: 72%|ββββββββ | 144/200 [00:06<00:02, 24.19it/s]
Step 147: 74%|ββββββββ | 147/200 [00:06<00:02, 24.17it/s]
Step 148: 74%|ββββββββ | 147/200 [00:06<00:02, 24.17it/s]
Step 149: 74%|ββββββββ | 147/200 [00:06<00:02, 24.17it/s]
Step 150: 74%|ββββββββ | 147/200 [00:06<00:02, 24.17it/s]
Step 150: 75%|ββββββββ | 150/200 [00:06<00:02, 24.18it/s]
Step 151: 75%|ββββββββ | 150/200 [00:06<00:02, 24.18it/s]
Step 152: 75%|ββββββββ | 150/200 [00:06<00:02, 24.18it/s]
Step 153: 75%|ββββββββ | 150/200 [00:06<00:02, 24.18it/s]
Step 153: 76%|ββββββββ | 153/200 [00:06<00:01, 24.17it/s]
Step 154: 76%|ββββββββ | 153/200 [00:06<00:01, 24.17it/s]
Step 155: 76%|ββββββββ | 153/200 [00:06<00:01, 24.17it/s]
Step 156: 76%|ββββββββ | 153/200 [00:06<00:01, 24.17it/s]
Step 156: 78%|ββββββββ | 156/200 [00:06<00:01, 24.16it/s]
Step 157: 78%|ββββββββ | 156/200 [00:06<00:01, 24.16it/s]
Step 158: 78%|ββββββββ | 156/200 [00:06<00:01, 24.16it/s]
Step 159: 78%|ββββββββ | 156/200 [00:06<00:01, 24.16it/s]
Step 159: 80%|ββββββββ | 159/200 [00:06<00:01, 24.13it/s]
Step 160: 80%|ββββββββ | 159/200 [00:06<00:01, 24.13it/s]
Step 161: 80%|ββββββββ | 159/200 [00:06<00:01, 24.13it/s]
Step 162: 80%|ββββββββ | 159/200 [00:06<00:01, 24.13it/s]
Step 162: 81%|ββββββββ | 162/200 [00:06<00:01, 24.12it/s]
Step 163: 81%|ββββββββ | 162/200 [00:06<00:01, 24.12it/s]
Step 164: 81%|ββββββββ | 162/200 [00:06<00:01, 24.12it/s]
Step 165: 81%|ββββββββ | 162/200 [00:06<00:01, 24.12it/s]
Step 165: 82%|βββββββββ | 165/200 [00:06<00:01, 24.15it/s]
Step 166: 82%|βββββββββ | 165/200 [00:06<00:01, 24.15it/s]
Step 167: 82%|βββββββββ | 165/200 [00:06<00:01, 24.15it/s]
Step 168: 82%|βββββββββ | 165/200 [00:06<00:01, 24.15it/s]
Step 168: 84%|βββββββββ | 168/200 [00:06<00:01, 24.15it/s]
Step 169: 84%|βββββββββ | 168/200 [00:07<00:01, 24.15it/s]
Step 170: 84%|βββββββββ | 168/200 [00:07<00:01, 24.15it/s]
Step 171: 84%|βββββββββ | 168/200 [00:07<00:01, 24.15it/s]
Step 171: 86%|βββββββββ | 171/200 [00:07<00:01, 24.12it/s]
Step 172: 86%|βββββββββ | 171/200 [00:07<00:01, 24.12it/s]
Step 173: 86%|βββββββββ | 171/200 [00:07<00:01, 24.12it/s]
Step 174: 86%|βββββββββ | 171/200 [00:07<00:01, 24.12it/s]
Step 174: 87%|βββββββββ | 174/200 [00:07<00:01, 24.11it/s]
Step 175: 87%|βββββββββ | 174/200 [00:07<00:01, 24.11it/s]
Step 176: 87%|βββββββββ | 174/200 [00:07<00:01, 24.11it/s]
Step 177: 87%|βββββββββ | 174/200 [00:07<00:01, 24.11it/s]
Step 177: 88%|βββββββββ | 177/200 [00:07<00:00, 24.11it/s]
Step 178: 88%|βββββββββ | 177/200 [00:07<00:00, 24.11it/s]
Step 179: 88%|βββββββββ | 177/200 [00:07<00:00, 24.11it/s]
Step 180: 88%|βββββββββ | 177/200 [00:07<00:00, 24.11it/s]
Step 180: 90%|βββββββββ | 180/200 [00:07<00:00, 24.12it/s]
Step 181: 90%|βββββββββ | 180/200 [00:07<00:00, 24.12it/s]
Step 182: 90%|βββββββββ | 180/200 [00:07<00:00, 24.12it/s]
Step 183: 90%|βββββββββ | 180/200 [00:07<00:00, 24.12it/s]
Step 183: 92%|ββββββββββ| 183/200 [00:07<00:00, 24.11it/s]
Step 184: 92%|ββββββββββ| 183/200 [00:07<00:00, 24.11it/s]
Step 185: 92%|ββββββββββ| 183/200 [00:07<00:00, 24.11it/s]
Step 186: 92%|ββββββββββ| 183/200 [00:07<00:00, 24.11it/s]
Step 186: 93%|ββββββββββ| 186/200 [00:07<00:00, 22.53it/s]
Step 187: 93%|ββββββββββ| 186/200 [00:07<00:00, 22.53it/s]
Step 188: 93%|ββββββββββ| 186/200 [00:07<00:00, 22.53it/s]
Step 189: 93%|ββββββββββ| 186/200 [00:07<00:00, 22.53it/s]
Step 189: 94%|ββββββββββ| 189/200 [00:07<00:00, 22.89it/s]
Step 190: 94%|ββββββββββ| 189/200 [00:07<00:00, 22.89it/s]
Step 191: 94%|ββββββββββ| 189/200 [00:07<00:00, 22.89it/s]
Step 192: 94%|ββββββββββ| 189/200 [00:08<00:00, 22.89it/s]
Step 192: 96%|ββββββββββ| 192/200 [00:08<00:00, 23.21it/s]
Step 193: 96%|ββββββββββ| 192/200 [00:08<00:00, 23.21it/s]
Step 194: 96%|ββββββββββ| 192/200 [00:08<00:00, 23.21it/s]
Step 195: 96%|ββββββββββ| 192/200 [00:08<00:00, 23.21it/s]
Step 195: 98%|ββββββββββ| 195/200 [00:08<00:00, 23.43it/s]
Step 196: 98%|ββββββββββ| 195/200 [00:08<00:00, 23.43it/s]
Step 197: 98%|ββββββββββ| 195/200 [00:08<00:00, 23.43it/s]
Step 198: 98%|ββββββββββ| 195/200 [00:08<00:00, 23.43it/s]
Step 198: 99%|ββββββββββ| 198/200 [00:08<00:00, 23.61it/s]
Step 199: 99%|ββββββββββ| 198/200 [00:08<00:00, 23.61it/s]
Step 200: 99%|ββββββββββ| 198/200 [00:08<00:00, 23.61it/s]
Step 200: 100%|ββββββββββ| 200/200 [00:08<00:00, 23.98it/s]
0%| | 0/200 [00:00<?, ?it/s]
Step 1: 0%| | 0/200 [00:00<?, ?it/s]
Step 2: 0%| | 0/200 [00:00<?, ?it/s]
Step 3: 0%| | 0/200 [00:00<?, ?it/s]
Step 4: 0%| | 0/200 [00:00<?, ?it/s]
Step 5: 0%| | 0/200 [00:00<?, ?it/s]
Step 6: 0%| | 0/200 [00:00<?, ?it/s]
Step 7: 0%| | 0/200 [00:00<?, ?it/s]
Step 8: 0%| | 0/200 [00:00<?, ?it/s]
Step 9: 0%| | 0/200 [00:00<?, ?it/s]
Step 10: 0%| | 0/200 [00:00<?, ?it/s]
Step 10: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 11: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 12: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 13: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 14: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 15: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 16: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 17: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 18: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 19: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 20: 5%|β | 10/200 [00:00<00:02, 94.60it/s]
Step 20: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 21: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 22: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 23: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 24: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 25: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 26: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 27: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 28: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 29: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 30: 10%|β | 20/200 [00:00<00:01, 92.65it/s]
Step 30: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 31: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 32: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 33: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 34: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 35: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 36: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 37: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 38: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 39: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 40: 15%|ββ | 30/200 [00:00<00:01, 92.69it/s]
Step 40: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 41: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 42: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 43: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 44: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 45: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 46: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 47: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 48: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 49: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 50: 20%|ββ | 40/200 [00:00<00:01, 93.16it/s]
Step 50: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 51: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 52: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 53: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 54: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 55: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 56: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 57: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 58: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 59: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 60: 25%|βββ | 50/200 [00:00<00:01, 93.17it/s]
Step 60: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 61: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 62: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 63: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 64: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 65: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 66: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 67: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 68: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 69: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 70: 30%|βββ | 60/200 [00:00<00:01, 93.23it/s]
Step 70: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 71: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 72: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 73: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 74: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 75: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 76: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 77: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 78: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 79: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 80: 35%|ββββ | 70/200 [00:00<00:01, 92.99it/s]
Step 80: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 81: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 82: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 83: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 84: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 85: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 86: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 87: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 88: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 89: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 90: 40%|ββββ | 80/200 [00:00<00:01, 92.31it/s]
Step 90: 45%|βββββ | 90/200 [00:00<00:01, 91.34it/s]
Step 91: 45%|βββββ | 90/200 [00:00<00:01, 91.34it/s]
Step 92: 45%|βββββ | 90/200 [00:00<00:01, 91.34it/s]
Step 93: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 94: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 95: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 96: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 97: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 98: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 99: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 100: 45%|βββββ | 90/200 [00:01<00:01, 91.34it/s]
Step 100: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 101: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 102: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 103: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 104: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 105: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 106: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 107: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 108: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 109: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 110: 50%|βββββ | 100/200 [00:01<00:01, 91.81it/s]
Step 110: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 111: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 112: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 113: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 114: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 115: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 116: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 117: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 118: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 119: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 120: 55%|ββββββ | 110/200 [00:01<00:00, 92.11it/s]
Step 120: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 121: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 122: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 123: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 124: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 125: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 126: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 127: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 128: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 129: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 130: 60%|ββββββ | 120/200 [00:01<00:00, 91.29it/s]
Step 130: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 131: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 132: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 133: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 134: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 135: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 136: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 137: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 138: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 139: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 140: 65%|βββββββ | 130/200 [00:01<00:00, 90.64it/s]
Step 140: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 141: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 142: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 143: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 144: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 145: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 146: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 147: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 148: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 149: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 150: 70%|βββββββ | 140/200 [00:01<00:00, 90.87it/s]
Step 150: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 151: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 152: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 153: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 154: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 155: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 156: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 157: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 158: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 159: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 160: 75%|ββββββββ | 150/200 [00:01<00:00, 90.63it/s]
Step 160: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 161: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 162: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 163: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 164: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 165: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 166: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 167: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 168: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 169: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 170: 80%|ββββββββ | 160/200 [00:01<00:00, 91.47it/s]
Step 170: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 171: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 172: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 173: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 174: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 175: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 176: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 177: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 178: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 179: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 180: 85%|βββββββββ | 170/200 [00:01<00:00, 91.64it/s]
Step 180: 90%|βββββββββ | 180/200 [00:01<00:00, 92.12it/s]
Step 181: 90%|βββββββββ | 180/200 [00:01<00:00, 92.12it/s]
Step 182: 90%|βββββββββ | 180/200 [00:01<00:00, 92.12it/s]
Step 183: 90%|βββββββββ | 180/200 [00:01<00:00, 92.12it/s]
Step 184: 90%|βββββββββ | 180/200 [00:01<00:00, 92.12it/s]
Step 185: 90%|βββββββββ | 180/200 [00:02<00:00, 92.12it/s]
Step 186: 90%|βββββββββ | 180/200 [00:02<00:00, 92.12it/s]
Step 187: 90%|βββββββββ | 180/200 [00:02<00:00, 92.12it/s]
Step 188: 90%|βββββββββ | 180/200 [00:02<00:00, 92.12it/s]
Step 189: 90%|βββββββββ | 180/200 [00:02<00:00, 92.12it/s]
Step 190: 90%|βββββββββ | 180/200 [00:02<00:00, 92.12it/s]
Step 190: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 191: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 192: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 193: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 194: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 195: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 196: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 197: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 198: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 199: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 200: 95%|ββββββββββ| 190/200 [00:02<00:00, 92.47it/s]
Step 200: 100%|ββββββββββ| 200/200 [00:02<00:00, 92.27it/s]
Step 200: 100%|ββββββββββ| 200/200 [00:02<00:00, 92.04it/s]
PSNRs:
Filtered Backprojection: -15.43
EPLL: -11.96
PatchNR: -13.96
- References:
Total running time of the script: (0 minutes 13.191 seconds)