Project Icon

CAT

创新图像恢复模型 强化远程特征建模

CAT是一种创新的图像恢复模型,采用矩形窗口自注意力机制扩大特征提取范围。模型通过水平和垂直矩形窗口并行聚合特征,实现窗口间交互。结合CNN的局部特性,CAT在全局-局部特征耦合方面表现出色。实验证实该方法在多种图像恢复任务中超越了现有技术水平。

用于图像复原的交叉聚合Transformer

Zheng ChenYulun ZhangJinjin GuYongbing ZhangLinghe KongXin Yuan,"用于图像复原的交叉聚合Transformer",NeurIPS 2022(聚焦报告)

[论文] [arXiv] [补充材料] [可视化结果] [预训练模型]


摘要: 近来,Transformer架构被引入图像复原领域,取代卷积神经网络(CNN)并取得了惊人的结果。考虑到Transformer全局注意力的高计算复杂度,一些方法使用局部方形窗口来限制自注意力的范围。然而,这些方法缺乏不同窗口之间的直接交互,限制了建立长程依赖关系。为解决上述问题,我们提出了一种新的图像复原模型,即交叉聚合Transformer(CAT)。我们CAT的核心是矩形窗口自注意力(Rwin-SA),它在不同的头部并行使用水平和垂直矩形窗口注意力来扩展注意力区域,并聚合跨不同窗口的特征。我们还引入了轴向移位操作以实现不同窗口之间的交互。此外,我们提出了局部互补模块来补充自注意力机制,该模块将CNN的归纳偏置(如平移不变性和局部性)融入Transformer,实现全局-局部耦合。大量实验表明,我们的CAT在多个图像复原应用上优于最近的最先进方法。


超分辨率 (x4)高质量低质量SwinIRCAT (我们的方法)

依赖项

  • Python 3.8
  • PyTorch 1.8.0
  • NVIDIA GPU + CUDA
# 克隆GitHub仓库并进入默认目录'CAT'。
git clone https://github.com/zhengchen1999/CAT.git
conda create -n CAT python=3.8
conda activate CAT
pip install -r requirements.txt
python setup.py develop

待办事项

  • 图像超分辨率
  • JPEG压缩伪影消除
  • 图像去噪
  • 其他任务

目录

  1. 数据集
  2. 模型
  3. 训练
  4. 测试
  5. 结果
  6. 引用
  7. 致谢

数据集

可以按如下方式下载使用的训练和测试集:

任务训练集测试集可视化结果
图像超分辨率DIV2K (800张训练图像,100张验证图像) + Flickr2K (2650张图像) [完整训练数据集 DF2K]Set5 + Set14 + BSD100 + Urban100 + Manga109 [完整测试数据集 下载]点击这里
灰度JPEG压缩伪影去除DIV2K (800张训练图像) + Flickr2K (2650张图像) + WED(4744张图像) + BSD500 (400张训练和测试图像) [完整训练数据集 DFWB]Classic5 + LIVE + Urban100 [完整测试数据集 下载]点击这里
真实图像去噪SIDD (320张训练图像) [完整训练数据集 SIDD]SIDD + DND [完整测试数据集 下载]点击这里

这里的可视化结果是在超分辨率(x4)、JPEG压缩伪影去除(q10)和真实图像去噪条件下生成的。

下载训练和测试数据集并将它们放入datasets/restormer/datasets对应的文件夹中。查看datasets了解详细的目录结构。

模型

任务方法参数量(M)FLOPs(G)数据集PSNR(dB)SSIM模型库可视化结果
超分辨率CAT-R16.60292.7Urban10027.450.8254Google DriveGoogle Drive
超分辨率CAT-A16.60360.7Urban10027.890.8339Google DriveGoogle Drive
超分辨率CAT-R-211.93216.3Urban10027.590.8285Google DriveGoogle Drive
超分辨率CAT-A-216.60387.9Urban10027.990.8357Google DriveGoogle Drive
压缩伪影去除CAT16.20346.4LIVE129.890.8295Google DriveGoogle Drive
真实图像去噪CAT25.7753.2SIDD40.010.9600Google DriveGoogle Drive
性能报告基于Urban100(x4,超分辨率),LIVE1(q=10,压缩伪影去除)和SIDD(真实图像去噪)数据集。FLOPs测试的输入大小为128 x 128。

