[ICCV'23] Dual Aggregation Transformer for Image Super-Resolution
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 |
双聚合变换器用于图像超分辨率
郑晨, 张宇伦, 顾金金, 孔令和, 杨晓康, 和 余菲, "双聚合变换器用于图像超分辨率", 国际计算机视觉大会 (ICCV), 2023
[arXiv] [补充材料] [可视化结果] [预训练模型]
🔥🔥🔥 新闻
- 2023-09-17: chaiNNer 和 neosr 已添加 DAT 支持。额外的 DAT 训练模型可在 OpenMMLab 中找到(#11)。感谢 Phhofm!
- 2023-07-16: 本存储库发布。
- 2023-07-14: DAT 被 ICCV 2023 接收。🎉🎉🎉
摘要: 最近,变压器在低级视觉任务,包括图像超分辨率(SR)中获得了相当大的关注。这些网络利用不同维度(空间或通道)的自注意力,并取得了令人印象深刻的性能。这启发了我们在变压器中结合这两个维度以增强表示能力的想法。基于上述思路,我们提出了一种新型的变压器模型——双聚合变换器(DAT),用于图像超分辨率。我们的 DAT 以双重方式跨空间和通道维度聚合特征。具体来说,我们连续的变压器块中交替应用空间和通道自注意力。这种交替策略使 DAT 能够捕获全局上下文并实现块间特征聚合。此外,我们提出了适应性交互模块(AIM)和空间门前馈网络(SGFN)来实现块内特征聚合。AIM 补充了对应维度的两种自注意力机制。同时,SGFN 在前馈网络中引入了额外的非线性空间信息。大量实验表明,我们的 DAT 超过了当前方法。

| 高分辨率 | 低分辨率 | SwinIR | CAT | DAT(我们的) |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
依赖项
- Python 3.8
- PyTorch 1.8.0
- NVIDIA GPU + CUDA
# 克隆 Github 仓库并进入默认目录 'DAT'。
git clone https://github.com/zhengchen1999/DAT.git
conda create -n DAT python=3.8
conda activate DAT
pip install -r requirements.txt
python setup.py develop
内容
数据集
使用的训练和测试集可以通过以下方式下载:
| 训练集 | 测试集 | 可视化结果 |
|---|---|---|
| DIV2K (800 张训练图像,100 张验证图像)+ Flickr2K(2650 张图像)[完整训练数据集 DF2K: Google Drive / 百度网盘] | Set5 + Set14 + BSD100 + Urban100 + Manga109 [完整测试数据集: Google Drive / 百度网盘] | Google Drive / 百度网盘 |
下载训练和测试数据集并将它们放入 datasets/ 目录的相应子目录中。有关目录结构的详细信息,请参阅 datasets。
模型
| 方法 | 参数 | FLOPs (G) | 数据集 | PSNR (dB) | SSIM | 模型动物园 | 可视化结果 |
|---|---|---|---|---|---|---|---|
| DAT-S | 11.21M | 203.34 | Urban100 | 27.68 | 0.8300 | Google Drive / 百度网盘 | Google Drive / 百度网盘 |
| DAT | 14.80M | 275.75 | Urban100 | 27.87 | 0.8343 | Google Drive / 百度网盘 | Google Drive / 百度网盘 |
| DAT-2 | 11.21M | 216.93 | Urban100 | 27.86 | 0.8341 | Google Drive / 百度网盘 | Google Drive / 百度网盘 |
| DAT-light | 573K | 49.69 | Urban100 | 26.64 | 0.8033 | Google Drive / 百度网盘 | Google Drive / 百度网盘 |
性能报告基于 Urban100(x4)。DAT-S, DAT, DAT-2: FLOPs 输出大小为 3×512×512。DAT-light: FLOPs 输出大小为 3×1280×720。
번역결과
이미지 초고화질용 이중 집계 변환기
정阵, 유루른 장, 구진진, 공영의, 양xiaokang 및 피셔 유, "이미지 초고화질 용 이중 집계 변환기", ICCV, 2023
[arXiv] [보조 자료] [시각적 결과] [사전 훈련 모델]
🔥🔥🔥 뉴스
- 2023-09-17: chaiNNer와 neosr에서 DAT 지원을 추가했습니다. 추가적인 DAT 모델은 OpenMMLab에서 사용할 수 있습니다(#11 ). Phhofm 감사합니다!
- 2023-07-16: 이 리포지토리가 배포되었습니다.
- 2023-07-14: DAT가 ICCV 2023에 선정되었습니다. 🎉🎉🎉
요약: 최근에는 이미지 슈퍼해상도(SR)를 포함한 저수준 시각 작업에서 변환기가 상당한 인기를 얻었습니다. 이러한 네트워크는 공간 또는 채널 차원의 다양한 차원에서 자기 주의를 활용하고 탁월한 성능을 보입니다. 이를靈감으로 우리는 더 강력한 표현 능력을 위해 변환기에 두 차원을 결합하는 아이디어를 제안합니다. 위의 아이디어에 따라 이미지 SR를 위한 새로운 변환기 모델인 Dual Aggregation Transformer(DAT)를 제안합니다. DAT는 공간 및 채널 차원 사이에 특성을 이중 방식으로 집계합니다. 구체적으로 연속된 변환기 블록에서 공간 및 채널 자기 주의를 번갈아 적용합니다. 이 대치 전략으로 DAT는 글로벌 컨텍스트를 포착하고 블록 간 특성 집계를 실현합니다. 또한 우리는 내부 블록 기능 집계를 달성하기 위한 적응형 상호 작용 모듈(AIM) 및 공간 게이트 전방 전달 신경망(SGFN)을 제안합니다. AIM은 해당 차원의 두 가지 자기 주의 메커니즘을 보완합니다. 동시에 SGFN는 전방 전달 네트워크에 추가 비선형 공간 정보를 도입합니다. 광범위한 실험 결과에 따르면 우리의 DAT는 현재 방법을 능가한다.

| 고해상도 | 저해상도 | 스윈아이알 | 카트 | DAT (우리의) |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| <img src="figs/img_049 |
训练
-
下载已处理的训练数据集(DF2K)和测试数据集(Set5, Set14, BSD100, Urban100, Manga109),并将其放入
datasets/目录。 -
运行以下脚本。训练配置位于
options/train/中。# DAT-S, 输入为64x64, 使用4个GPU python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_S_x2.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_S_x3.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_S_x4.yml --launcher pytorch # DAT, 输入为64x64, 使用4个GPU python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_x2.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_x3.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_x4.yml --launcher pytorch # DAT-2, 输入为64x64, 使用4个GPU python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_2_x2.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_2_x3.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_2_x4.yml --launcher pytorch # DAT-light, 输入为64x64, 使用4个GPU python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_light_x2.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_light_x3.yml --launcher pytorch python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 basicsr/train.py -opt options/Train/train_DAT_light_x4.yml --launcher pytorch训练实验结果将在
experiments/目录下生成。
测试
带有HR图像的测试
-
下载预先训练好的模型,并将它们放在
experiments/pretrained_models/目录。提供了预先训练的图像超分辨率(SR)模型:DAT-S, DAT, DAT-2 和 DAT-light (x2, x3, x4)。
-
下载测试数据集(Set5, Set14, BSD100, Urban100, Manga109),并放置在
datasets/目录。 -
运行以下脚本。测试配置位于
options/test/中(例如,test_DAT_x2.yml)。注意1:可以在YML文件中设置
use_chop: True(默认:False),以分块方式进行测试。# 不使用自组合 # DAT-S,复现主论文表2中的结果 python basicsr/test.py -opt options/Test/test_DAT_S_x2.yml python basicsr/test.py -opt options/Test/test_DAT_S_x3.yml python basicsr/test.py -opt options/Test/test_DAT_S_x4.yml # DAT,复现主论文表2中的结果 python basicsr/test.py -opt options/Test/test_DAT_x2.yml python basicsr/test.py -opt options/Test/test_DAT_x3.yml python basicsr/test.py -opt options/Test/test_DAT_x4.yml # DAT-2,复现补充材料表1中的结果 python basicsr/test.py -opt options/Test/test_DAT_2_x2.yml python basicsr/test.py -opt options/Test/test_DAT_2_x3.yml python basicsr/test.py -opt options/Test/test_DAT_2_x4.yml # DAT-light,复现补充材料表2中的结果 python basicsr/test.py -opt options/Test/test_DAT_light_x2.yml python basicsr/test.py -opt options/Test/test_DAT_light_x3.yml python basicsr/test.py -opt options/Test/test_DAT_light_x4.yml输出结果将存储在
results/目录下。
没有HR图像的测试
-
下载预先训练好的模型,并将它们放置在
experiments/pretrained_models/目录。提供了预先训练的图像超分辨率(SR)模型:DAT-S, DAT, DAT-2 (x2, x3, x4)。
-
将你的数据集(单张低分辨率图像)放入
datasets/single目录。该目录中已有部分测试图像。 -
运行以下脚本。测试配置位于
options/test/中(例如,test_single_x2.yml)。注意1:默认模型为DAT。你可以通过修改YML文件使用其他模型,如DAT-S。
注意2:可以在YML文件中设置
use_chop: True(默认:False),以分块方式进行测试。# 在你的数据集上进行测试 python basicsr/test.py -opt options/Test/test_single_x2.yml python basicsr/test.py -opt options/Test/test_single_x3.yml python basicsr/test.py -opt options/Test/test_single_x4.yml输出结果同样会保存在
results/目录下。
结果
我们取得了最先进的性能。详细的结果可在论文中找到。所有DAT的可视化结果可以在这里下载:链接。
点击展开
-
主论文中表2的结果
-
补充材料中表1的结果
-
补充材料中表2的结果
-
主论文中视觉对比(x4)
-
补充材料中视觉对比(x4)
引用
如果您在研究或工作中发现此代码有所帮助,请引用以下论文:
@inproceedings{chen2023dual,
title={双聚合变换器用于图像超分辨率},
author={陈峥, 张玉伦, 顾锦锦, 孔令鹤, 杨小康, 于费舍尔},
booktitle={国际计算机视觉大会},
year={2023}
}
致谢
本代码基于BasicSR项目构建。









