@@ -107,6 +107,29 @@ def test_tiled_autoencoder_rectangular_image(autoencoder: LatentDiffusionAutoenc
107
107
ensure_similar_images (sample_image , result , min_psnr = 37 , min_ssim = 0.985 )
108
108
109
109
110
+ @no_grad ()
111
+ @pytest .mark .parametrize ("tile_w" , [240 , 242 , 244 , 254 , 256 , 258 ])
112
+ def test_tiled_autoencoder_pathologic_sizes (
113
+ refiners_sd15_autoencoder : SD1Autoencoder ,
114
+ sample_image : Image .Image ,
115
+ test_device : torch .device ,
116
+ tile_w : int ,
117
+ ):
118
+ # 242 is the true pathologic case, a tile just larger than (tile size - overlap).
119
+ # 242 * 4 = 968 = (128 - 8 + 1) * 8
120
+
121
+ autoencoder = refiners_sd15_autoencoder .to (device = test_device , dtype = torch .float32 )
122
+
123
+ sample_image = sample_image .crop ((0 , 0 , tile_w , 400 ))
124
+ sample_image = sample_image .resize ((sample_image .width * 4 , sample_image .height * 4 ))
125
+
126
+ with autoencoder .tiled_inference (sample_image , tile_size = (1024 , 1024 )):
127
+ encoded = autoencoder .tiled_image_to_latents (sample_image )
128
+ result = autoencoder .tiled_latents_to_image (encoded )
129
+
130
+ ensure_similar_images (sample_image , result , min_psnr = 37 , min_ssim = 0.985 )
131
+
132
+
110
133
def test_value_error_tile_encode_no_context (autoencoder : LatentDiffusionAutoencoder , sample_image : Image .Image ) -> None :
111
134
with pytest .raises (ValueError ):
112
135
autoencoder .tiled_image_to_latents (sample_image )
0 commit comments