---
title: DDColor-Anime
canonical_url: "https://www.modelscope.cn/models/lf3000y/DDColor-Anime"
md_url: "https://www.modelscope.cn/models/lf3000y/DDColor-Anime.md"
repository: lf3000y/DDColor-Anime
chinese_name: "动漫图上色模型"
last_updated: 2024-12-25
pipeline_tag: image-colorization
tasks:
  - image-colorization
library_name:
  - pytorch
frameworks:
  - Pytorch
downloads: 59
stars: 5
---

# DDColor-Anime

> DDColor-Anime - lf3000y 在 ModelScope 开源的模型。本模型使用约30w张动漫图进行训练，针对动漫图的上色模型，训练参考DDColor训练流程，DDColor 是最新的 SOTA 图像上色算法，能够对输入的黑白图像生成自然生动的彩色结果。

- **Repository**: lf3000y/DDColor-Anime
- **Tasks**: image-colorization
- **Downloads**: 59
- **Stars**: 5
- **Last updated**: 2024-12-25

Source: https://www.modelscope.cn/models/lf3000y/DDColor-Anime

---

# 🎨 DDColor-Anime 动漫图像上色模型
该模型为黑白动漫图像上色模型，输入一张黑白漫画，实现端到端的全图上色，返回上色处理后的彩色图像。
[**English Version（原项目介绍）**](README_en.md)

## 模型描述

DDColor 是最新的 SOTA 图像上色算法，能够对输入的黑白图像生成自然生动的彩色结果。

本模型是使用300w张彩色漫画重新训练，针对动漫图像进行特化的上色模型。

算法整体流程如下图，使用 UNet 结构的骨干网络和图像解码器分别实现图像特征提取和特征图上采样，并利用 Transformer 结构的颜色解码器完成基于视觉语义的颜色查询，最终聚合输出彩色通道预测结果。
<p align="center">
  <img src="assets/network_arch.jpg" width="100%">
</p>



## 效果预览
| INPUT          | iic/cv_ddcolor_image-colorization  | DDColor-Anime |
|:-----------------:|:----:|:------------:|
|<img src="assets/test_1.png" alt="原始图像" width="200" />|<img src="assets/test_1_dd.png" alt="ImageNet数据集" width="200" />|<img src="assets/test_1_anime.png" alt="动漫数据集" width="200" />|
|<img src="assets/test_2.png" alt="原始图像" width="200" />|<img src="assets/test_2_dd.png" alt="ImageNet数据集" width="200" />|<img src="assets/test_2_anime.png" alt="动漫数据集" width="200" />|

## 模型局限性以及可能的偏差

- 本算法模型只使用彩色漫画数据集进行训练，对于分布外场景（例如真实场景等）可能产生不恰当的上色结果；
- 对于低分辨率或包含明显噪声的图像，算法可能无法得到理想的生成效果。

## 训练数据介绍

模型使用群友[有🌸无实]提供的非公开彩色漫画数据集训练，其训练集包含 300 万张彩色图像。

## 如何使用

### 环境要求

- Linux ✔
- Python >= 3.7
- PyTorch >= 1.7

### 安装依赖

```bash
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

python3 setup.py develop  # install basicsr
```

### 运行推理

```bash
python3 inference/colorization_pipeline.py --input {输入图像} --output {输出路径} --model_path ./anime_net_g_latest.pth
```

## 模型训练流程

### 预处理

将图像数据集分为数据集和校验集
```python
import os
import random
import shutil

# 设置源目录和目标目录
source_dir = '/data/imgs'  # 替换为你的源目录路径
train_dir = '/data/DDColor/data_list/train'   # 替换为你的train目录路径
val_dir = '/data/DDColor/data_list/val'       # 替换为你的val目录路径

# 确保目标目录存在
os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)

# 获取所有图片文件
files = [f for f in os.listdir(source_dir) if os.path.isfile(os.path.join(source_dir, f)) and f.lower().endswith(('.png', '.jpg', '.jpeg', '.gif'))]

# 随机打乱文件列表
random.shuffle(files)

# 计算分界点
split_index = len(files) // 2

# 移动图片到train和val目录
for i, file in enumerate(files):
    if i < split_index:
        shutil.move(os.path.join(source_dir, file), os.path.join(train_dir, file))
    else:
        shutil.move(os.path.join(source_dir, file), os.path.join(val_dir, file))

print(f"Moved {split_index} files to train directory.")
print(f"Moved {len(files) - split_index} files to val directory.")
```

### 生成训练数据和校验数据列表

生成训练数据列表

```bash
python3 data_list/get_meta_file.py --output-name data_list/train.txt --data-path data_list/train
```

生成校验数据列表

```bash
python3 data_list/get_meta_file.py --output-name data_list/val.txt --data-path data_list/val
```

如果有替换`--output-name`路径或者有其他配置需要修改，可以单独修改`options/train/train_ddcolor.yml`

### 下载预训练模型


手动下载后放置在`pretrain`目录中或运行下面命令

[ConvNeXt](https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_224.pth)
```bash
wget https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_224.pth -O pretrain/convnext_large_22k_224.pth
```

[InceptionV3](https://download.pytorch.org/models/inception_v3_google-1a9a5a14.pth)
```bash
wget https://download.pytorch.org/models/inception_v3_google-1a9a5a14.pth -O pretrain/inception_v3_google-1a9a5a14.pth
```


### 开始训练

在后台运行训练

```bash
nohup bash scripts/train.sh > train.log &
```

训练日志重定向至train.log中，训练达到40w步则停止。

训练的模型位于`experiments`目录中，训练过程中会自动备份模型与生成中间效果图，请准备足够充足的空间。
