Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -44,9 +44,11 @@ def upscale_chunk(chunk, model, processor, device):
|
|
| 44 |
output_image = (output * 255.0).round().astype(np.uint8)
|
| 45 |
return Image.fromarray(output_image)
|
| 46 |
|
|
|
|
|
|
|
|
|
|
| 47 |
@spaces.GPU
|
| 48 |
def main(image, original_filename, model_choice, save_as_jpg=True, use_tiling=True):
|
| 49 |
-
# Resize the input image
|
| 50 |
image = resize_image(image)
|
| 51 |
|
| 52 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
@@ -60,25 +62,18 @@ def main(image, original_filename, model_choice, save_as_jpg=True, use_tiling=Tr
|
|
| 60 |
model = Swin2SRForImageSuperResolution.from_pretrained(model_paths[model_choice]).to(device)
|
| 61 |
|
| 62 |
if use_tiling:
|
| 63 |
-
# Split the image into chunks
|
| 64 |
chunks = split_image(image)
|
| 65 |
-
|
| 66 |
-
# Process each chunk
|
| 67 |
upscaled_chunks = []
|
| 68 |
for chunk, x, y in chunks:
|
| 69 |
upscaled_chunk = upscale_chunk(chunk, model, processor, device)
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
upscaled_chunks.append((upscaled_chunk, x * 4, y * 4)) # Multiply coordinates by 4 due to 4x upscaling
|
| 73 |
|
| 74 |
-
|
| 75 |
-
final_size = (image.width * 4 - 32, image.height * 4 - 32) # Adjust for removed pixels
|
| 76 |
-
upscaled_image = stitch_image(upscaled_chunks, final_size)
|
| 77 |
else:
|
| 78 |
-
# Process the entire image at once
|
| 79 |
upscaled_image = upscale_chunk(image, model, processor, device)
|
|
|
|
| 80 |
|
| 81 |
-
# Generate output filename
|
| 82 |
original_basename = os.path.splitext(original_filename)[0] if original_filename else "image"
|
| 83 |
output_filename = f"{original_basename}_upscaled"
|
| 84 |
|
|
|
|
| 44 |
output_image = (output * 255.0).round().astype(np.uint8)
|
| 45 |
return Image.fromarray(output_image)
|
| 46 |
|
| 47 |
+
def remove_boundary(image, boundary=32):
|
| 48 |
+
return image.crop((0, 0, image.width - boundary, image.height - boundary))
|
| 49 |
+
|
| 50 |
@spaces.GPU
|
| 51 |
def main(image, original_filename, model_choice, save_as_jpg=True, use_tiling=True):
|
|
|
|
| 52 |
image = resize_image(image)
|
| 53 |
|
| 54 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
|
|
| 62 |
model = Swin2SRForImageSuperResolution.from_pretrained(model_paths[model_choice]).to(device)
|
| 63 |
|
| 64 |
if use_tiling:
|
|
|
|
| 65 |
chunks = split_image(image)
|
|
|
|
|
|
|
| 66 |
upscaled_chunks = []
|
| 67 |
for chunk, x, y in chunks:
|
| 68 |
upscaled_chunk = upscale_chunk(chunk, model, processor, device)
|
| 69 |
+
upscaled_chunk = remove_boundary(upscaled_chunk)
|
| 70 |
+
upscaled_chunks.append((upscaled_chunk, x * 4, y * 4))
|
|
|
|
| 71 |
|
| 72 |
+
upscaled_image = stitch_image(upscaled_chunks, (image.width * 4, image.height * 4))
|
|
|
|
|
|
|
| 73 |
else:
|
|
|
|
| 74 |
upscaled_image = upscale_chunk(image, model, processor, device)
|
| 75 |
+
upscaled_image = remove_boundary(upscaled_image)
|
| 76 |
|
|
|
|
| 77 |
original_basename = os.path.splitext(original_filename)[0] if original_filename else "image"
|
| 78 |
output_filename = f"{original_basename}_upscaled"
|
| 79 |
|