Project Icon

CCSR

改善扩散模型在内容一致超分辨率任务中的稳定性

CCSR项目专注于提高扩散模型在内容一致超分辨率任务中的稳定性。项目引入全局标准差(G-STD)和局部标准差(L-STD)两个新指标,用于评估基于扩散的方法在超分辨率结果中的图像级和像素级变化。实验表明,CCSR在真实世界和双三次超分辨率任务中均有优异表现,能够生成更稳定、高质量的图像。项目提供开源代码、预训练模型和在线演示,方便研究人员和开发者使用。

提高扩散模型在内容一致性超分辨率上的稳定性

在Colab中打开 Replicate

孙凌晨1,2 | 吴荣源1,2 | 张正强1,2 | 雍宏伟1 | 张磊1,2

1香港理工大学, 2OPPO研究院

⏰ 更新

  • 2024.1.17: 添加Replicate演示 Replicate
  • 2024.1.16: 添加Gradio演示。
  • 2024.1.14: 在inference_ccsr_tile.py中集成tile_diffusiontile_vae以节省推理时的GPU内存。
  • 2024.1.10: 更新CCSR colab演示。❤ 感谢camenduru的实现!
  • 2024.1.4: 发布真实世界超分辨率的代码和模型。
  • 2024.1.3: 论文发布。
  • 2023.12.23: 代码库发布。

:star: 如果CCSR对您的图像或项目有帮助,请给这个仓库点个星。谢谢!:hugs:

🌟 整体框架

ccsr

😍 视觉效果

真实世界超分辨率演示

真实世界超分辨率对比

对于基于扩散模型的方法,为了更全面公平的比较,展示了10次运行中PSNR值最好和最差的两张恢复图像。

ccsr

双三次插值超分辨率对比

ccsr 更多对比请参阅我们的论文详细内容。

📝 定量对比

我们提出了新的稳定性指标,即全局标准差(G-STD)和局部标准差(L-STD),分别用于测量基于扩散的方法在图像级和像素级的超分辨率结果变化。

有关G-STD和L-STD的更多细节可以在我们的论文中找到。

ccsr

⚙ 依赖和安装

## 克隆此仓库
git clone https://github.com/csslc/CCSR.git
cd CCSR

# 创建一个Python版本大于等于3.9的环境
conda create -n ccsr python=3.9
conda activate ccsr
pip install -r requirements.txt
pip install -e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers

🍭 快速推理

步骤1: 下载预训练模型

  • 从以下链接下载CCSR模型:
模型名称描述谷歌云盘百度网盘
real-world_ccsr.ckpt用于真实世界图像复原的CCSR模型。下载下载 (密码: CCSR)
bicubic_ccsr.ckpt用于双三次插值图像复原的CCSR模型。下载下载

步骤2: 准备测试数据

您可以将测试图像放在preset/test_datasets文件夹中。

步骤3: 运行测试命令

python inference_ccsr.py \
--input preset/test_datasets \
--config configs/model/ccsr_stage2.yaml \
--ckpt weights/real-world_ccsr.ckpt \
--steps 45 \
--sr_scale 4 \
--t_max 0.6667 \
--t_min 0.3333 \
--color_fix_type adain \
--output experiments/test \
--device cuda \
--repeat_times 1 

我们将tile_diffusiontile_vae集成到inference_ccsr_tile.py中,以节省推理时的GPU内存。 你可以根据设备的显存大小调整tile大小和步长。

python inference_ccsr_tile.py \
--input preset/test_datasets \
--config configs/model/ccsr_stage2.yaml \
--ckpt weights/real-world_ccsr.ckpt \
--steps 45 \
--sr_scale 4 \
--t_max 0.6667 \
--t_min 0.3333 \
--tile_diffusion \
--tile_diffusion_size 512 \
--tile_diffusion_stride 256 \
--tile_vae \
--vae_decoder_tile_size 224 \
--vae_encoder_tile_size 1024 \
--color_fix_type adain \
--output experiments/test \
--device cuda \
--repeat_times 1

你可以通过将repeat_time设置为N来获得N个不同的超分辨率结果,以测试CCSR的稳定性。数据文件夹应如下所示:

 experiments/test
 ├── sample0   # 第一组超分辨率结果 
 └── sample1   # 第二组超分辨率结果 
   ...
 └── sampleN   # 第N组超分辨率结果 

Gradio演示

下载模型real-world_ccsr.ckpt并将模型放入weights/,然后运行以下命令与gradio网站交互。

python gradio_ccsr.py \
--ckpt weights/real-world_ccsr.ckpt \
--config configs/model/ccsr_stage2.yaml \
--device cuda

ccsr

📏 评估

  1. 计算每个恢复组的图像质量评估。

    cal_iqa.py中填写所需信息并运行,然后你可以在文件夹中获得评估结果,如下所示:

     log_path
     ├── log_name_npy  # 将每个恢复组的IQA值保存为npy文件
     └── log_name.log   # 日志记录
    
  2. 计算基于扩散的超分辨率方法的G-STD值。

    iqa_G-STD.py中填写所需信息并运行,然后你可以获得N个恢复组的平均IQA值和G-STD值。

  3. 计算基于扩散的超分辨率方法的L-STD值。

    iqa_L-STD.py中填写所需信息并运行,然后你可以获得L-STD值。

🚋 训练

步骤1: 准备训练数据

  1. 生成训练集和验证集的文件列表。

    python scripts/make_file_list.py \
    --img_folder [hq_dir_path] \
    --val_size [validation_set_size] \
    --save_folder [save_dir_path] \
    --follow_links
    

    此脚本将收集img_folder中的所有图像文件,并自动将它们分为训练集和验证集。你将在save_folder中得到两个文件列表,每个文件列表中的每一行包含一个图像文件的绝对路径:

    save_dir_path
    ├── train.list # 训练文件列表
    └── val.list   # 验证文件列表
    
  2. 配置训练集和验证集。

    对于真实世界图像恢复,在以下配置文件中填写适当的值。

步骤2: 训练第一阶段模型

  1. 下载预训练的Stable Diffusion v2.1以提供生成能力。

    wget https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.ckpt --no-check-certificate
    
  2. 创建初始模型权重。

    python scripts/make_stage2_init_weight.py \
    --cldm_config configs/model/ccsr_stage1.yaml \
    --sd_weight [sd_v2.1_ckpt_path] \
    --output weights/init_weight_ccsr.ckpt
    
  3. 配置训练相关信息。

    第一阶段训练的配置文件中填写适当的设置。

  4. 开始训练。

    python train.py --config configs/train_ccsr_stage1.yaml
    

步骤3: 训练第二阶段模型

  1. 配置训练相关信息。

    第二阶段训练的配置文件中填写适当的设置。

  2. 开始训练。

     python train.py --config configs/train_ccsr_stage2.yaml
    

引用

如果我们的代码对你的研究或工作有帮助,请考虑引用我们的论文。 以下是BibTeX引用:

@article{sun2023ccsr,
  title={Improving the Stability of Diffusion Models for Content Consistent Super-Resolution},
  author={Sun, Lingchen and Wu, Rongyuan and Zhang, Zhengqiang and Yong, Hongwei and Zhang, Lei},
  journal={arXiv preprint arXiv:2401.00877},
  year={2024}
}

许可证

本项目采用Apache 2.0许可证发布。

致谢

本项目基于ControlNetBasicSRDiffBIR。部分代码来自StableSR。感谢他们出色的工作。

联系方式

如有任何问题,请联系:ling-chen.sun@connect.polyu.hk

统计数据

访问量

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号