Skip to content

[ICCV 2023] DDColor: Towards Photo-Realistic Image Colorization via Dual Decoders

License

Notifications You must be signed in to change notification settings

piddnad/DDColor

Folders and files

NameName
Last commit message
Last commit date
Dec 15, 2023
Dec 31, 2024
Feb 3, 2024
Oct 25, 2024
Aug 16, 2023
May 15, 2023
Dec 31, 2024
Oct 25, 2024
Jan 13, 2024
Dec 13, 2023
Dec 31, 2024
May 15, 2023
Aug 26, 2024
Dec 31, 2024
Oct 25, 2024
Jan 20, 2024
Dec 31, 2024
Dec 31, 2024
Jan 18, 2024
Oct 25, 2024
May 15, 2023
May 15, 2023

Repository files navigation

🎨 DDColor

arXiv HuggingFace ModelScope demo Replicate visitors

Official PyTorch implementation of ICCV 2023 Paper "DDColor: Towards Photo-Realistic Image Colorization via Dual Decoders".

Xiaoyang Kang, Tao Yang, Wenqi Ouyang, Peiran Ren, Lingzhi Li, Xuansong Xie
DAMO Academy, Alibaba Group

🪄 DDColor can provide vivid and natural colorization for historical black and white old photos.

🎲 It can even colorize/recolor landscapes from anime games, transforming your animated scenery into a realistic real-life style! (Image source: Genshin Impact)

News

  • [2024-01-28] Support inference via 🤗 Hugging Face! Thanks @Niels for the suggestion and example code and @Skwara for fixing bug.
  • [2024-01-18] Add Replicate demo and API! Thanks @Chenxi.
  • [2023-12-13] Release the DDColor-tiny pre-trained model!
  • [2023-09-07] Add the Model Zoo and release three pretrained models!
  • [2023-05-15] Code release for training and inference!
  • [2023-05-05] The online demo is available!

Online Demo

Try our online demos at ModelScope and Replicate.

Methods

In short: DDColor uses multi-scale visual features to optimize learnable color tokens (i.e. color queries) and achieves state-of-the-art performance on automatic image colorization.

Installation

Requirements

  • Python >= 3.7
  • PyTorch >= 1.7

Installation with conda (recommended)

conda create -n ddcolor python=3.9
conda activate ddcolor
pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu118

pip install -r requirements.txt

# Install basicsr, only required for training
python3 setup.py develop  

Quick Start

Inference Using Local Script (No basicsr Required)

  1. Download the pretrained model:
from modelscope.hub.snapshot_download import snapshot_download

model_dir = snapshot_download('damo/cv_ddcolor_image-colorization', cache_dir='./modelscope')
print('model assets saved to %s' % model_dir)
  1. Run inference with
python infer.py --model_path ./modelscope/damo/cv_ddcolor_image-colorization/pytorch_model.pt --input ./assets/test_images

or

sh scripts/inference.sh

Inference Using Hugging Face

Load the model via Hugging Face Hub:

from infer_hf import DDColorHF

ddcolor_paper_tiny = DDColorHF.from_pretrained("piddnad/ddcolor_paper_tiny")
ddcolor_paper      = DDColorHF.from_pretrained("piddnad/ddcolor_paper")
ddcolor_modelscope = DDColorHF.from_pretrained("piddnad/ddcolor_modelscope")
ddcolor_artistic   = DDColorHF.from_pretrained("piddnad/ddcolor_artistic")

Check infer_hf.py for the details of the inference, or directly perform model inference by running:

python infer_hf.py --model_name ddcolor_modelscope --input ./assets/test_images
# model_name: [ddcolor_paper | ddcolor_modelscope | ddcolor_artistic | ddcolor_paper_tiny]

Inference Using ModelScope

  1. Install modelscope:
pip install modelscope
  1. Run inference:
import cv2
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

img_colorization = pipeline(Tasks.image_colorization, model='damo/cv_ddcolor_image-colorization')
result = img_colorization('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/audrey_hepburn.jpg')
cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG])

This code will automatically download the ddcolor_modelscope model (see ModelZoo) and performs inference. The model file pytorch_model.pt can be found in the local path ~/.cache/modelscope/hub/damo.

Gradio Demo

Install the gradio and other required libraries:

pip install gradio gradio_imageslider timm

Then, you can run the demo with the following command:

python gradio_app.py

Model Zoo

We provide several different versions of pretrained models, please check out Model Zoo.

Train

  1. Dataset Preparation: Download the ImageNet dataset or create a custom dataset. Use this script to obtain the dataset list file:
python data_list/get_meta_file.py
  1. Download the pretrained weights for ConvNeXt and InceptionV3 and place them in the pretrain folder.

  2. Specify 'meta_info_file' and other options in options/train/train_ddcolor.yml.

  3. Start training:

sh scripts/train.sh

ONNX export

Support for ONNX model exports is available.

  1. Install dependencies:
pip install onnx==1.16.1 onnxruntime==1.19.2 onnxsim==0.4.36
  1. Usage example:
python export.py
usage: export.py [-h] [--input_size INPUT_SIZE] [--batch_size BATCH_SIZE] --model_path MODEL_PATH [--model_size MODEL_SIZE] 
[--decoder_type DECODER_TYPE] [--export_path EXPORT_PATH] [--opset OPSET]

Demo of ONNX export using a ddcolor_paper_tiny model is available here.

Citation

If our work is helpful for your research, please consider citing:

@inproceedings{kang2023ddcolor,
  title={DDColor: Towards Photo-Realistic Image Colorization via Dual Decoders},
  author={Kang, Xiaoyang and Yang, Tao and Ouyang, Wenqi and Ren, Peiran and Li, Lingzhi and Xie, Xuansong},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
  pages={328--338},
  year={2023}
}

Acknowledgments

We thank the authors of BasicSR for the awesome training pipeline.

Xintao Wang, Ke Yu, Kelvin C.K. Chan, Chao Dong and Chen Change Loy. BasicSR: Open Source Image and Video Restoration Toolbox. https://github.com/xinntao/BasicSR, 2020.

Some codes are adapted from ColorFormer, BigColor, ConvNeXt, Mask2Former, and DETR. Thanks for their excellent work!

About

[ICCV 2023] DDColor: Towards Photo-Realistic Image Colorization via Dual Decoders

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published