介绍
DDColor 是由阿里巴巴达摩院研发的基于深度学习的图像上色工具,通过双解码器技术和多尺度特征分析,实现了黑白或灰度图像的高质量彩色化。
- GitHub:github.com/piddnad/DDC…
- 魔塔:www.modelscope.cn/studios/iic…
- 论文:点击这。
核心技术和功能
核心技术
-
双解码器架构
- 像素解码器:负责恢复图像的空间结构与细节,通过上采样操作重建高分辨率图像。
- 颜色解码器:基于 Transformer 模型生成语义关联的颜色查询,结合多尺度视觉特征优化色彩分布,减少色彩误配。
- 两者的协同工作实现了对图像内容的自适应学习,无需依赖预设规则。
-
多尺度特征处理 提取图像不同尺度的视觉特征(如轮廓、纹理),结合上下文信息进行色彩预测,确保近景与远景的细节均能准确着色。
-
色彩优化机制 引入 色彩丰富度损失函数,通过计算颜色平面的标准差和均值,增强色彩饱和度和视觉吸引力,避免生成单调的着色效果。
核心功能
- 全自动上色 支持一键上传黑白图像,输出高质量彩色版本,适用于历史照片、动漫线稿、游戏场景等。
- 语义一致性着色 通过深度学习模型分析图像内容(如物体类型、场景逻辑),生成符合现实逻辑的色彩。
- 多场景兼容性 支持自然图像、艺术作品、低质量素材等多种输入类型,并可实现风格化渲染。
使用
- 依赖 Python >= 3.7 PyTorch >= 1.7
- 推荐安装
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
快速开始
基于本地脚本的推理实现(不依赖 basicsr 工具包)
-
下载预模型
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) -
推理
python infer.py --model_path ./modelscope/damo/cv_ddcolor_image-colorization/pytorch_model.pt --input ./assets/test_images # 或者 sh scripts/inference.sh
基于Hugging Face推理
- 通过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")
- 查看 infer_hp.py 文件以获取推理的详细实现,或直接运行以下命令执行模型推理
python infer_hf.py --model_name ddcolor_modelscope --input ./assets/test_images
# model_name: [ddcolor_paper | ddcolor_modelscope | ddcolor_artistic | ddcolor_paper_tiny]
基于ModelScope推理
- 安装modelscope
pip install modelscope
- 运行推理
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])