DDColor:AI黑科技让老照片“一键复活”!阿里巴巴达摩院双解码器技术,还原历史色彩

204 阅读2分钟

在这里插入图片描述

介绍

DDColor 是由阿里巴巴达摩院研发的基于深度学习的图像上色工具,通过双解码器技术和多尺度特征分析,实现了黑白或灰度图像的高质量彩色化。

  1. GitHub:github.com/piddnad/DDC…
  2. 魔塔:www.modelscope.cn/studios/iic… 在这里插入图片描述
  3. 论文:点击这在这里插入图片描述

核心技术和功能

核心技术

  1. 双解码器架构

    • 像素解码器:负责恢复图像的空间结构与细节,通过上采样操作重建高分辨率图像。
    • 颜色解码器:基于 Transformer 模型生成语义关联的颜色查询,结合多尺度视觉特征优化色彩分布,减少色彩误配。
    • 两者的协同工作实现了对图像内容的自适应学习,无需依赖预设规则。
  2. 多尺度特征处理 提取图像不同尺度的视觉特征(如轮廓、纹理),结合上下文信息进行色彩预测,确保近景与远景的细节均能准确着色。

  3. 色彩优化机制 引入 色彩丰富度损失函数,通过计算颜色平面的标准差和均值,增强色彩饱和度和视觉吸引力,避免生成单调的着色效果。

核心功能

  1. 全自动上色 支持一键上传黑白图像,输出高质量彩色版本,适用于历史照片、动漫线稿、游戏场景等。
  2. 语义一致性着色 通过深度学习模型分析图像内容(如物体类型、场景逻辑),生成符合现实逻辑的色彩。
  3. 多场景兼容性 支持自然图像、艺术作品、低质量素材等多种输入类型,并可实现风格化渲染。

使用

  1. 依赖 Python >= 3.7 PyTorch >= 1.7
  2. 推荐安装
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])