Note
Click here to download the full example code
Image optimization with pyramid¶
This example showcases how an
image pyramid is
integrated in an NST with pystiche
.
With an image pyramid the optimization is not performed on a single but rather on multiple increasing resolutions. This procedure is often dubbed coarse-to-fine, since on the lower resolutions coarse structures are synthesized whereas on the higher levels the details are carved out.
This technique has the potential to reduce the convergence time as well as to enhance the overall result [GEB+17, LW16].
We start this example by importing everything we need and setting the device we will be working on.
23 import time
24
25 import pystiche
26 from pystiche import demo, enc, loss, optim, pyramid
27 from pystiche.image import show_image
28 from pystiche.misc import get_device, get_input_image
29
30 print(f"I'm working with pystiche=={pystiche.__version__}")
31
32 device = get_device()
33 print(f"I'm working with {device}")
Out:
I'm working with pystiche==1.1.0.dev44+gd9e3fd8
I'm working with cuda
At first we define a PerceptualLoss
that is used as
optimization criterion.
40 multi_layer_encoder = enc.vgg19_multi_layer_encoder()
41
42
43 content_layer = "relu4_2"
44 content_encoder = multi_layer_encoder.extract_encoder(content_layer)
45 content_weight = 1e0
46 content_loss = loss.FeatureReconstructionLoss(
47 content_encoder, score_weight=content_weight
48 )
49
50
51 style_layers = ("relu3_1", "relu4_1")
52 style_weight = 2e0
53
54
55 def get_style_op(encoder, layer_weight):
56 return loss.MRFLoss(encoder, patch_size=3, stride=2, score_weight=layer_weight)
57
58
59 style_loss = loss.MultiLayerEncodingLoss(
60 multi_layer_encoder, style_layers, get_style_op, score_weight=style_weight,
61 )
62
63 perceptual_loss = loss.PerceptualLoss(content_loss, style_loss).to(device)
64 print(perceptual_loss)
Out:
PerceptualLoss(
(content_loss): FeatureReconstructionLoss(
(encoder): VGGMultiLayerEncoder(layer=relu4_2, arch=vgg19, framework=torch)
)
(style_loss): MultiLayerEncodingLoss(
encoder=VGGMultiLayerEncoder(arch=vgg19, framework=torch), score_weight=2
(relu3_1): MRFLoss(score_weight=0.5, patch_size=(3, 3), stride=(2, 2))
(relu4_1): MRFLoss(score_weight=0.5, patch_size=(3, 3), stride=(2, 2))
)
)
Next up, we load and show the images that will be used in the NST.
70 images = demo.images()
71 images.download()
72 size = 500
77 content_image = images["bird2"].read(size=size, device=device)
78 show_image(content_image, title="Content image")
79 perceptual_loss.set_content_image(content_image)
84 style_image = images["mosaic"].read(size=size, device=device)
85 show_image(style_image, title="Style image")
86 perceptual_loss.set_style_image(style_image)
Image optimization without pyramid¶
As a baseline we use a standard image optimization without pyramid.
95 starting_point = "content"
96 input_image = get_input_image(starting_point, content_image=content_image)
97 show_image(input_image, title="Input image")
We time the NST performed by image_optimization()
and show the
result.
104 start_without_pyramid = time.time()
105 output_image = optim.image_optimization(input_image, perceptual_loss, num_steps=400)
106 stop_without_pyramid = time.time()
107
108 show_image(output_image, title="Output image without pyramid")
Out:
Image optimization: 0%| | 0/400 [00:00<?, ?it/s]
Image optimization: 0%| | 1/400 [00:00<01:20, 4.97it/s, loss=3.889e+01]
Image optimization: 0%| | 2/400 [00:00<01:11, 5.58it/s, loss=3.889e+01]
Image optimization: 1%| | 3/400 [00:00<01:07, 5.85it/s, loss=3.842e+01]
Image optimization: 1%|1 | 4/400 [00:00<01:06, 5.95it/s, loss=3.754e+01]
Image optimization: 1%|1 | 5/400 [00:00<01:06, 5.97it/s, loss=3.671e+01]
Image optimization: 2%|1 | 6/400 [00:01<01:05, 6.04it/s, loss=3.574e+01]
Image optimization: 2%|1 | 7/400 [00:01<01:06, 5.93it/s, loss=3.474e+01]
Image optimization: 2%|2 | 8/400 [00:01<01:05, 5.95it/s, loss=3.382e+01]
Image optimization: 2%|2 | 9/400 [00:01<01:05, 5.98it/s, loss=3.304e+01]
Image optimization: 2%|2 | 10/400 [00:01<01:04, 6.02it/s, loss=3.216e+01]
Image optimization: 3%|2 | 11/400 [00:01<01:04, 6.04it/s, loss=3.149e+01]
Image optimization: 3%|3 | 12/400 [00:02<01:03, 6.07it/s, loss=3.091e+01]
Image optimization: 3%|3 | 13/400 [00:02<01:04, 5.98it/s, loss=3.039e+01]
Image optimization: 4%|3 | 14/400 [00:02<01:05, 5.92it/s, loss=2.993e+01]
Image optimization: 4%|3 | 15/400 [00:02<01:04, 5.97it/s, loss=2.952e+01]
Image optimization: 4%|4 | 16/400 [00:02<01:04, 5.99it/s, loss=2.915e+01]
Image optimization: 4%|4 | 17/400 [00:02<01:03, 6.02it/s, loss=2.881e+01]
Image optimization: 4%|4 | 18/400 [00:03<01:03, 6.04it/s, loss=2.850e+01]
Image optimization: 5%|4 | 19/400 [00:03<01:03, 6.01it/s, loss=2.822e+01]
Image optimization: 5%|5 | 20/400 [00:03<01:04, 5.89it/s, loss=2.798e+01]
Image optimization: 5%|5 | 21/400 [00:03<01:04, 5.87it/s, loss=2.775e+01]
Image optimization: 6%|5 | 22/400 [00:03<01:03, 5.91it/s, loss=2.754e+01]
Image optimization: 6%|5 | 23/400 [00:03<01:03, 5.94it/s, loss=2.735e+01]
Image optimization: 6%|6 | 24/400 [00:04<01:02, 5.98it/s, loss=2.718e+01]
Image optimization: 6%|6 | 25/400 [00:04<01:03, 5.94it/s, loss=2.704e+01]
Image optimization: 6%|6 | 26/400 [00:04<01:03, 5.85it/s, loss=2.690e+01]
Image optimization: 7%|6 | 27/400 [00:04<01:04, 5.82it/s, loss=2.675e+01]
Image optimization: 7%|7 | 28/400 [00:04<01:03, 5.86it/s, loss=2.663e+01]
Image optimization: 7%|7 | 29/400 [00:04<01:03, 5.89it/s, loss=2.651e+01]
Image optimization: 8%|7 | 30/400 [00:05<01:03, 5.85it/s, loss=2.639e+01]
Image optimization: 8%|7 | 31/400 [00:05<01:02, 5.88it/s, loss=2.629e+01]
Image optimization: 8%|8 | 32/400 [00:05<01:02, 5.88it/s, loss=2.619e+01]
Image optimization: 8%|8 | 33/400 [00:05<01:03, 5.82it/s, loss=2.610e+01]
Image optimization: 8%|8 | 34/400 [00:05<01:02, 5.84it/s, loss=2.602e+01]
Image optimization: 9%|8 | 35/400 [00:05<01:02, 5.81it/s, loss=2.594e+01]
Image optimization: 9%|9 | 36/400 [00:06<01:02, 5.85it/s, loss=2.586e+01]
Image optimization: 9%|9 | 37/400 [00:06<01:02, 5.82it/s, loss=2.579e+01]
Image optimization: 10%|9 | 38/400 [00:06<01:02, 5.82it/s, loss=2.572e+01]
Image optimization: 10%|9 | 39/400 [00:06<01:02, 5.78it/s, loss=2.566e+01]
Image optimization: 10%|# | 40/400 [00:06<01:01, 5.82it/s, loss=2.559e+01]
Image optimization: 10%|# | 41/400 [00:06<01:02, 5.78it/s, loss=2.553e+01]
Image optimization: 10%|# | 42/400 [00:07<01:01, 5.82it/s, loss=2.547e+01]
Image optimization: 11%|# | 43/400 [00:07<01:01, 5.79it/s, loss=2.542e+01]
Image optimization: 11%|#1 | 44/400 [00:07<01:01, 5.79it/s, loss=2.536e+01]
Image optimization: 11%|#1 | 45/400 [00:07<01:01, 5.74it/s, loss=2.531e+01]
Image optimization: 12%|#1 | 46/400 [00:07<01:01, 5.76it/s, loss=2.526e+01]
Image optimization: 12%|#1 | 47/400 [00:08<01:01, 5.73it/s, loss=2.522e+01]
Image optimization: 12%|#2 | 48/400 [00:08<01:01, 5.74it/s, loss=2.518e+01]
Image optimization: 12%|#2 | 49/400 [00:08<01:01, 5.75it/s, loss=2.514e+01]
Image optimization: 12%|#2 | 50/400 [00:08<01:01, 5.71it/s, loss=2.509e+01]
Image optimization: 13%|#2 | 51/400 [00:08<01:01, 5.71it/s, loss=2.506e+01]
Image optimization: 13%|#3 | 52/400 [00:08<01:00, 5.74it/s, loss=2.502e+01]
Image optimization: 13%|#3 | 53/400 [00:09<01:00, 5.72it/s, loss=2.499e+01]
Image optimization: 14%|#3 | 54/400 [00:09<01:00, 5.75it/s, loss=2.496e+01]
Image optimization: 14%|#3 | 55/400 [00:09<01:00, 5.74it/s, loss=2.492e+01]
Image optimization: 14%|#4 | 56/400 [00:09<01:00, 5.72it/s, loss=2.489e+01]
Image optimization: 14%|#4 | 57/400 [00:09<00:59, 5.72it/s, loss=2.486e+01]
Image optimization: 14%|#4 | 58/400 [00:09<01:00, 5.68it/s, loss=2.483e+01]
Image optimization: 15%|#4 | 59/400 [00:10<00:59, 5.69it/s, loss=2.480e+01]
Image optimization: 15%|#5 | 60/400 [00:10<00:59, 5.69it/s, loss=2.477e+01]
Image optimization: 15%|#5 | 61/400 [00:10<00:59, 5.67it/s, loss=2.475e+01]
Image optimization: 16%|#5 | 62/400 [00:10<00:59, 5.66it/s, loss=2.472e+01]
Image optimization: 16%|#5 | 63/400 [00:10<00:59, 5.68it/s, loss=2.469e+01]
Image optimization: 16%|#6 | 64/400 [00:10<00:59, 5.64it/s, loss=2.467e+01]
Image optimization: 16%|#6 | 65/400 [00:11<00:59, 5.65it/s, loss=2.465e+01]
Image optimization: 16%|#6 | 66/400 [00:11<00:58, 5.67it/s, loss=2.462e+01]
Image optimization: 17%|#6 | 67/400 [00:11<00:59, 5.64it/s, loss=2.460e+01]
Image optimization: 17%|#7 | 68/400 [00:11<00:59, 5.62it/s, loss=2.457e+01]
Image optimization: 17%|#7 | 69/400 [00:11<00:59, 5.58it/s, loss=2.456e+01]
Image optimization: 18%|#7 | 70/400 [00:12<00:59, 5.57it/s, loss=2.454e+01]
Image optimization: 18%|#7 | 71/400 [00:12<00:58, 5.60it/s, loss=2.452e+01]
Image optimization: 18%|#8 | 72/400 [00:12<00:58, 5.62it/s, loss=2.450e+01]
Image optimization: 18%|#8 | 73/400 [00:12<00:58, 5.59it/s, loss=2.448e+01]
Image optimization: 18%|#8 | 74/400 [00:12<00:58, 5.56it/s, loss=2.446e+01]
Image optimization: 19%|#8 | 75/400 [00:12<00:58, 5.56it/s, loss=2.444e+01]
Image optimization: 19%|#9 | 76/400 [00:13<00:58, 5.54it/s, loss=2.442e+01]
Image optimization: 19%|#9 | 77/400 [00:13<00:58, 5.53it/s, loss=2.440e+01]
Image optimization: 20%|#9 | 78/400 [00:13<00:58, 5.55it/s, loss=2.439e+01]
Image optimization: 20%|#9 | 79/400 [00:13<00:57, 5.56it/s, loss=2.438e+01]
Image optimization: 20%|## | 80/400 [00:13<00:57, 5.54it/s, loss=2.436e+01]
Image optimization: 20%|## | 81/400 [00:14<00:57, 5.52it/s, loss=2.434e+01]
Image optimization: 20%|## | 82/400 [00:14<00:57, 5.50it/s, loss=2.433e+01]
Image optimization: 21%|## | 83/400 [00:14<00:57, 5.50it/s, loss=2.431e+01]
Image optimization: 21%|##1 | 84/400 [00:14<00:57, 5.48it/s, loss=2.430e+01]
Image optimization: 21%|##1 | 85/400 [00:14<00:57, 5.47it/s, loss=2.429e+01]
Image optimization: 22%|##1 | 86/400 [00:14<00:57, 5.47it/s, loss=2.427e+01]
Image optimization: 22%|##1 | 87/400 [00:15<00:57, 5.46it/s, loss=2.426e+01]
Image optimization: 22%|##2 | 88/400 [00:15<00:57, 5.47it/s, loss=2.424e+01]
Image optimization: 22%|##2 | 89/400 [00:15<00:56, 5.47it/s, loss=2.423e+01]
Image optimization: 22%|##2 | 90/400 [00:15<00:56, 5.46it/s, loss=2.422e+01]
Image optimization: 23%|##2 | 91/400 [00:15<00:56, 5.46it/s, loss=2.420e+01]
Image optimization: 23%|##3 | 92/400 [00:16<00:56, 5.47it/s, loss=2.419e+01]
Image optimization: 23%|##3 | 93/400 [00:16<00:56, 5.48it/s, loss=2.418e+01]
Image optimization: 24%|##3 | 94/400 [00:16<00:56, 5.45it/s, loss=2.416e+01]
Image optimization: 24%|##3 | 95/400 [00:16<00:55, 5.47it/s, loss=2.415e+01]
Image optimization: 24%|##4 | 96/400 [00:16<00:55, 5.47it/s, loss=2.414e+01]
Image optimization: 24%|##4 | 97/400 [00:16<00:55, 5.46it/s, loss=2.413e+01]
Image optimization: 24%|##4 | 98/400 [00:17<00:55, 5.47it/s, loss=2.412e+01]
Image optimization: 25%|##4 | 99/400 [00:17<00:55, 5.46it/s, loss=2.411e+01]
Image optimization: 25%|##5 | 100/400 [00:17<00:54, 5.47it/s, loss=2.410e+01]
Image optimization: 25%|##5 | 101/400 [00:17<00:54, 5.45it/s, loss=2.409e+01]
Image optimization: 26%|##5 | 102/400 [00:17<00:54, 5.45it/s, loss=2.408e+01]
Image optimization: 26%|##5 | 103/400 [00:18<00:54, 5.44it/s, loss=2.407e+01]
Image optimization: 26%|##6 | 104/400 [00:18<00:54, 5.40it/s, loss=2.406e+01]
Image optimization: 26%|##6 | 105/400 [00:18<00:54, 5.37it/s, loss=2.405e+01]
Image optimization: 26%|##6 | 106/400 [00:18<00:54, 5.36it/s, loss=2.404e+01]
Image optimization: 27%|##6 | 107/400 [00:18<00:54, 5.40it/s, loss=2.403e+01]
Image optimization: 27%|##7 | 108/400 [00:19<00:54, 5.40it/s, loss=2.402e+01]
Image optimization: 27%|##7 | 109/400 [00:19<00:53, 5.41it/s, loss=2.401e+01]
Image optimization: 28%|##7 | 110/400 [00:19<00:53, 5.42it/s, loss=2.400e+01]
Image optimization: 28%|##7 | 111/400 [00:19<00:53, 5.42it/s, loss=2.399e+01]
Image optimization: 28%|##8 | 112/400 [00:19<00:53, 5.40it/s, loss=2.398e+01]
Image optimization: 28%|##8 | 113/400 [00:19<00:53, 5.39it/s, loss=2.397e+01]
Image optimization: 28%|##8 | 114/400 [00:20<00:53, 5.38it/s, loss=2.396e+01]
Image optimization: 29%|##8 | 115/400 [00:20<00:53, 5.36it/s, loss=2.396e+01]
Image optimization: 29%|##9 | 116/400 [00:20<00:52, 5.38it/s, loss=2.395e+01]
Image optimization: 29%|##9 | 117/400 [00:20<00:52, 5.40it/s, loss=2.394e+01]
Image optimization: 30%|##9 | 118/400 [00:20<00:52, 5.42it/s, loss=2.393e+01]
Image optimization: 30%|##9 | 119/400 [00:21<00:51, 5.42it/s, loss=2.393e+01]
Image optimization: 30%|### | 120/400 [00:21<00:51, 5.42it/s, loss=2.392e+01]
Image optimization: 30%|### | 121/400 [00:21<00:51, 5.42it/s, loss=2.391e+01]
Image optimization: 30%|### | 122/400 [00:21<00:51, 5.39it/s, loss=2.390e+01]
Image optimization: 31%|### | 123/400 [00:21<00:51, 5.35it/s, loss=2.390e+01]
Image optimization: 31%|###1 | 124/400 [00:21<00:51, 5.35it/s, loss=2.389e+01]
Image optimization: 31%|###1 | 125/400 [00:22<00:51, 5.39it/s, loss=2.388e+01]
Image optimization: 32%|###1 | 126/400 [00:22<00:50, 5.41it/s, loss=2.387e+01]
Image optimization: 32%|###1 | 127/400 [00:22<00:50, 5.42it/s, loss=2.387e+01]
Image optimization: 32%|###2 | 128/400 [00:22<00:50, 5.42it/s, loss=2.386e+01]
Image optimization: 32%|###2 | 129/400 [00:22<00:50, 5.38it/s, loss=2.385e+01]
Image optimization: 32%|###2 | 130/400 [00:23<00:50, 5.33it/s, loss=2.384e+01]
Image optimization: 33%|###2 | 131/400 [00:23<00:50, 5.36it/s, loss=2.384e+01]
Image optimization: 33%|###3 | 132/400 [00:23<00:49, 5.38it/s, loss=2.383e+01]
Image optimization: 33%|###3 | 133/400 [00:23<00:49, 5.38it/s, loss=2.383e+01]
Image optimization: 34%|###3 | 134/400 [00:23<00:49, 5.38it/s, loss=2.382e+01]
Image optimization: 34%|###3 | 135/400 [00:24<00:49, 5.34it/s, loss=2.381e+01]
Image optimization: 34%|###4 | 136/400 [00:24<00:49, 5.34it/s, loss=2.381e+01]
Image optimization: 34%|###4 | 137/400 [00:24<00:49, 5.37it/s, loss=2.380e+01]
Image optimization: 34%|###4 | 138/400 [00:24<00:48, 5.39it/s, loss=2.379e+01]
Image optimization: 35%|###4 | 139/400 [00:24<00:48, 5.38it/s, loss=2.379e+01]
Image optimization: 35%|###5 | 140/400 [00:24<00:48, 5.35it/s, loss=2.379e+01]
Image optimization: 35%|###5 | 141/400 [00:25<00:48, 5.31it/s, loss=2.378e+01]
Image optimization: 36%|###5 | 142/400 [00:25<00:48, 5.34it/s, loss=2.378e+01]
Image optimization: 36%|###5 | 143/400 [00:25<00:47, 5.37it/s, loss=2.377e+01]
Image optimization: 36%|###6 | 144/400 [00:25<00:47, 5.39it/s, loss=2.377e+01]
Image optimization: 36%|###6 | 145/400 [00:25<00:47, 5.38it/s, loss=2.376e+01]
Image optimization: 36%|###6 | 146/400 [00:26<00:47, 5.36it/s, loss=2.376e+01]
Image optimization: 37%|###6 | 147/400 [00:26<00:47, 5.32it/s, loss=2.375e+01]
Image optimization: 37%|###7 | 148/400 [00:26<00:47, 5.35it/s, loss=2.374e+01]
Image optimization: 37%|###7 | 149/400 [00:26<00:46, 5.38it/s, loss=2.374e+01]
Image optimization: 38%|###7 | 150/400 [00:26<00:46, 5.39it/s, loss=2.373e+01]
Image optimization: 38%|###7 | 151/400 [00:27<00:46, 5.35it/s, loss=2.373e+01]
Image optimization: 38%|###8 | 152/400 [00:27<00:46, 5.31it/s, loss=2.372e+01]
Image optimization: 38%|###8 | 153/400 [00:27<00:46, 5.34it/s, loss=2.372e+01]
Image optimization: 38%|###8 | 154/400 [00:27<00:45, 5.37it/s, loss=2.371e+01]
Image optimization: 39%|###8 | 155/400 [00:27<00:45, 5.35it/s, loss=2.371e+01]
Image optimization: 39%|###9 | 156/400 [00:27<00:45, 5.33it/s, loss=2.370e+01]
Image optimization: 39%|###9 | 157/400 [00:28<00:45, 5.30it/s, loss=2.370e+01]
Image optimization: 40%|###9 | 158/400 [00:28<00:45, 5.31it/s, loss=2.369e+01]
Image optimization: 40%|###9 | 159/400 [00:28<00:45, 5.29it/s, loss=2.369e+01]
Image optimization: 40%|#### | 160/400 [00:28<00:45, 5.29it/s, loss=2.368e+01]
Image optimization: 40%|#### | 161/400 [00:28<00:44, 5.32it/s, loss=2.368e+01]
Image optimization: 40%|#### | 162/400 [00:29<00:44, 5.30it/s, loss=2.367e+01]
Image optimization: 41%|#### | 163/400 [00:29<00:44, 5.28it/s, loss=2.367e+01]
Image optimization: 41%|####1 | 164/400 [00:29<00:44, 5.31it/s, loss=2.366e+01]
Image optimization: 41%|####1 | 165/400 [00:29<00:44, 5.31it/s, loss=2.366e+01]
Image optimization: 42%|####1 | 166/400 [00:29<00:44, 5.31it/s, loss=2.366e+01]
Image optimization: 42%|####1 | 167/400 [00:30<00:44, 5.29it/s, loss=2.365e+01]
Image optimization: 42%|####2 | 168/400 [00:30<00:43, 5.31it/s, loss=2.365e+01]
Image optimization: 42%|####2 | 169/400 [00:30<00:43, 5.30it/s, loss=2.364e+01]
Image optimization: 42%|####2 | 170/400 [00:30<00:43, 5.27it/s, loss=2.364e+01]
Image optimization: 43%|####2 | 171/400 [00:30<00:43, 5.30it/s, loss=2.364e+01]
Image optimization: 43%|####3 | 172/400 [00:30<00:42, 5.31it/s, loss=2.363e+01]
Image optimization: 43%|####3 | 173/400 [00:31<00:42, 5.32it/s, loss=2.363e+01]
Image optimization: 44%|####3 | 174/400 [00:31<00:42, 5.29it/s, loss=2.362e+01]
Image optimization: 44%|####3 | 175/400 [00:31<00:42, 5.30it/s, loss=2.362e+01]
Image optimization: 44%|####4 | 176/400 [00:31<00:42, 5.31it/s, loss=2.362e+01]
Image optimization: 44%|####4 | 177/400 [00:31<00:42, 5.29it/s, loss=2.361e+01]
Image optimization: 44%|####4 | 178/400 [00:32<00:41, 5.29it/s, loss=2.361e+01]
Image optimization: 45%|####4 | 179/400 [00:32<00:41, 5.27it/s, loss=2.360e+01]
Image optimization: 45%|####5 | 180/400 [00:32<00:41, 5.25it/s, loss=2.360e+01]
Image optimization: 45%|####5 | 181/400 [00:32<00:41, 5.28it/s, loss=2.360e+01]
Image optimization: 46%|####5 | 182/400 [00:32<00:41, 5.31it/s, loss=2.359e+01]
Image optimization: 46%|####5 | 183/400 [00:33<00:41, 5.29it/s, loss=2.359e+01]
Image optimization: 46%|####6 | 184/400 [00:33<00:41, 5.26it/s, loss=2.358e+01]
Image optimization: 46%|####6 | 185/400 [00:33<00:40, 5.28it/s, loss=2.358e+01]
Image optimization: 46%|####6 | 186/400 [00:33<00:40, 5.27it/s, loss=2.358e+01]
Image optimization: 47%|####6 | 187/400 [00:33<00:40, 5.31it/s, loss=2.357e+01]
Image optimization: 47%|####6 | 188/400 [00:33<00:39, 5.34it/s, loss=2.357e+01]
Image optimization: 47%|####7 | 189/400 [00:34<00:39, 5.33it/s, loss=2.357e+01]
Image optimization: 48%|####7 | 190/400 [00:34<00:39, 5.29it/s, loss=2.356e+01]
Image optimization: 48%|####7 | 191/400 [00:34<00:39, 5.30it/s, loss=2.356e+01]
Image optimization: 48%|####8 | 192/400 [00:34<00:39, 5.32it/s, loss=2.355e+01]
Image optimization: 48%|####8 | 193/400 [00:34<00:38, 5.31it/s, loss=2.355e+01]
Image optimization: 48%|####8 | 194/400 [00:35<00:38, 5.30it/s, loss=2.355e+01]
Image optimization: 49%|####8 | 195/400 [00:35<00:38, 5.33it/s, loss=2.354e+01]
Image optimization: 49%|####9 | 196/400 [00:35<00:38, 5.33it/s, loss=2.354e+01]
Image optimization: 49%|####9 | 197/400 [00:35<00:38, 5.31it/s, loss=2.354e+01]
Image optimization: 50%|####9 | 198/400 [00:35<00:38, 5.31it/s, loss=2.353e+01]
Image optimization: 50%|####9 | 199/400 [00:36<00:37, 5.30it/s, loss=2.353e+01]
Image optimization: 50%|##### | 200/400 [00:36<00:37, 5.30it/s, loss=2.352e+01]
Image optimization: 50%|##### | 201/400 [00:36<00:37, 5.29it/s, loss=2.352e+01]
Image optimization: 50%|##### | 202/400 [00:36<00:37, 5.29it/s, loss=2.352e+01]
Image optimization: 51%|##### | 203/400 [00:36<00:37, 5.28it/s, loss=2.351e+01]
Image optimization: 51%|#####1 | 204/400 [00:37<00:37, 5.26it/s, loss=2.351e+01]
Image optimization: 51%|#####1 | 205/400 [00:37<00:36, 5.30it/s, loss=2.351e+01]
Image optimization: 52%|#####1 | 206/400 [00:37<00:36, 5.32it/s, loss=2.350e+01]
Image optimization: 52%|#####1 | 207/400 [00:37<00:36, 5.32it/s, loss=2.350e+01]
Image optimization: 52%|#####2 | 208/400 [00:37<00:36, 5.30it/s, loss=2.350e+01]
Image optimization: 52%|#####2 | 209/400 [00:37<00:36, 5.29it/s, loss=2.349e+01]
Image optimization: 52%|#####2 | 210/400 [00:38<00:35, 5.32it/s, loss=2.349e+01]
Image optimization: 53%|#####2 | 211/400 [00:38<00:35, 5.32it/s, loss=2.349e+01]
Image optimization: 53%|#####3 | 212/400 [00:38<00:35, 5.32it/s, loss=2.348e+01]
Image optimization: 53%|#####3 | 213/400 [00:38<00:35, 5.32it/s, loss=2.348e+01]
Image optimization: 54%|#####3 | 214/400 [00:38<00:34, 5.36it/s, loss=2.348e+01]
Image optimization: 54%|#####3 | 215/400 [00:39<00:34, 5.36it/s, loss=2.348e+01]
Image optimization: 54%|#####4 | 216/400 [00:39<00:34, 5.35it/s, loss=2.347e+01]
Image optimization: 54%|#####4 | 217/400 [00:39<00:34, 5.32it/s, loss=2.347e+01]
Image optimization: 55%|#####4 | 218/400 [00:39<00:34, 5.35it/s, loss=2.347e+01]
Image optimization: 55%|#####4 | 219/400 [00:39<00:33, 5.38it/s, loss=2.346e+01]
Image optimization: 55%|#####5 | 220/400 [00:39<00:33, 5.41it/s, loss=2.346e+01]
Image optimization: 55%|#####5 | 221/400 [00:40<00:33, 5.42it/s, loss=2.346e+01]
Image optimization: 56%|#####5 | 222/400 [00:40<00:32, 5.41it/s, loss=2.346e+01]
Image optimization: 56%|#####5 | 223/400 [00:40<00:32, 5.39it/s, loss=2.345e+01]
Image optimization: 56%|#####6 | 224/400 [00:40<00:32, 5.36it/s, loss=2.345e+01]
Image optimization: 56%|#####6 | 225/400 [00:40<00:32, 5.35it/s, loss=2.345e+01]
Image optimization: 56%|#####6 | 226/400 [00:41<00:32, 5.39it/s, loss=2.344e+01]
Image optimization: 57%|#####6 | 227/400 [00:41<00:32, 5.40it/s, loss=2.344e+01]
Image optimization: 57%|#####6 | 228/400 [00:41<00:31, 5.41it/s, loss=2.344e+01]
Image optimization: 57%|#####7 | 229/400 [00:41<00:31, 5.41it/s, loss=2.344e+01]
Image optimization: 57%|#####7 | 230/400 [00:41<00:31, 5.42it/s, loss=2.343e+01]
Image optimization: 58%|#####7 | 231/400 [00:42<00:31, 5.38it/s, loss=2.343e+01]
Image optimization: 58%|#####8 | 232/400 [00:42<00:31, 5.37it/s, loss=2.343e+01]
Image optimization: 58%|#####8 | 233/400 [00:42<00:31, 5.35it/s, loss=2.343e+01]
Image optimization: 58%|#####8 | 234/400 [00:42<00:30, 5.39it/s, loss=2.342e+01]
Image optimization: 59%|#####8 | 235/400 [00:42<00:30, 5.40it/s, loss=2.342e+01]
Image optimization: 59%|#####8 | 236/400 [00:42<00:30, 5.40it/s, loss=2.342e+01]
Image optimization: 59%|#####9 | 237/400 [00:43<00:30, 5.41it/s, loss=2.342e+01]
Image optimization: 60%|#####9 | 238/400 [00:43<00:30, 5.37it/s, loss=2.341e+01]
Image optimization: 60%|#####9 | 239/400 [00:43<00:30, 5.36it/s, loss=2.341e+01]
Image optimization: 60%|###### | 240/400 [00:43<00:29, 5.36it/s, loss=2.341e+01]
Image optimization: 60%|###### | 241/400 [00:43<00:29, 5.39it/s, loss=2.341e+01]
Image optimization: 60%|###### | 242/400 [00:44<00:29, 5.41it/s, loss=2.340e+01]
Image optimization: 61%|###### | 243/400 [00:44<00:28, 5.42it/s, loss=2.340e+01]
Image optimization: 61%|######1 | 244/400 [00:44<00:28, 5.44it/s, loss=2.340e+01]
Image optimization: 61%|######1 | 245/400 [00:44<00:28, 5.44it/s, loss=2.339e+01]
Image optimization: 62%|######1 | 246/400 [00:44<00:28, 5.45it/s, loss=2.339e+01]
Image optimization: 62%|######1 | 247/400 [00:44<00:28, 5.46it/s, loss=2.339e+01]
Image optimization: 62%|######2 | 248/400 [00:45<00:27, 5.45it/s, loss=2.339e+01]
Image optimization: 62%|######2 | 249/400 [00:45<00:27, 5.46it/s, loss=2.338e+01]
Image optimization: 62%|######2 | 250/400 [00:45<00:27, 5.46it/s, loss=2.338e+01]
Image optimization: 63%|######2 | 251/400 [00:45<00:27, 5.47it/s, loss=2.338e+01]
Image optimization: 63%|######3 | 252/400 [00:45<00:27, 5.46it/s, loss=2.338e+01]
Image optimization: 63%|######3 | 253/400 [00:46<00:26, 5.46it/s, loss=2.337e+01]
Image optimization: 64%|######3 | 254/400 [00:46<00:26, 5.46it/s, loss=2.337e+01]
Image optimization: 64%|######3 | 255/400 [00:46<00:26, 5.46it/s, loss=2.337e+01]
Image optimization: 64%|######4 | 256/400 [00:46<00:26, 5.46it/s, loss=2.337e+01]
Image optimization: 64%|######4 | 257/400 [00:46<00:26, 5.47it/s, loss=2.337e+01]
Image optimization: 64%|######4 | 258/400 [00:47<00:26, 5.42it/s, loss=2.336e+01]
Image optimization: 65%|######4 | 259/400 [00:47<00:26, 5.40it/s, loss=2.336e+01]
Image optimization: 65%|######5 | 260/400 [00:47<00:25, 5.40it/s, loss=2.336e+01]
Image optimization: 65%|######5 | 261/400 [00:47<00:25, 5.37it/s, loss=2.336e+01]
Image optimization: 66%|######5 | 262/400 [00:47<00:25, 5.38it/s, loss=2.336e+01]
Image optimization: 66%|######5 | 263/400 [00:47<00:25, 5.41it/s, loss=2.335e+01]
Image optimization: 66%|######6 | 264/400 [00:48<00:25, 5.40it/s, loss=2.335e+01]
Image optimization: 66%|######6 | 265/400 [00:48<00:24, 5.44it/s, loss=2.335e+01]
Image optimization: 66%|######6 | 266/400 [00:48<00:24, 5.44it/s, loss=2.335e+01]
Image optimization: 67%|######6 | 267/400 [00:48<00:24, 5.46it/s, loss=2.334e+01]
Image optimization: 67%|######7 | 268/400 [00:48<00:24, 5.46it/s, loss=2.334e+01]
Image optimization: 67%|######7 | 269/400 [00:49<00:24, 5.44it/s, loss=2.334e+01]
Image optimization: 68%|######7 | 270/400 [00:49<00:23, 5.45it/s, loss=2.334e+01]
Image optimization: 68%|######7 | 271/400 [00:49<00:23, 5.46it/s, loss=2.334e+01]
Image optimization: 68%|######8 | 272/400 [00:49<00:23, 5.46it/s, loss=2.333e+01]
Image optimization: 68%|######8 | 273/400 [00:49<00:23, 5.44it/s, loss=2.333e+01]
Image optimization: 68%|######8 | 274/400 [00:49<00:23, 5.44it/s, loss=2.333e+01]
Image optimization: 69%|######8 | 275/400 [00:50<00:23, 5.43it/s, loss=2.333e+01]
Image optimization: 69%|######9 | 276/400 [00:50<00:22, 5.42it/s, loss=2.333e+01]
Image optimization: 69%|######9 | 277/400 [00:50<00:22, 5.40it/s, loss=2.332e+01]
Image optimization: 70%|######9 | 278/400 [00:50<00:22, 5.39it/s, loss=2.332e+01]
Image optimization: 70%|######9 | 279/400 [00:50<00:22, 5.38it/s, loss=2.332e+01]
Image optimization: 70%|####### | 280/400 [00:51<00:22, 5.39it/s, loss=2.332e+01]
Image optimization: 70%|####### | 281/400 [00:51<00:21, 5.42it/s, loss=2.332e+01]
Image optimization: 70%|####### | 282/400 [00:51<00:21, 5.40it/s, loss=2.331e+01]
Image optimization: 71%|####### | 283/400 [00:51<00:21, 5.41it/s, loss=2.331e+01]
Image optimization: 71%|#######1 | 284/400 [00:51<00:21, 5.44it/s, loss=2.331e+01]
Image optimization: 71%|#######1 | 285/400 [00:51<00:21, 5.43it/s, loss=2.331e+01]
Image optimization: 72%|#######1 | 286/400 [00:52<00:20, 5.47it/s, loss=2.331e+01]
Image optimization: 72%|#######1 | 287/400 [00:52<00:20, 5.46it/s, loss=2.330e+01]
Image optimization: 72%|#######2 | 288/400 [00:52<00:20, 5.46it/s, loss=2.330e+01]
Image optimization: 72%|#######2 | 289/400 [00:52<00:20, 5.45it/s, loss=2.330e+01]
Image optimization: 72%|#######2 | 290/400 [00:52<00:20, 5.43it/s, loss=2.330e+01]
Image optimization: 73%|#######2 | 291/400 [00:53<00:19, 5.46it/s, loss=2.330e+01]
Image optimization: 73%|#######3 | 292/400 [00:53<00:19, 5.47it/s, loss=2.330e+01]
Image optimization: 73%|#######3 | 293/400 [00:53<00:19, 5.45it/s, loss=2.329e+01]
Image optimization: 74%|#######3 | 294/400 [00:53<00:19, 5.46it/s, loss=2.329e+01]
Image optimization: 74%|#######3 | 295/400 [00:53<00:19, 5.46it/s, loss=2.329e+01]
Image optimization: 74%|#######4 | 296/400 [00:54<00:18, 5.48it/s, loss=2.329e+01]
Image optimization: 74%|#######4 | 297/400 [00:54<00:18, 5.45it/s, loss=2.329e+01]
Image optimization: 74%|#######4 | 298/400 [00:54<00:18, 5.46it/s, loss=2.328e+01]
Image optimization: 75%|#######4 | 299/400 [00:54<00:18, 5.45it/s, loss=2.328e+01]
Image optimization: 75%|#######5 | 300/400 [00:54<00:18, 5.45it/s, loss=2.328e+01]
Image optimization: 75%|#######5 | 301/400 [00:54<00:18, 5.46it/s, loss=2.328e+01]
Image optimization: 76%|#######5 | 302/400 [00:55<00:17, 5.47it/s, loss=2.328e+01]
Image optimization: 76%|#######5 | 303/400 [00:55<00:17, 5.44it/s, loss=2.328e+01]
Image optimization: 76%|#######6 | 304/400 [00:55<00:17, 5.46it/s, loss=2.327e+01]
Image optimization: 76%|#######6 | 305/400 [00:55<00:17, 5.47it/s, loss=2.327e+01]
Image optimization: 76%|#######6 | 306/400 [00:55<00:17, 5.47it/s, loss=2.327e+01]
Image optimization: 77%|#######6 | 307/400 [00:56<00:17, 5.46it/s, loss=2.327e+01]
Image optimization: 77%|#######7 | 308/400 [00:56<00:16, 5.45it/s, loss=2.327e+01]
Image optimization: 77%|#######7 | 309/400 [00:56<00:16, 5.45it/s, loss=2.326e+01]
Image optimization: 78%|#######7 | 310/400 [00:56<00:16, 5.43it/s, loss=2.326e+01]
Image optimization: 78%|#######7 | 311/400 [00:56<00:16, 5.44it/s, loss=2.326e+01]
Image optimization: 78%|#######8 | 312/400 [00:56<00:16, 5.46it/s, loss=2.326e+01]
Image optimization: 78%|#######8 | 313/400 [00:57<00:15, 5.45it/s, loss=2.326e+01]
Image optimization: 78%|#######8 | 314/400 [00:57<00:15, 5.44it/s, loss=2.325e+01]
Image optimization: 79%|#######8 | 315/400 [00:57<00:15, 5.45it/s, loss=2.325e+01]
Image optimization: 79%|#######9 | 316/400 [00:57<00:15, 5.47it/s, loss=2.325e+01]
Image optimization: 79%|#######9 | 317/400 [00:57<00:15, 5.48it/s, loss=2.325e+01]
Image optimization: 80%|#######9 | 318/400 [00:58<00:15, 5.46it/s, loss=2.325e+01]
Image optimization: 80%|#######9 | 319/400 [00:58<00:14, 5.47it/s, loss=2.325e+01]
Image optimization: 80%|######## | 320/400 [00:58<00:14, 5.44it/s, loss=2.324e+01]
Image optimization: 80%|######## | 321/400 [00:58<00:14, 5.46it/s, loss=2.324e+01]
Image optimization: 80%|######## | 322/400 [00:58<00:14, 5.47it/s, loss=2.324e+01]
Image optimization: 81%|######## | 323/400 [00:58<00:14, 5.46it/s, loss=2.324e+01]
Image optimization: 81%|########1 | 324/400 [00:59<00:13, 5.46it/s, loss=2.324e+01]
Image optimization: 81%|########1 | 325/400 [00:59<00:13, 5.45it/s, loss=2.323e+01]
Image optimization: 82%|########1 | 326/400 [00:59<00:13, 5.45it/s, loss=2.323e+01]
Image optimization: 82%|########1 | 327/400 [00:59<00:13, 5.45it/s, loss=2.323e+01]
Image optimization: 82%|########2 | 328/400 [00:59<00:13, 5.45it/s, loss=2.323e+01]
Image optimization: 82%|########2 | 329/400 [01:00<00:12, 5.47it/s, loss=2.323e+01]
Image optimization: 82%|########2 | 330/400 [01:00<00:12, 5.45it/s, loss=2.323e+01]
Image optimization: 83%|########2 | 331/400 [01:00<00:12, 5.46it/s, loss=2.322e+01]
Image optimization: 83%|########2 | 332/400 [01:00<00:12, 5.46it/s, loss=2.322e+01]
Image optimization: 83%|########3 | 333/400 [01:00<00:12, 5.46it/s, loss=2.322e+01]
Image optimization: 84%|########3 | 334/400 [01:00<00:12, 5.48it/s, loss=2.322e+01]
Image optimization: 84%|########3 | 335/400 [01:01<00:11, 5.45it/s, loss=2.322e+01]
Image optimization: 84%|########4 | 336/400 [01:01<00:11, 5.47it/s, loss=2.322e+01]
Image optimization: 84%|########4 | 337/400 [01:01<00:11, 5.47it/s, loss=2.322e+01]
Image optimization: 84%|########4 | 338/400 [01:01<00:11, 5.46it/s, loss=2.321e+01]
Image optimization: 85%|########4 | 339/400 [01:01<00:11, 5.46it/s, loss=2.321e+01]
Image optimization: 85%|########5 | 340/400 [01:02<00:11, 5.44it/s, loss=2.321e+01]
Image optimization: 85%|########5 | 341/400 [01:02<00:10, 5.47it/s, loss=2.321e+01]
Image optimization: 86%|########5 | 342/400 [01:02<00:10, 5.47it/s, loss=2.321e+01]
Image optimization: 86%|########5 | 343/400 [01:02<00:10, 5.48it/s, loss=2.321e+01]
Image optimization: 86%|########6 | 344/400 [01:02<00:10, 5.45it/s, loss=2.320e+01]
Image optimization: 86%|########6 | 345/400 [01:02<00:10, 5.45it/s, loss=2.320e+01]
Image optimization: 86%|########6 | 346/400 [01:03<00:09, 5.47it/s, loss=2.320e+01]
Image optimization: 87%|########6 | 347/400 [01:03<00:09, 5.46it/s, loss=2.320e+01]
Image optimization: 87%|########7 | 348/400 [01:03<00:09, 5.47it/s, loss=2.320e+01]
Image optimization: 87%|########7 | 349/400 [01:03<00:09, 5.45it/s, loss=2.320e+01]
Image optimization: 88%|########7 | 350/400 [01:03<00:09, 5.44it/s, loss=2.320e+01]
Image optimization: 88%|########7 | 351/400 [01:04<00:08, 5.47it/s, loss=2.319e+01]
Image optimization: 88%|########8 | 352/400 [01:04<00:08, 5.48it/s, loss=2.319e+01]
Image optimization: 88%|########8 | 353/400 [01:04<00:08, 5.47it/s, loss=2.319e+01]
Image optimization: 88%|########8 | 354/400 [01:04<00:08, 5.46it/s, loss=2.319e+01]
Image optimization: 89%|########8 | 355/400 [01:04<00:08, 5.44it/s, loss=2.319e+01]
Image optimization: 89%|########9 | 356/400 [01:04<00:08, 5.46it/s, loss=2.319e+01]
Image optimization: 89%|########9 | 357/400 [01:05<00:07, 5.48it/s, loss=2.318e+01]
Image optimization: 90%|########9 | 358/400 [01:05<00:07, 5.49it/s, loss=2.318e+01]
Image optimization: 90%|########9 | 359/400 [01:05<00:07, 5.47it/s, loss=2.318e+01]
Image optimization: 90%|######### | 360/400 [01:05<00:07, 5.44it/s, loss=2.318e+01]
Image optimization: 90%|######### | 361/400 [01:05<00:07, 5.45it/s, loss=2.318e+01]
Image optimization: 90%|######### | 362/400 [01:06<00:06, 5.48it/s, loss=2.318e+01]
Image optimization: 91%|######### | 363/400 [01:06<00:06, 5.49it/s, loss=2.318e+01]
Image optimization: 91%|#########1| 364/400 [01:06<00:06, 5.47it/s, loss=2.317e+01]
Image optimization: 91%|#########1| 365/400 [01:06<00:06, 5.45it/s, loss=2.317e+01]
Image optimization: 92%|#########1| 366/400 [01:06<00:06, 5.45it/s, loss=2.317e+01]
Image optimization: 92%|#########1| 367/400 [01:07<00:06, 5.48it/s, loss=2.317e+01]
Image optimization: 92%|#########2| 368/400 [01:07<00:05, 5.48it/s, loss=2.317e+01]
Image optimization: 92%|#########2| 369/400 [01:07<00:05, 5.49it/s, loss=2.317e+01]
Image optimization: 92%|#########2| 370/400 [01:07<00:05, 5.46it/s, loss=2.316e+01]
Image optimization: 93%|#########2| 371/400 [01:07<00:05, 5.47it/s, loss=2.316e+01]
Image optimization: 93%|#########3| 372/400 [01:07<00:05, 5.48it/s, loss=2.316e+01]
Image optimization: 93%|#########3| 373/400 [01:08<00:04, 5.47it/s, loss=2.316e+01]
Image optimization: 94%|#########3| 374/400 [01:08<00:04, 5.48it/s, loss=2.316e+01]
Image optimization: 94%|#########3| 375/400 [01:08<00:04, 5.45it/s, loss=2.316e+01]
Image optimization: 94%|#########3| 376/400 [01:08<00:04, 5.47it/s, loss=2.316e+01]
Image optimization: 94%|#########4| 377/400 [01:08<00:04, 5.48it/s, loss=2.316e+01]
Image optimization: 94%|#########4| 378/400 [01:09<00:04, 5.45it/s, loss=2.315e+01]
Image optimization: 95%|#########4| 379/400 [01:09<00:03, 5.46it/s, loss=2.315e+01]
Image optimization: 95%|#########5| 380/400 [01:09<00:03, 5.45it/s, loss=2.315e+01]
Image optimization: 95%|#########5| 381/400 [01:09<00:03, 5.47it/s, loss=2.315e+01]
Image optimization: 96%|#########5| 382/400 [01:09<00:03, 5.48it/s, loss=2.315e+01]
Image optimization: 96%|#########5| 383/400 [01:09<00:03, 5.49it/s, loss=2.315e+01]
Image optimization: 96%|#########6| 384/400 [01:10<00:02, 5.46it/s, loss=2.315e+01]
Image optimization: 96%|#########6| 385/400 [01:10<00:02, 5.47it/s, loss=2.314e+01]
Image optimization: 96%|#########6| 386/400 [01:10<00:02, 5.49it/s, loss=2.314e+01]
Image optimization: 97%|#########6| 387/400 [01:10<00:02, 5.47it/s, loss=2.314e+01]
Image optimization: 97%|#########7| 388/400 [01:10<00:02, 5.47it/s, loss=2.314e+01]
Image optimization: 97%|#########7| 389/400 [01:11<00:02, 5.46it/s, loss=2.314e+01]
Image optimization: 98%|#########7| 390/400 [01:11<00:01, 5.47it/s, loss=2.314e+01]
Image optimization: 98%|#########7| 391/400 [01:11<00:01, 5.45it/s, loss=2.314e+01]
Image optimization: 98%|#########8| 392/400 [01:11<00:01, 5.47it/s, loss=2.313e+01]
Image optimization: 98%|#########8| 393/400 [01:11<00:01, 5.47it/s, loss=2.313e+01]
Image optimization: 98%|#########8| 394/400 [01:11<00:01, 5.46it/s, loss=2.313e+01]
Image optimization: 99%|#########8| 395/400 [01:12<00:00, 5.48it/s, loss=2.313e+01]
Image optimization: 99%|#########9| 396/400 [01:12<00:00, 5.45it/s, loss=2.313e+01]
Image optimization: 99%|#########9| 397/400 [01:12<00:00, 5.46it/s, loss=2.313e+01]
Image optimization: 100%|#########9| 398/400 [01:12<00:00, 5.47it/s, loss=2.313e+01]
Image optimization: 100%|#########9| 399/400 [01:12<00:00, 5.49it/s, loss=2.312e+01]
Image optimization: 100%|##########| 400/400 [01:13<00:00, 5.48it/s, loss=2.312e+01]
Image optimization: 100%|##########| 400/400 [01:13<00:00, 5.48it/s, loss=2.312e+01]
112 elapsed_time_without_pyramid = stop_without_pyramid - start_without_pyramid
113 print(
114 f"Without pyramid the optimization took {elapsed_time_without_pyramid:.0f} seconds."
115 )
Out:
Without pyramid the optimization took 73 seconds.
As you can see the small blurry branches on the left side of the image were picked up by the style transfer. They distort the mosaic pattern, which minders the quality of the result. In the next section we tackle this by focusing on coarse elements first and add the details afterwards.
Image optimization with pyramid¶
Opposed to the prior examples we now want to perform an NST on multiple resolutions.
In pystiche
this handled by an ImagePyramid
. The
resolutions are selected by specifying the edge_sizes
of the images on each level
. The optimization is performed for num_steps
on the different levels.
The resizing of all images, i.e. input_image
and target images (content_image
and style_image
) is handled by the pyramid
. For that we need to register the
perceptual loss (criterion
) as one of the resize_targets
.
Note
By default the edge_sizes
correspond to the shorter edge
of the images. To
change that you can pass edge="long"
. For fine-grained control you can also
pass a sequence comprising "short"
and "long"
to select the edge
for
each level separately. Its length has to match the length of edge_sizes
.
Note
For a fine-grained control over the number of steps on each level you can pass a
sequence to select the num_steps
for each level separately. Its length has to
match the length of edge_sizes
.
150 edge_sizes = (250, 500)
151 num_steps = 200
152 image_pyramid = pyramid.ImagePyramid(
153 edge_sizes, num_steps, resize_targets=(perceptual_loss,)
154 )
155 print(image_pyramid)
Out:
ImagePyramid(
(0): PyramidLevel(edge_size=250, num_steps=200, edge=short)
(1): PyramidLevel(edge_size=500, num_steps=200, edge=short)
)
With a pyramid the NST is performed by
pyramid_image_optimization()
. We time the execution and show
the result afterwards.
Note
We regenerate the input_image
since it was changed inplace during the first
optimization.
168 input_image = get_input_image(starting_point, content_image=content_image)
169
170 start_with_pyramid = time.time()
171 output_image = optim.pyramid_image_optimization(
172 input_image, perceptual_loss, image_pyramid
173 )
174 stop_with_pyramid = time.time()
175
176 show_image(output_image, title="Output image with pyramid")
Out:
Pyramid: 0%| | 0/2 [00:00<?, ?it/s]
Image optimization: 0%| | 0/200 [00:00<?, ?it/s]
Image optimization: 2%|1 | 3/200 [00:00<00:07, 26.26it/s, loss=4.393e+01]
Image optimization: 3%|3 | 6/200 [00:00<00:07, 25.92it/s, loss=4.115e+01]
Image optimization: 4%|4 | 9/200 [00:00<00:07, 25.63it/s, loss=3.837e+01]
Image optimization: 6%|6 | 12/200 [00:00<00:07, 25.42it/s, loss=3.644e+01]
Image optimization: 8%|7 | 15/200 [00:00<00:07, 25.18it/s, loss=3.482e+01]
Image optimization: 9%|9 | 18/200 [00:00<00:07, 25.00it/s, loss=3.373e+01]
Image optimization: 10%|# | 21/200 [00:00<00:07, 24.80it/s, loss=3.305e+01]
Image optimization: 12%|#2 | 24/200 [00:00<00:07, 23.27it/s, loss=3.245e+01]
Image optimization: 14%|#3 | 27/200 [00:01<00:07, 23.64it/s, loss=3.201e+01]
Image optimization: 15%|#5 | 30/200 [00:01<00:07, 23.88it/s, loss=3.169e+01]
Image optimization: 16%|#6 | 33/200 [00:01<00:06, 24.11it/s, loss=3.142e+01]
Image optimization: 18%|#8 | 36/200 [00:01<00:06, 24.25it/s, loss=3.114e+01]
Image optimization: 20%|#9 | 39/200 [00:01<00:06, 24.31it/s, loss=3.095e+01]
Image optimization: 21%|##1 | 42/200 [00:01<00:06, 24.41it/s, loss=3.078e+01]
Image optimization: 22%|##2 | 45/200 [00:01<00:06, 24.40it/s, loss=3.061e+01]
Image optimization: 24%|##4 | 48/200 [00:01<00:06, 24.34it/s, loss=3.046e+01]
Image optimization: 26%|##5 | 51/200 [00:02<00:06, 24.19it/s, loss=3.032e+01]
Image optimization: 27%|##7 | 54/200 [00:02<00:06, 23.91it/s, loss=3.021e+01]
Image optimization: 28%|##8 | 57/200 [00:02<00:06, 23.77it/s, loss=3.010e+01]
Image optimization: 30%|### | 60/200 [00:02<00:05, 23.79it/s, loss=3.000e+01]
Image optimization: 32%|###1 | 63/200 [00:02<00:05, 23.61it/s, loss=2.991e+01]
Image optimization: 33%|###3 | 66/200 [00:02<00:05, 23.45it/s, loss=2.983e+01]
Image optimization: 34%|###4 | 69/200 [00:02<00:05, 23.45it/s, loss=2.976e+01]
Image optimization: 36%|###6 | 72/200 [00:02<00:05, 23.19it/s, loss=2.970e+01]
Image optimization: 38%|###7 | 75/200 [00:03<00:05, 23.09it/s, loss=2.964e+01]
Image optimization: 39%|###9 | 78/200 [00:03<00:05, 22.90it/s, loss=2.959e+01]
Image optimization: 40%|#### | 81/200 [00:03<00:05, 22.90it/s, loss=2.953e+01]
Image optimization: 42%|####2 | 84/200 [00:03<00:05, 22.75it/s, loss=2.949e+01]
Image optimization: 44%|####3 | 87/200 [00:03<00:04, 22.76it/s, loss=2.944e+01]
Image optimization: 45%|####5 | 90/200 [00:03<00:04, 22.52it/s, loss=2.940e+01]
Image optimization: 46%|####6 | 93/200 [00:03<00:04, 22.51it/s, loss=2.935e+01]
Image optimization: 48%|####8 | 96/200 [00:04<00:04, 22.30it/s, loss=2.932e+01]
Image optimization: 50%|####9 | 99/200 [00:04<00:04, 22.17it/s, loss=2.927e+01]
Image optimization: 51%|#####1 | 102/200 [00:04<00:04, 22.18it/s, loss=2.923e+01]
Image optimization: 52%|#####2 | 105/200 [00:04<00:04, 22.20it/s, loss=2.919e+01]
Image optimization: 54%|#####4 | 108/200 [00:04<00:04, 22.07it/s, loss=2.916e+01]
Image optimization: 56%|#####5 | 111/200 [00:04<00:04, 22.01it/s, loss=2.913e+01]
Image optimization: 57%|#####6 | 114/200 [00:04<00:03, 22.07it/s, loss=2.910e+01]
Image optimization: 58%|#####8 | 117/200 [00:05<00:03, 22.03it/s, loss=2.906e+01]
Image optimization: 60%|###### | 120/200 [00:05<00:03, 21.99it/s, loss=2.904e+01]
Image optimization: 62%|######1 | 123/200 [00:05<00:03, 22.05it/s, loss=2.901e+01]
Image optimization: 63%|######3 | 126/200 [00:05<00:03, 22.07it/s, loss=2.899e+01]
Image optimization: 64%|######4 | 129/200 [00:05<00:03, 22.01it/s, loss=2.897e+01]
Image optimization: 66%|######6 | 132/200 [00:05<00:03, 21.96it/s, loss=2.895e+01]
Image optimization: 68%|######7 | 135/200 [00:05<00:02, 21.99it/s, loss=2.892e+01]
Image optimization: 69%|######9 | 138/200 [00:05<00:02, 21.97it/s, loss=2.890e+01]
Image optimization: 70%|####### | 141/200 [00:06<00:02, 21.88it/s, loss=2.888e+01]
Image optimization: 72%|#######2 | 144/200 [00:06<00:02, 21.89it/s, loss=2.886e+01]
Image optimization: 74%|#######3 | 147/200 [00:06<00:02, 21.92it/s, loss=2.885e+01]
Image optimization: 75%|#######5 | 150/200 [00:06<00:02, 21.94it/s, loss=2.882e+01]
Image optimization: 76%|#######6 | 153/200 [00:06<00:02, 21.90it/s, loss=2.880e+01]
Image optimization: 78%|#######8 | 156/200 [00:06<00:02, 21.95it/s, loss=2.878e+01]
Image optimization: 80%|#######9 | 159/200 [00:06<00:01, 21.97it/s, loss=2.877e+01]
Image optimization: 81%|########1 | 162/200 [00:07<00:01, 21.96it/s, loss=2.875e+01]
Image optimization: 82%|########2 | 165/200 [00:07<00:01, 21.93it/s, loss=2.874e+01]
Image optimization: 84%|########4 | 168/200 [00:07<00:01, 21.94it/s, loss=2.872e+01]
Image optimization: 86%|########5 | 171/200 [00:07<00:01, 22.07it/s, loss=2.871e+01]
Image optimization: 87%|########7 | 174/200 [00:07<00:01, 22.00it/s, loss=2.869e+01]
Image optimization: 88%|########8 | 177/200 [00:07<00:01, 22.00it/s, loss=2.868e+01]
Image optimization: 90%|######### | 180/200 [00:07<00:00, 22.12it/s, loss=2.867e+01]
Image optimization: 92%|#########1| 183/200 [00:08<00:00, 21.99it/s, loss=2.865e+01]
Image optimization: 93%|#########3| 186/200 [00:08<00:00, 21.98it/s, loss=2.864e+01]
Image optimization: 94%|#########4| 189/200 [00:08<00:00, 21.99it/s, loss=2.863e+01]
Image optimization: 96%|#########6| 192/200 [00:08<00:00, 22.01it/s, loss=2.861e+01]
Image optimization: 98%|#########7| 195/200 [00:08<00:00, 21.96it/s, loss=2.860e+01]
Image optimization: 99%|#########9| 198/200 [00:08<00:00, 21.92it/s, loss=2.859e+01]
Image optimization: 100%|##########| 200/200 [00:08<00:00, 22.75it/s, loss=2.858e+01]
Pyramid: 50%|##### | 1/2 [00:08<00:08, 8.80s/it]
Image optimization: 0%| | 0/200 [00:00<?, ?it/s]
Image optimization: 0%| | 1/200 [00:00<00:42, 4.73it/s, loss=4.052e+01]
Image optimization: 1%|1 | 2/200 [00:00<00:36, 5.41it/s, loss=4.052e+01]
Image optimization: 2%|1 | 3/200 [00:00<00:34, 5.66it/s, loss=3.762e+01]
Image optimization: 2%|2 | 4/200 [00:00<00:34, 5.75it/s, loss=3.573e+01]
Image optimization: 2%|2 | 5/200 [00:00<00:33, 5.86it/s, loss=3.424e+01]
Image optimization: 3%|3 | 6/200 [00:01<00:32, 5.97it/s, loss=3.307e+01]
Image optimization: 4%|3 | 7/200 [00:01<00:32, 6.02it/s, loss=3.206e+01]
Image optimization: 4%|4 | 8/200 [00:01<00:31, 6.04it/s, loss=3.126e+01]
Image optimization: 4%|4 | 9/200 [00:01<00:31, 6.03it/s, loss=3.056e+01]
Image optimization: 5%|5 | 10/200 [00:01<00:31, 6.00it/s, loss=2.999e+01]
Image optimization: 6%|5 | 11/200 [00:01<00:31, 5.94it/s, loss=2.953e+01]
Image optimization: 6%|6 | 12/200 [00:02<00:31, 5.98it/s, loss=2.915e+01]
Image optimization: 6%|6 | 13/200 [00:02<00:31, 6.02it/s, loss=2.880e+01]
Image optimization: 7%|7 | 14/200 [00:02<00:30, 6.05it/s, loss=2.847e+01]
Image optimization: 8%|7 | 15/200 [00:02<00:30, 6.04it/s, loss=2.820e+01]
Image optimization: 8%|8 | 16/200 [00:02<00:30, 5.97it/s, loss=2.796e+01]
Image optimization: 8%|8 | 17/200 [00:02<00:30, 5.93it/s, loss=2.774e+01]
Image optimization: 9%|9 | 18/200 [00:03<00:30, 5.96it/s, loss=2.754e+01]
Image optimization: 10%|9 | 19/200 [00:03<00:30, 5.94it/s, loss=2.736e+01]
Image optimization: 10%|# | 20/200 [00:03<00:30, 5.97it/s, loss=2.719e+01]
Image optimization: 10%|# | 21/200 [00:03<00:29, 5.98it/s, loss=2.704e+01]
Image optimization: 11%|#1 | 22/200 [00:03<00:29, 5.96it/s, loss=2.691e+01]
Image optimization: 12%|#1 | 23/200 [00:03<00:30, 5.89it/s, loss=2.678e+01]
Image optimization: 12%|#2 | 24/200 [00:04<00:29, 5.91it/s, loss=2.666e+01]
Image optimization: 12%|#2 | 25/200 [00:04<00:29, 5.91it/s, loss=2.655e+01]
Image optimization: 13%|#3 | 26/200 [00:04<00:29, 5.92it/s, loss=2.644e+01]
Image optimization: 14%|#3 | 27/200 [00:04<00:29, 5.94it/s, loss=2.633e+01]
Image optimization: 14%|#4 | 28/200 [00:04<00:28, 5.94it/s, loss=2.624e+01]
Image optimization: 14%|#4 | 29/200 [00:04<00:28, 5.91it/s, loss=2.615e+01]
Image optimization: 15%|#5 | 30/200 [00:05<00:28, 5.90it/s, loss=2.607e+01]
Image optimization: 16%|#5 | 31/200 [00:05<00:28, 5.90it/s, loss=2.600e+01]
Image optimization: 16%|#6 | 32/200 [00:05<00:28, 5.87it/s, loss=2.593e+01]
Image optimization: 16%|#6 | 33/200 [00:05<00:28, 5.91it/s, loss=2.586e+01]
Image optimization: 17%|#7 | 34/200 [00:05<00:27, 5.93it/s, loss=2.580e+01]
Image optimization: 18%|#7 | 35/200 [00:05<00:28, 5.87it/s, loss=2.574e+01]
Image optimization: 18%|#8 | 36/200 [00:06<00:27, 5.86it/s, loss=2.568e+01]
Image optimization: 18%|#8 | 37/200 [00:06<00:27, 5.83it/s, loss=2.562e+01]
Image optimization: 19%|#9 | 38/200 [00:06<00:27, 5.85it/s, loss=2.557e+01]
Image optimization: 20%|#9 | 39/200 [00:06<00:27, 5.85it/s, loss=2.552e+01]
Image optimization: 20%|## | 40/200 [00:06<00:27, 5.84it/s, loss=2.548e+01]
Image optimization: 20%|## | 41/200 [00:06<00:27, 5.86it/s, loss=2.544e+01]
Image optimization: 21%|##1 | 42/200 [00:07<00:27, 5.82it/s, loss=2.540e+01]
Image optimization: 22%|##1 | 43/200 [00:07<00:26, 5.84it/s, loss=2.536e+01]
Image optimization: 22%|##2 | 44/200 [00:07<00:26, 5.80it/s, loss=2.532e+01]
Image optimization: 22%|##2 | 45/200 [00:07<00:26, 5.81it/s, loss=2.528e+01]
Image optimization: 23%|##3 | 46/200 [00:07<00:26, 5.79it/s, loss=2.524e+01]
Image optimization: 24%|##3 | 47/200 [00:07<00:26, 5.81it/s, loss=2.521e+01]
Image optimization: 24%|##4 | 48/200 [00:08<00:26, 5.79it/s, loss=2.518e+01]
Image optimization: 24%|##4 | 49/200 [00:08<00:25, 5.81it/s, loss=2.514e+01]
Image optimization: 25%|##5 | 50/200 [00:08<00:25, 5.77it/s, loss=2.511e+01]
Image optimization: 26%|##5 | 51/200 [00:08<00:25, 5.79it/s, loss=2.508e+01]
Image optimization: 26%|##6 | 52/200 [00:08<00:25, 5.76it/s, loss=2.505e+01]
Image optimization: 26%|##6 | 53/200 [00:09<00:25, 5.78it/s, loss=2.502e+01]
Image optimization: 27%|##7 | 54/200 [00:09<00:25, 5.74it/s, loss=2.499e+01]
Image optimization: 28%|##7 | 55/200 [00:09<00:25, 5.74it/s, loss=2.497e+01]
Image optimization: 28%|##8 | 56/200 [00:09<00:25, 5.76it/s, loss=2.494e+01]
Image optimization: 28%|##8 | 57/200 [00:09<00:24, 5.74it/s, loss=2.492e+01]
Image optimization: 29%|##9 | 58/200 [00:09<00:24, 5.76it/s, loss=2.489e+01]
Image optimization: 30%|##9 | 59/200 [00:10<00:24, 5.74it/s, loss=2.487e+01]
Image optimization: 30%|### | 60/200 [00:10<00:24, 5.75it/s, loss=2.484e+01]
Image optimization: 30%|### | 61/200 [00:10<00:24, 5.70it/s, loss=2.482e+01]
Image optimization: 31%|###1 | 62/200 [00:10<00:24, 5.69it/s, loss=2.480e+01]
Image optimization: 32%|###1 | 63/200 [00:10<00:24, 5.67it/s, loss=2.478e+01]
Image optimization: 32%|###2 | 64/200 [00:10<00:23, 5.71it/s, loss=2.476e+01]
Image optimization: 32%|###2 | 65/200 [00:11<00:23, 5.69it/s, loss=2.474e+01]
Image optimization: 33%|###3 | 66/200 [00:11<00:23, 5.67it/s, loss=2.472e+01]
Image optimization: 34%|###3 | 67/200 [00:11<00:23, 5.69it/s, loss=2.470e+01]
Image optimization: 34%|###4 | 68/200 [00:11<00:23, 5.68it/s, loss=2.468e+01]
Image optimization: 34%|###4 | 69/200 [00:11<00:23, 5.65it/s, loss=2.466e+01]
Image optimization: 35%|###5 | 70/200 [00:12<00:22, 5.67it/s, loss=2.465e+01]
Image optimization: 36%|###5 | 71/200 [00:12<00:22, 5.67it/s, loss=2.463e+01]
Image optimization: 36%|###6 | 72/200 [00:12<00:22, 5.64it/s, loss=2.461e+01]
Image optimization: 36%|###6 | 73/200 [00:12<00:22, 5.65it/s, loss=2.460e+01]
Image optimization: 37%|###7 | 74/200 [00:12<00:22, 5.62it/s, loss=2.459e+01]
Image optimization: 38%|###7 | 75/200 [00:12<00:22, 5.60it/s, loss=2.457e+01]
Image optimization: 38%|###8 | 76/200 [00:13<00:22, 5.61it/s, loss=2.456e+01]
Image optimization: 38%|###8 | 77/200 [00:13<00:21, 5.60it/s, loss=2.454e+01]
Image optimization: 39%|###9 | 78/200 [00:13<00:21, 5.61it/s, loss=2.453e+01]
Image optimization: 40%|###9 | 79/200 [00:13<00:21, 5.59it/s, loss=2.451e+01]
Image optimization: 40%|#### | 80/200 [00:13<00:21, 5.57it/s, loss=2.450e+01]
Image optimization: 40%|#### | 81/200 [00:13<00:21, 5.56it/s, loss=2.449e+01]
Image optimization: 41%|####1 | 82/200 [00:14<00:21, 5.55it/s, loss=2.447e+01]
Image optimization: 42%|####1 | 83/200 [00:14<00:21, 5.57it/s, loss=2.446e+01]
Image optimization: 42%|####2 | 84/200 [00:14<00:20, 5.57it/s, loss=2.445e+01]
Image optimization: 42%|####2 | 85/200 [00:14<00:20, 5.57it/s, loss=2.444e+01]
Image optimization: 43%|####3 | 86/200 [00:14<00:20, 5.54it/s, loss=2.443e+01]
Image optimization: 44%|####3 | 87/200 [00:15<00:20, 5.53it/s, loss=2.442e+01]
Image optimization: 44%|####4 | 88/200 [00:15<00:20, 5.53it/s, loss=2.441e+01]
Image optimization: 44%|####4 | 89/200 [00:15<00:20, 5.54it/s, loss=2.439e+01]
Image optimization: 45%|####5 | 90/200 [00:15<00:19, 5.53it/s, loss=2.438e+01]
Image optimization: 46%|####5 | 91/200 [00:15<00:19, 5.52it/s, loss=2.437e+01]
Image optimization: 46%|####6 | 92/200 [00:15<00:19, 5.52it/s, loss=2.436e+01]
Image optimization: 46%|####6 | 93/200 [00:16<00:19, 5.52it/s, loss=2.435e+01]
Image optimization: 47%|####6 | 94/200 [00:16<00:19, 5.51it/s, loss=2.434e+01]
Image optimization: 48%|####7 | 95/200 [00:16<00:19, 5.51it/s, loss=2.433e+01]
Image optimization: 48%|####8 | 96/200 [00:16<00:18, 5.52it/s, loss=2.432e+01]
Image optimization: 48%|####8 | 97/200 [00:16<00:18, 5.53it/s, loss=2.431e+01]
Image optimization: 49%|####9 | 98/200 [00:17<00:18, 5.49it/s, loss=2.430e+01]
Image optimization: 50%|####9 | 99/200 [00:17<00:18, 5.50it/s, loss=2.429e+01]
Image optimization: 50%|##### | 100/200 [00:17<00:18, 5.48it/s, loss=2.428e+01]
Image optimization: 50%|##### | 101/200 [00:17<00:18, 5.48it/s, loss=2.427e+01]
Image optimization: 51%|#####1 | 102/200 [00:17<00:17, 5.48it/s, loss=2.427e+01]
Image optimization: 52%|#####1 | 103/200 [00:17<00:17, 5.46it/s, loss=2.426e+01]
Image optimization: 52%|#####2 | 104/200 [00:18<00:17, 5.48it/s, loss=2.425e+01]
Image optimization: 52%|#####2 | 105/200 [00:18<00:17, 5.46it/s, loss=2.424e+01]
Image optimization: 53%|#####3 | 106/200 [00:18<00:17, 5.48it/s, loss=2.423e+01]
Image optimization: 54%|#####3 | 107/200 [00:18<00:16, 5.47it/s, loss=2.423e+01]
Image optimization: 54%|#####4 | 108/200 [00:18<00:16, 5.46it/s, loss=2.422e+01]
Image optimization: 55%|#####4 | 109/200 [00:19<00:16, 5.47it/s, loss=2.421e+01]
Image optimization: 55%|#####5 | 110/200 [00:19<00:16, 5.47it/s, loss=2.421e+01]
Image optimization: 56%|#####5 | 111/200 [00:19<00:16, 5.45it/s, loss=2.420e+01]
Image optimization: 56%|#####6 | 112/200 [00:19<00:16, 5.46it/s, loss=2.419e+01]
Image optimization: 56%|#####6 | 113/200 [00:19<00:15, 5.48it/s, loss=2.419e+01]
Image optimization: 57%|#####6 | 114/200 [00:19<00:15, 5.49it/s, loss=2.418e+01]
Image optimization: 57%|#####7 | 115/200 [00:20<00:15, 5.45it/s, loss=2.417e+01]
Image optimization: 58%|#####8 | 116/200 [00:20<00:15, 5.48it/s, loss=2.416e+01]
Image optimization: 58%|#####8 | 117/200 [00:20<00:15, 5.46it/s, loss=2.416e+01]
Image optimization: 59%|#####8 | 118/200 [00:20<00:14, 5.49it/s, loss=2.415e+01]
Image optimization: 60%|#####9 | 119/200 [00:20<00:14, 5.47it/s, loss=2.414e+01]
Image optimization: 60%|###### | 120/200 [00:21<00:14, 5.44it/s, loss=2.414e+01]
Image optimization: 60%|###### | 121/200 [00:21<00:14, 5.44it/s, loss=2.413e+01]
Image optimization: 61%|######1 | 122/200 [00:21<00:14, 5.47it/s, loss=2.412e+01]
Image optimization: 62%|######1 | 123/200 [00:21<00:14, 5.47it/s, loss=2.412e+01]
Image optimization: 62%|######2 | 124/200 [00:21<00:13, 5.48it/s, loss=2.411e+01]
Image optimization: 62%|######2 | 125/200 [00:21<00:13, 5.49it/s, loss=2.411e+01]
Image optimization: 63%|######3 | 126/200 [00:22<00:13, 5.45it/s, loss=2.410e+01]
Image optimization: 64%|######3 | 127/200 [00:22<00:13, 5.47it/s, loss=2.409e+01]
Image optimization: 64%|######4 | 128/200 [00:22<00:13, 5.46it/s, loss=2.409e+01]
Image optimization: 64%|######4 | 129/200 [00:22<00:13, 5.46it/s, loss=2.408e+01]
Image optimization: 65%|######5 | 130/200 [00:22<00:12, 5.48it/s, loss=2.408e+01]
Image optimization: 66%|######5 | 131/200 [00:23<00:12, 5.46it/s, loss=2.407e+01]
Image optimization: 66%|######6 | 132/200 [00:23<00:12, 5.47it/s, loss=2.406e+01]
Image optimization: 66%|######6 | 133/200 [00:23<00:12, 5.44it/s, loss=2.406e+01]
Image optimization: 67%|######7 | 134/200 [00:23<00:12, 5.46it/s, loss=2.405e+01]
Image optimization: 68%|######7 | 135/200 [00:23<00:11, 5.45it/s, loss=2.405e+01]
Image optimization: 68%|######8 | 136/200 [00:24<00:11, 5.47it/s, loss=2.404e+01]
Image optimization: 68%|######8 | 137/200 [00:24<00:11, 5.49it/s, loss=2.404e+01]
Image optimization: 69%|######9 | 138/200 [00:24<00:11, 5.48it/s, loss=2.403e+01]
Image optimization: 70%|######9 | 139/200 [00:24<00:11, 5.45it/s, loss=2.403e+01]
Image optimization: 70%|####### | 140/200 [00:24<00:11, 5.45it/s, loss=2.402e+01]
Image optimization: 70%|####### | 141/200 [00:24<00:10, 5.45it/s, loss=2.402e+01]
Image optimization: 71%|#######1 | 142/200 [00:25<00:10, 5.47it/s, loss=2.401e+01]
Image optimization: 72%|#######1 | 143/200 [00:25<00:10, 5.48it/s, loss=2.401e+01]
Image optimization: 72%|#######2 | 144/200 [00:25<00:10, 5.47it/s, loss=2.400e+01]
Image optimization: 72%|#######2 | 145/200 [00:25<00:10, 5.46it/s, loss=2.400e+01]
Image optimization: 73%|#######3 | 146/200 [00:25<00:09, 5.47it/s, loss=2.399e+01]
Image optimization: 74%|#######3 | 147/200 [00:26<00:09, 5.48it/s, loss=2.399e+01]
Image optimization: 74%|#######4 | 148/200 [00:26<00:09, 5.46it/s, loss=2.398e+01]
Image optimization: 74%|#######4 | 149/200 [00:26<00:09, 5.46it/s, loss=2.398e+01]
Image optimization: 75%|#######5 | 150/200 [00:26<00:09, 5.48it/s, loss=2.398e+01]
Image optimization: 76%|#######5 | 151/200 [00:26<00:08, 5.47it/s, loss=2.397e+01]
Image optimization: 76%|#######6 | 152/200 [00:26<00:08, 5.47it/s, loss=2.397e+01]
Image optimization: 76%|#######6 | 153/200 [00:27<00:08, 5.47it/s, loss=2.396e+01]
Image optimization: 77%|#######7 | 154/200 [00:27<00:08, 5.47it/s, loss=2.396e+01]
Image optimization: 78%|#######7 | 155/200 [00:27<00:08, 5.46it/s, loss=2.395e+01]
Image optimization: 78%|#######8 | 156/200 [00:27<00:08, 5.47it/s, loss=2.395e+01]
Image optimization: 78%|#######8 | 157/200 [00:27<00:07, 5.50it/s, loss=2.395e+01]
Image optimization: 79%|#######9 | 158/200 [00:28<00:07, 5.46it/s, loss=2.394e+01]
Image optimization: 80%|#######9 | 159/200 [00:28<00:07, 5.49it/s, loss=2.394e+01]
Image optimization: 80%|######## | 160/200 [00:28<00:07, 5.47it/s, loss=2.393e+01]
Image optimization: 80%|######## | 161/200 [00:28<00:07, 5.47it/s, loss=2.393e+01]
Image optimization: 81%|########1 | 162/200 [00:28<00:06, 5.47it/s, loss=2.393e+01]
Image optimization: 82%|########1 | 163/200 [00:28<00:06, 5.48it/s, loss=2.392e+01]
Image optimization: 82%|########2 | 164/200 [00:29<00:06, 5.47it/s, loss=2.392e+01]
Image optimization: 82%|########2 | 165/200 [00:29<00:06, 5.48it/s, loss=2.392e+01]
Image optimization: 83%|########2 | 166/200 [00:29<00:06, 5.45it/s, loss=2.391e+01]
Image optimization: 84%|########3 | 167/200 [00:29<00:06, 5.46it/s, loss=2.391e+01]
Image optimization: 84%|########4 | 168/200 [00:29<00:05, 5.46it/s, loss=2.391e+01]
Image optimization: 84%|########4 | 169/200 [00:30<00:05, 5.47it/s, loss=2.390e+01]
Image optimization: 85%|########5 | 170/200 [00:30<00:05, 5.46it/s, loss=2.390e+01]
Image optimization: 86%|########5 | 171/200 [00:30<00:05, 5.46it/s, loss=2.390e+01]
Image optimization: 86%|########6 | 172/200 [00:30<00:05, 5.47it/s, loss=2.389e+01]
Image optimization: 86%|########6 | 173/200 [00:30<00:04, 5.44it/s, loss=2.389e+01]
Image optimization: 87%|########7 | 174/200 [00:30<00:04, 5.46it/s, loss=2.388e+01]
Image optimization: 88%|########7 | 175/200 [00:31<00:04, 5.46it/s, loss=2.388e+01]
Image optimization: 88%|########8 | 176/200 [00:31<00:04, 5.45it/s, loss=2.388e+01]
Image optimization: 88%|########8 | 177/200 [00:31<00:04, 5.47it/s, loss=2.387e+01]
Image optimization: 89%|########9 | 178/200 [00:31<00:04, 5.48it/s, loss=2.387e+01]
Image optimization: 90%|########9 | 179/200 [00:31<00:03, 5.48it/s, loss=2.386e+01]
Image optimization: 90%|######### | 180/200 [00:32<00:03, 5.46it/s, loss=2.386e+01]
Image optimization: 90%|######### | 181/200 [00:32<00:03, 5.46it/s, loss=2.386e+01]
Image optimization: 91%|#########1| 182/200 [00:32<00:03, 5.45it/s, loss=2.385e+01]
Image optimization: 92%|#########1| 183/200 [00:32<00:03, 5.48it/s, loss=2.385e+01]
Image optimization: 92%|#########2| 184/200 [00:32<00:02, 5.46it/s, loss=2.385e+01]
Image optimization: 92%|#########2| 185/200 [00:32<00:02, 5.44it/s, loss=2.384e+01]
Image optimization: 93%|#########3| 186/200 [00:33<00:02, 5.44it/s, loss=2.384e+01]
Image optimization: 94%|#########3| 187/200 [00:33<00:02, 5.45it/s, loss=2.384e+01]
Image optimization: 94%|#########3| 188/200 [00:33<00:02, 5.46it/s, loss=2.383e+01]
Image optimization: 94%|#########4| 189/200 [00:33<00:02, 5.48it/s, loss=2.383e+01]
Image optimization: 95%|#########5| 190/200 [00:33<00:01, 5.47it/s, loss=2.383e+01]
Image optimization: 96%|#########5| 191/200 [00:34<00:01, 5.46it/s, loss=2.382e+01]
Image optimization: 96%|#########6| 192/200 [00:34<00:01, 5.49it/s, loss=2.382e+01]
Image optimization: 96%|#########6| 193/200 [00:34<00:01, 5.48it/s, loss=2.382e+01]
Image optimization: 97%|#########7| 194/200 [00:34<00:01, 5.47it/s, loss=2.381e+01]
Image optimization: 98%|#########7| 195/200 [00:34<00:00, 5.45it/s, loss=2.381e+01]
Image optimization: 98%|#########8| 196/200 [00:34<00:00, 5.44it/s, loss=2.381e+01]
Image optimization: 98%|#########8| 197/200 [00:35<00:00, 5.47it/s, loss=2.381e+01]
Image optimization: 99%|#########9| 198/200 [00:35<00:00, 5.44it/s, loss=2.380e+01]
Image optimization: 100%|#########9| 199/200 [00:35<00:00, 5.45it/s, loss=2.380e+01]
Image optimization: 100%|##########| 200/200 [00:35<00:00, 5.44it/s, loss=2.380e+01]
Image optimization: 100%|##########| 200/200 [00:35<00:00, 5.60it/s, loss=2.380e+01]
Pyramid: 100%|##########| 2/2 [00:44<00:00, 24.65s/it]
Pyramid: 100%|##########| 2/2 [00:44<00:00, 22.28s/it]
182 elapsed_time_with_pyramid = stop_with_pyramid - start_with_pyramid
183 relative_decrease = 1.0 - elapsed_time_with_pyramid / elapsed_time_without_pyramid
184 print(
185 f"With pyramid the optimization took {elapsed_time_with_pyramid:.0f} seconds. "
186 f"This is a {relative_decrease:.0%} decrease."
187 )
Out:
With pyramid the optimization took 45 seconds. This is a 39% decrease.
With the coarse-to-fine architecture of the image pyramid, the stylization of the blurry background branches is reduced leaving the mosaic pattern mostly intact. On top of this quality improvement the execution time is significantly lower while performing the same number of steps.
Total running time of the script: ( 2 minutes 0.953 seconds)
Estimated memory usage: 1976 MB