训练

图像超分辨率

  • 进入'CAT'目录并运行安装脚本。

    # 如果已在CAT目录并完成安装,请忽略
    python setup.py develop
    
  • 下载训练集(DF2K,已预处理)和测试集(Set5、Set14、BSD100、Urban100、Manga109,已预处理),将它们放在datasets/目录下。

  • 运行以下脚本。训练配置在options/train/目录中。

    # CAT-R,超分辨率,输入=64x64,4个GPU
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_R_sr_x2.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_R_sr_x3.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_R_sr_x4.yml --launcher pytorch
    
    # CAT-A,超分辨率,输入=64x64,4个GPU
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_A_sr_x2.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_A_sr_x3.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_A_sr_x4.yml --launcher pytorch
    
    # CAT-R-2,超分辨率,输入=64x64,4个GPU
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_R_2_sr_x2.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_R_2_sr_x3.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_R_2_sr_x4.yml --launcher pytorch
    
    # CAT-A-2,超分辨率,输入=64x64,4个GPU
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_A_2_sr_x2.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_A_2_sr_x3.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_A_2_sr_x4.yml --launcher pytorch
    
  • 训练实验结果保存在experiments/目录中。

JPEG压缩伪影去除

  • 进入'CAT'目录并运行安装脚本

    # 如果已在CAT目录并完成安装,请忽略
    python setup.py develop
    
  • 下载训练集(DFWB,已预处理)和测试集(Classic5、LIVE1、Urban100,已预处理),将它们放在datasets/目录下。

  • 运行以下脚本。训练配置在options/train/目录中。

    # CAT,压缩伪影去除,输入=128x128,4个GPU
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_car_q10.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_car_q20.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_car_q30.yml --launcher pytorch
    python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/train/train_CAT_car_q40.yml --launcher pytorch
    
  • 训练实验结果保存在experiments/目录中。

真实图像去噪

  • 进入'CAT/restormer'目录并运行安装脚本

    # 如果已在restormer目录并完成安装,请忽略
    python setup.py develop --no_cuda_ext
    
  • 下载训练集(SIDD-train,包含验证集,已预处理),将它们放在datasets/restormer/datasets/)目录下。

  • 运行以下脚本。训练配置在options/restormer/options/)目录中。

    # CAT,真实图像去噪,渐进学习,8个GPU
    python -m torch.distributed.launch --nproc_per_node=8 --master_port=4321 basicsr/train.py -opt options/train_RealDenoising_CAT.yml --launcher pytorch
    
  • 训练实验结果保存在experiments/restormer/experiments/)目录中。

测试

图像超分辨率

  • 进入'CAT'目录并运行安装脚本

    # 如果已在CAT目录并完成安装,请忽略
    python setup.py develop
    
  • 下载预训练模型并将它们放在experiments/pretrained_models/目录下。

    我们提供了图像超分辨率的预训练模型:CAT-R、CAT-A、CAT-A和CAT-R-2(x2、x3、x4)。

  • 下载测试集(Set5、Set14、BSD100、Urban100、Manga109,已预处理),将它们放在datasets/目录下。

  • 运行以下脚本。测试配置在options/test/目录中(例如,test_CAT_R_sr_x2.yml)。

    注1:您可以在YML文件中设置use_chop: True(默认为False)以对图像进行分块测试。

# 无自集成
# CAT-R, SR, 复现主论文表2的结果
python basicsr/test.py -opt options/test/test_CAT_R_sr_x2.yml
python basicsr/test.py -opt options/test/test_CAT_R_sr_x3.yml
python basicsr/test.py -opt options/test/test_CAT_R_sr_x4.yml

