哇,字节跳动开源了DreamClear项目,采用的是Apache-2.0开源协议,可以商用,并且用户可以自由地使用、复制、修改和分发该软件,甚至可以用于私有项目中。这对于开发者和企业来说是个好消息,因为它们可以利用这项技术来提升自己的产品和服务,同时还能享受到开源社区带来的协作和创新优势。
1. 它是什么
DreamClear 是一项由中国科学院自动化研究所和字节跳动共同开发的高性能图像修复技术,专注于隐私安全的数据集管理。这项技术主要面向图像质量提升和细节恢复等应用场景,通过利用先进的深度学习模型,将低质量(LQ)图像恢复为高质量(HQ)图像,具有优秀的性能表现。该技术不仅考虑了图像恢复的效果,还注重确保数据隐私,从而符合现代社会对隐私保护的需求。
2. 功能特色
- 图像恢复:DreamClear 能够将低质量图像恢复为高质量图像,提升图像的细节和质量。
- 隐私保护:在进行图像恢复的同时,DreamClear 还考虑到了数据隐私的保护,确保在使用过程中用户的隐私安全。
- 深度学习模型:利用深度学习技术,DreamClear 能够智能地识别和修复图像中的问题,提高恢复效果。
- 开源:DreamClear 已经开源,可以通过 GitHub 访问其代码和相关文档,便于开发者和研究人员进一步研究和应用。
3. 定价信息或价格
DreamClear 作为一个开源项目,对所有用户都是免费的。用户可以自由下载和使用其代码,无需支付任何费用。
4. 如何使用
DreamClear 的开源地址见:DreamClear使用指南 | MeoAI AI技术。您可以通过这个链接查看 GitHub 仓库和带注释的代码,以及模型的链接地址,获取更多详细信息和使用指南。
- 访问 GitHub:用户可以直接访问 DreamClear 的 GitHub 仓库,克隆或下载项目代码。
依赖项和安装
1.克隆此仓库并导航到DreamClear文件夹:
2.创建Conda环境并安装包:
3.下载预训练模型(所有模型都可以在Huggingface上方便地下载):
🎰训练
I - 准备训练数据 类似于SeeSR,我们预先准备了HQ-LQ图像对,用于IR模型的训练。运行以下命令以生成训练的配对数据:
# 使用make_paired_data.py脚本生成训练数据对
python3 tools/make_paired_data.py \
--gt_path gt_path1 gt_path2 ... \
--save_dir /path/to/save/folder/ \
--epoch 1 # 指定生成配对数据的轮数
生成配对数据后,您可以使用MLLM(例如,LLaVA)为HQ图像生成详细的文本提示。然后您需要使用T5提取文本特征,以节省训练时间。运行:
# 使用extract_t5_features.py脚本提取T5特征
python3 tools/extract_t5_features.py \
--t5_ckpt /path/to/t5-v1_1-xxl \
--caption_folder /path/to/caption/folder \
--save_npz_folder /path/to/save/npz/folder
最终,训练数据集的目录结构应如下所示:
training_datasets_folder/
└── gt
└── 0000001.png # GT图像, 分辨率为(1024, 1024, 3)
└── ...
└── sr_bicubic
└── 0000001.png # LQ图像加上双三次上采样,分辨率为(1024, 1024, 3)
└── ...
└── caption
└── 0000001.txt # 标题文件(训练中未使用)
└── ...
└── npz
└── 0000001.npz # T5特征文件
└── ...
II - 训练DreamClear 运行以下命令以默认设置训练DreamClear:
# 使用torch.distributed.launch启动分布式训练
python3 -m torch.distributed.launch --nproc_per_node=8 --nnodes=... --node_rank=... --master_addr=... --master_port=... \
train_dreamclear.py configs/DreamClear/DreamClear_Train.py \
--load_from /path/to/PixArt-XL-2-1024-MS.pth \
--vae_pretrained /path/to/sd-vae-ft-ema \
--swinir_pretrained /path/to/general_swinir_v1.ckpt \
--val_image /path/to/RealLQ250/lq/val_image.png \
--val_npz /path/to/RealLQ250/npz/val_image.npz \
--work_dir experiments/train_dreamclear
请在configs/DreamClear/DreamClear_Train.py
中修改训练数据集的路径。您还可以根据您自己的GPU机器修改训练超参数(例如,lr, train_batch_size, gradient_accumulation_steps)。
⚡ 推理
我们提供了RealLQ250基准,可以从Google Drive下载。
测试DreamClear进行图像恢复 运行以下命令以从256恢复到1024的LQ图像:
# 使用torch.distributed.launch启动推理过程
python3 -m torch.distributed.launch --nproc_per_node 1 --master_port 1234 \
test_1024.py configs/DreamClear/DreamClear_Test.py \
--dreamclear_ckpt /path/to/DreamClear-1024.pth \
--swinir_ckpt /path/to/general_swinir_v1.ckpt \
--vae_ckpt /path/to/sd-vae-ft-ema \
--lre --cfg_scale 4.5 --color_align wavelet \
--image_path /path/to/RealLQ250/lq \
--npz_path /path/to/RealLQ250/npz \
--save_dir validation
在高级基准上的评估 分割和检测的测试说明可以在它们各自的文件夹中找到。
5. 技术基础
- 深度扩散先验(Deep Diffusion Prior): DreamClear的核心思想是在干净图像分布中进行搜索,该分布由扩散先验表示,以找到清晰图像,同时保持对输入的退化图像的忠实。这种方法不需要对图像退化的类型有明确的先验知识,而是通过将退化图像嵌入到预训练的扩散模型的潜在空间中,并通过对这些生成清晰图像的扩散过程进行精心设计的重新采样,从而实现图像的恢复。
- 方差保持采样(Variance Preservation Sampling, VPS)技术: DreamClear利用了一种新颖的方差保持采样技术,这种技术有助于在扩散过程中保持图像的方差,这对于生成高质量的恢复图像至关重要。VPS技术引导受损的低概率潜变量朝向附近的高概率区域,从而可以生成清晰样本。这样,VPS作为一种通用解决方案,即使不知道具体的退化模型,也可以确保忠实度。
- 无监督和训练自由的方法: DreamClear是一个无监督和训练自由的盲图像修复方法,它不需要退化先验知识,但能产生高保真度和普适性,适用于各种类型的图像退化。DreamClear嵌入退化图像回到预训练的扩散模型的潜在空间,并通过一个精心设计的扩散过程重新采样,模仿生成清晰图像的过程。
DreamClear 的核心技术亮点在于其能够从低分辨率图像中生成高分辨率图像,同时保持隐私安全。它利用生成高质量(HQ)-低质量(LQ)图像配对的专用数据集进行训练,避免了传统数据收集中的版权和隐私难题。DreamClear 的“自适应调制器混合”模块(MoAM)可以动态适配多个图像恢复模型,使其适应不同的图像劣化类型,并进一步扩展了模型的适用性。
6. 适用场景
- 图像质量提升:适用于需要提升图像质量的场景,如老照片修复、低分辨率图像增强等。
- 细节恢复:适用于需要恢复图像细节的场景,如监控视频增强、医学影像处理等。
- 隐私保护:适用于对数据隐私有较高要求的图像处理场景,确保在提升图像质量的同时保护用户隐私。