Spaces:
Running
Running
| import os | |
| import warnings | |
| from pathlib import Path | |
| import gradio as gr | |
| from gradio_imageslider import ImageSlider # Import ImageSlider | |
| import torch | |
| import fastai | |
| from deoldify import device | |
| from deoldify.device_id import DeviceId | |
| from deoldify.visualize import * | |
| from huggingface_hub import HfApi | |
| # Suppress warnings | |
| warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?") | |
| # Hugging Face model repo details | |
| repo_id = "afondiel/image-colorizer-deoldify" | |
| repo_type = "space" | |
| # Set device | |
| device.set(device=DeviceId.CPU) # Use CPU first | |
| api = HfApi() | |
| snapshot_folder = api.snapshot_download(repo_id=repo_id, repo_type=repo_type) | |
| device.set(device=DeviceId.GPU0) # If GPU available | |
| # Load model | |
| _colorizer = get_image_colorizer(root_folder=Path(snapshot_folder), artistic=True) | |
| def colorizer_fn(input_img): | |
| """Colorize grayscale images with fixed render factor 40.""" | |
| if input_img: | |
| output_img = _colorizer.get_transformed_image( | |
| path=input_img, | |
| render_factor=40, # Fixed render factor | |
| watermarked=False, | |
| post_process=True, | |
| ) | |
| return (input_img, output_img) # Return tuple for ImageSlider | |
| else: | |
| return None | |
| # ✅ Custom CSS for simple white "Colorizer" heading | |
| custom_css = """ | |
| body, .gradio-container { | |
| background-color: black !important; /* Black background */ | |
| color: white !important; /* White text */ | |
| } | |
| .gr-box { | |
| width: 100% !important; /* Full-width box */ | |
| height: 100% !important; /* Full-height box */ | |
| } | |
| img { | |
| width: 100% !important; /* Stretch image */ | |
| height: 100% !important; | |
| object-fit: cover !important; /* Fit image perfectly */ | |
| } | |
| footer { | |
| display: none !important; /* Hide footer */ | |
| } | |
| button[title="Share"] { | |
| display: none !important; /* Hide Share button */ | |
| } | |
| /* Simple white "Colorizer" heading */ | |
| h1 { | |
| font-size: 36px !important; /* Standard font size */ | |
| color: white !important; /* Plain white color */ | |
| text-align: center !important; /* Center alignment */ | |
| } | |
| """ | |
| # ✅ Gradio Interface (Image uploader + Slider output) | |
| with gr.Blocks(css=custom_css) as demo: | |
| gr.Markdown("# Colorizer") | |
| # File uploader | |
| image_input = gr.File(label="Select Image", file_types=[".png", ".jpg", ".jpeg"]) | |
| # Image Slider for comparison with full-size images | |
| output = ImageSlider(label="Old vs Colorized Image", type="filepath") | |
| # Process image when uploaded | |
| image_input.change(colorizer_fn, inputs=image_input, outputs=output) | |
| # ✅ Launch the app | |
| if __name__ == "__main__": | |
| demo.launch(share=True) | |