# CAT-A, SR, 复现主论文表2的结果
python basicsr/test.py -opt options/test/test_CAT_A_sr_x2.yml
python basicsr/test.py -opt options/test/test_CAT_A_sr_x3.yml
python basicsr/test.py -opt options/test/test_CAT_A_sr_x4.yml

# CAT-R-2, SR, 复现补充材料表1的结果
python basicsr/test.py -opt options/test/test_CAT_R_2_sr_x2.yml
python basicsr/test.py -opt options/test/test_CAT_R_2_sr_x3.yml
python basicsr/test.py -opt options/test/test_CAT_R_2_sr_x4.yml

# CAT-A-2, SR, 复现补充材料表1的结果
python basicsr/test.py -opt options/test/test_CAT_A_2_sr_x2.yml
python basicsr/test.py -opt options/test/test_CAT_A_2_sr_x3.yml
python basicsr/test.py -opt options/test/test_CAT_A_2_sr_x4.yml
  • 输出结果在 results/ 目录下。

JPEG压缩伪影消除

  • 进入'CAT'目录并运行安装脚本
# 如果已经在CAT目录下并完成设置,请忽略此步骤
python setup.py develop
  • 下载预训练模型并将其放在 experiments/pretrained_models/ 目录下。

    我们提供了用于JPEG压缩伪影消除的预训练模型:CAT (q10, q20, q30, q40)。

  • 下载测试数据集(Classic5、LIVE、Urban100,已处理),将其放在 datasets/ 目录下。

  • 运行以下脚本。测试配置文件在 options/test/ 目录下(例如,test_CAT_car_q10.yml)。

# 无自集成
# CAT-A, CAR, 复现主论文表3的结果
python basicsr/test.py -opt options/test/test_CAT_car_q10.yml
python basicsr/test.py -opt options/test/test_CAT_car_q20.yml
python basicsr/test.py -opt options/test/test_CAT_car_q30.yml
python basicsr/test.py -opt options/test/test_CAT_car_q40.yml
  • 输出结果在 results/ 目录下。

真实图像去噪

  • 进入'CAT'目录并运行安装脚本
# 如果已经在CAT目录下并完成设置,请忽略此步骤
python setup.py develop
  • 下载预训练模型并将其放在 experiments/pretrained_models/ 目录下。

  • 下载测试数据集(SIDD、DND),将其放在 datasets/ 目录下。

  • 运行以下脚本。测试配置文件在 options/test/ 目录下。

# 无自集成
# CAT, 真实DN, 复现主论文表4的结果
# 在SIDD上测试
python test_real_denoising_sidd.py --save_images
evaluate_sidd.m

# 在DND上测试
python test_real_denoising_dnd.py --save_images
  • 输出结果在 results/ 目录下。

结果

我们在图像超分辨率、JPEG压缩伪影消除和真实图像去噪方面取得了最先进的性能。详细结果可以在论文中找到。CAT的所有可视化结果可以在这里下载。

图像超分辨率(点击展开)
  • 主论文表2的结果

  • 补充材料表1的结果

  • 主论文中的视觉对比(x4)

  • 补充材料中的视觉对比(x4)

JPEG压缩伪影消除(点击展开)
  • 主论文表3的结果

  • 补充材料表3的结果(在Urban100上测试)

  • 主论文中的视觉对比(q=10)

  • 补充材料中的视觉对比(q=10)

真实图像去噪(点击展开)
  • 主论文表4中的结果

*: 我们使用所有官方预训练模型重新测试了SIDD。

引用

如果您发现此代码对您的研究或工作有帮助,请引用以下论文。

@inproceedings{chen2022cross,
    title={Cross Aggregation Transformer for Image Restoration},
    author={Chen, Zheng and Zhang, Yulun and Gu, Jinjin and Zhang, Yongbing and Kong, Linghe and Yuan, Xin},
    booktitle={NeurIPS},
    year={2022}
}

致谢

本代码基于BasicSRRestormer构建。

项目侧边栏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号