oldtocolor / app.py
druvx13's picture
Update app.py
9dacd99 verified
raw
history blame
2.32 kB
import gradio as gr
import torch
from diffusers import AutoPipelineForImage2Image
from transformers import pipeline
from PIL import Image
import numpy as np
import os
# Model loading with dynamic pipeline selection
cache_dir = "./model_cache"
os.makedirs(cache_dir, exist_ok=True)
# Load model using AutoPipeline
pipe = AutoPipelineForImage2Image.from_pretrained(
"camenduru/cv_ddcolor_image-colorization",
torch_dtype=torch.float16,
cache_dir=cache_dir,
variant="fp16"
).to("cuda")
def colorize_image(input_image):
"""Process B&W image and return colorized version"""
# Ensure image is in grayscale mode
if input_image.mode != 'L':
input_image = input_image.convert('L')
# Resize to model's expected input size
target_size = (512, 512) # Increased resolution for better quality
resized_image = input_image.resize(target_size)
# Convert to RGB as required by model
grayscale_image = resized_image.convert("RGB")
# Generate colorized image
with torch.inference_mode():
result = pipe(
prompt="colorized photo",
image=grayscale_image,
num_inference_steps=20,
strength=0.8
).images[0]
return result
# Custom CSS for vintage styling
custom_css = """
#output-image {max-width: 100%; border: 2px solid #ccc; border-radius: 8px;}
"""
# UI Layout
with gr.Blocks(theme="soft", css=custom_css) as demo:
gr.Markdown("""
# 📸 Vintage Photo Colorizer
Transform old black & white photos into vibrant color images using DDColor AI.
## How to Use
1. Upload a grayscale image (or color image will be converted to B&W)
2. Click "Colorize" to process
3. Download your new colorized photo!
""")
with gr.Row():
input_img = gr.Image(label="Upload Black & White Image", type="pil")
colorize_btn = gr.Button("🎨 Colorize Photo", variant="primary")
output_img = gr.Image(label="Colorized Image", elem_id="output-image")
colorize_btn.click(
fn=colorize_image,
inputs=[input_img],
outputs=[output_img]
)
gr.Markdown("""
### Powered by [DDColor](https://huggingface.co/papers/2212.11613 )
*Dual Decoders for Photo-Realistic Image Colorization*
""")
demo.launch()