MMagic 中 TTSR(CVPR 2020)参考图像超分辨率模型:纹理 Transformer 架构解析与 CUFED 训练测试实战

📅 发布时间:2026/9/29 2:41:56
MMagic 中 TTSR(CVPR 2020)参考图像超分辨率模型:纹理 Transformer 架构解析与 CUFED 训练测试实战
媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载导读TTSRTexture Transformer Network for Image Super-Resolution是 CVPR 2020 提出的参考式图像超分辨率Reference-based Super-Resolution, RefSR算法核心思想是利用一张高分辨率参考图Ref的纹理来辅助低分辨率LR图像恢复真实细节。本文以 configs/ttsr/README_zh-CN.md 为骨架结合 MMagic 仓库中 TTSR 的完整源码实现模型、Transformer、判别器与两份官方配置系统讲解其原理、配置逐项拆解、数据流以及 CPU/单卡/多卡训练与测试的完整命令。读完本文你将能够理解 TTSR 的四个核心模块如何协作掌握 CUFED 数据集上的复现方法并能根据源码读懂其注意力机制与损失设计。TTSR 是什么基于参考图的纹理 Transformer 超分方案传统单图像超分辨率SISR仅依赖 LR 输入本身而参考式超分RefSR额外利用一张内容相近的 HR 参考图将参考图中的真实纹理迁移到 LR 图上。TTSR 的论文标题为Learning Texture Transformer Network for Image Super-ResolutionYang Fuzhi 等人CVPR 2020bibtex 引用见下其关键创新在于将 LR 图与 Ref 图分别建模为 Transformer 中的Query查询与Key键通过注意力机制从 Ref 图中检索最相关的纹理块实现跨图特征对应关系的自动发现与纹理迁移提出可学习的纹理提取器、相关性嵌入模块、用于纹理迁移的 Hard-Attention 模块、用于纹理合成的 Soft-Attention 模块四个模块联合优化支持跨尺度堆叠cross-scale可从 1x 到 4x 放大逐级恢复纹理。inproceedings{yang2020learning, title{Learning texture transformer network for image super-resolution}, author{Yang, Fuzhi and Yang, Huan and Fu, Jianlong and Lu, Hongtao and Guo, Baining}, booktitle{Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, pages{5791--5800}, year{2020} }官方预训练结果与评估口径CUFED 数据集原文档在 RGB 通道上评估模型评估前会裁剪每个图像边界中的scale像素即 4 像素边框并使用PSNR和SSIM作为指标。MMagic 提供的两份 CUFED 配置及对应结果如下算法scaleCUFEDPSNR / SSIMGPU 信息模型配置ttsr-rec_x4_c64b16_g1_200k_CUFEDx425.2433 / 0.74911TITAN Xpconfigs/ttsr/ttsr-rec_x4c64b16_1xb9-200k_CUFED.pyttsr-gan_x4_c64b16_g1_500k_CUFEDx424.6075 / 0.72341TITAN Xpconfigs/ttsr/ttsr-gan_x4c64b16_1xb9-500k_CUFED.py其中ttsr-rec仅使用重建损失pixel loss训练的纯回归版本训练 200k itersPSNR 更高ttsr-gan加入感知损失、迁移感知损失与 GAN 损失的对抗版本训练 500k iters视觉纹理更真实但 PSNR/SSIM 略低GAN 训练以感知质量换取像素精度属于正常现象。权重与日志同样登记在 configs/ttsr/metafile.yml 中rec 版权重文件名为ttsr-rec_x4_c64b16_g1_200k_CUFED_20210525-b0dba584.pthgan 版为ttsr-gan_x4_c64b16_g1_500k_CUFED_20210626-2ab28ca0.pth均可从 OpenMMLab 官方模型库下载。快速开始训练与测试完整命令训练模型以下命令以 gan 版配置为例rec 版只需替换配置文件路径即可。配置默认从./work_dirs/ttsr-gan_x4c64b16_1xb9-500k_CUFED/输出日志与权重# CPU 上训练 CUDA_VISIBLE_DEVICES-1 python tools/train.py configs/ttsr/ttsr-gan_x4c64b16_1xb9-500k_CUFED.py # 单个 GPU 上训练 python tools/train.py configs/ttsr/ttsr-gan_x4c64b16_1xb9-500k_CUFED.py # 多个 GPU 上训练8 卡示例 ./tools/dist_train.sh configs/ttsr/ttsr-gan_x4c64b16_1xb9-500k_CUFED.py 8更多训练细节数据准备、评估流程、恢复中断训练等可参考 docs/zh_cn/user_guides/train_test.md 中的Train a model章节。测试模型测试时需在命令行直接传入预训练权重 URL也可改为本地权重路径# CPU 上测试 CUDA_VISIBLE_DEVICES-1 python tools/test.py configs/ttsr/ttsr-gan_x4c64b16_1xb9-500k_CUFED.py https://download.openmmlab.com/mmediting/restorers/ttsr/ttsr-gan_x4_c64b16_g1_500k_CUFED_20210626-2ab28ca0.pth # 单个 GPU 上测试 python tools/test.py configs/ttsr/ttsr-gan_x4c64b16_1xb9-500k_CUFED.py https://download.openmmlab.com/mmediting/restorers/ttsr/ttsr-gan_x4_c64b16_g1_500k_CUFED_20210626-2ab28ca0.pth # 多个 GPU 上测试8 卡示例 ./tools/dist_test.sh configs/ttsr/ttsr-gan_x4c64b16_1xb9-500k_CUFED.py https://download.openmmlab.com/mmediting/restorers/ttsr/ttsr-gan_x4_c64b16_g1_500k_CUFED_20210626-2ab28ca0.pth 8更多测试细节指标含义、可视化输出等可参考 docs/zh_cn/user_guides/train_test.md 中的Test a pre-trained model章节。配置文件逐项拆解从数据管线到损失与调度数据管线如何构造 LR 与 Ref 配对样本在 ttsr-rec_x4c64b16_1xb9-200k_CUFED.py 中train_pipeline完整展示了 RefSR 的训练数据构造逻辑核心步骤为分别以gt高分辨率真值与ref参考图两个 key 读取图像LoadImageFromFileSetValues写入scale4ModCrop对gt做可整除裁剪CropLike以gt为参考裁剪ref保证两者尺寸与内容对齐两次Resize先将gt/ref按1/scale双三次下采样得到img/ref_down再按scale上采样得到img_lq/ref_lq即 LR 图是下采样再上采样的降质结果ref_lq则是参考图的降质版本用于在 Transformer 中与img_lq计算相关性对img、gt、img_lq与ref、ref_lq分别做随机水平/垂直翻转与转置Flip、RandomTransposeHW做数据增强PackInputs打包样本。valid_pipeline与demo_pipeline省略了增强与裁剪步骤分别用于验证和演示推理。数据集侧使用BasicImageDataset数据根目录为data训练集data_rootdata/CUFEDdata_prefixdict(refref, gtinput)即data/CUFED/ref与data/CUFED/input两个子目录验证/测试集data_prefixdict(refCUFED5, gtCUFED5)filename_tmpldict(ref{}_1, gt{}_0)——即同一场景的*_0为待测图、*_1为参考图CUFED 测试集 CUFED5 的命名约定。训练时batch_size9、num_workers9采样器为InfiniteSampler评估器使用MAE、PSNR、SSIM三个指标其中 PSNR/SSIM 均设置crop_borderscale与 README 中裁剪边界 scale 像素再评估的口径完全一致见 configs/ttsr/ttsr-rec_x4c64b16_1xb9-200K_CUFED.py 的val_evaluator定义。模型结构五件套如何组装model字段依次定义组件配置值作用generatorTTSRNetin/out3mid_channels64num_blocks(16,16,8,4)主干生成网络多级纹理融合与重建extractorLTE可学习纹理提取器提取多尺度特征transformerSearchTransformer相关性嵌入 Hard/Soft-Attention 纹理检索discriminator仅 gan 版TTSRDiscriminatorin_size160对抗判别器data_preprocessorDataPreprocessormean/std127.5输入归一化到 [-1,1]同时使用model_wrapper_cfg dict(typeMMSeparateDistributedDataParallel)允许生成器、提取器、判别器按各自优化器独立做梯度同步。损失组合与训练策略gan 版gan 版配置ttsr-gan_x4c64b16_1xb9-500k_CUFED.py在 rec 版基础上叠加了多项损失pixel_lossL1Lossloss_weight1.0perceptual_loss基于vgg19的感知损失layer_weights{29: 1.0}perceptual_weight1e-2style_weight0transferal_perceptual_lossTTSR 特有的迁移感知损失TransferalPerceptualLossloss_weight1e-2约束 SR 结果的纹理特征与迁移来的 GT 纹理特征一致gan_lossGANLossvanillaloss_weight1e-3train_cfgdict(pixel_init25000, disc_repeat2)前 25000 步只训像素损失纯回归预热之后才启用感知/GAN/迁移损失判别器每步更新 2 次。优化器使用MultiOptimWrapperConstructor分别管理三组参数生成器Adam(lr1e-4)、提取器Adam(lr1e-5)、判别器Adam(lr1e-5)提取器学习率更低以保持特征稳定性。学习率采用MultiStepLRby_epochFalsegan 版在[100000, 200000, 300000, 400000]各衰减一次gamma0.5rec 版仅在 100000 处衰减。训练循环为IterBasedTrainLoopgan 版max_iters500000、rec 版max_iters200000val_interval5000checkpoint 每 5000 iters 保存一次并携带优化器状态save_optimizerTrue便于断点续训。源码级解析TTSR 的注意力机制与训练流程整体调用链mmagic/models/editors/ttsr/ttsr.pyTTSR继承自SRGAN其forward_tensor完整呈现了推理链路img_lq, ref_lq, ref ──LTE 提取──▶ img_lq / ref_lq / refs 多级特征 └─▶ SearchTransformer(img_lq, ref_lq, refs) ──▶ soft_attention, textures └─▶ TTSRNet(inputs, soft_attention, textures) ──▶ 重建结果 pred值得注意的实现细节self.extractor_copy是提取器的冻结副本set_requires_grad(False)用于计算迁移感知损失时提取 SR 输出的纹理特征避免梯度在提取器内部回传造成不稳定if_run_d()判断self.step_counter self.pixel_init才进入判别器训练对应配置中的pixel_init25000预热机制g_step中迁移感知损失会先将训练中的提取器权重同步到副本再计算sr_textures self.extractor_copy((pred 1.) / 2.)并与soft_attention、textures一起送入TransferalPerceptualLoss判别器更新采用disc_repeat次循环且对pred做了detach()以避免 PyTorch 2.0 编译问题。对应单元测试位于 tests/test_models/test_editors/test_ttsr/test_ttsr.py它构建了微型化的 TTSRmid_channels4、num_blocks(1,1,1,1)验证了前向训练后log_vars恰好包含loss_pix、loss_perceptual、loss_style、loss_transferal、loss_gan、loss_d_real、loss_d_fake七项损失以及val_step输出图像尺寸为(3, 128, 128)——这是理解损失组成与输出形状的最直接依据。SearchTransformerHard-Attention 与 Soft-Attentionmmagic/models/editors/ttsr/search_transformer.pySearchTransformer的forward完整实现了论文中的三步相关性嵌入Relevance Embedding对img_lq与ref_lq提取的特征分别做F.unfold(kernel_size3, padding1)得到 3×3 局部块向量L2 归一化后计算rel_embedding torch.bmm(key_t, query)得到 Ref 图每个位置与 LR 图每个位置的相似度矩阵[N, H*W, H*W]Hard-Attention 纹理迁移取torch.max(rel_embedding, dim1)得到每个查询最匹配的 Ref 位置索引max_index通过gather从多级valuesrefs的 unfold 结果kernel/stride 随层级按3*2^i、2^i放大中取出对应纹理块再F.fold还原成多级纹理张量texturesSoft-Attention 纹理合成将相关性最大值max_val直接作为软注意力图soft_attention (N,1,H,W)输出用于在生成网络中对纹理贡献加权。多级refs的尺寸比为level3:level2:level1 1:2:4对应 4x 放大的跨尺度检索这正是论文跨尺度堆叠的代码落地。TTSRNet多级纹理融合主干mmagic/models/editors/ttsr/ttsr_net.pyTTSRNet采用三级渐进上采样结构SFE → stage1 → up1 → stage2 → up2 → stage3 → MergeFeaturesSFEStructural Feature Encoder先提取 LR 结构特征作为纹理融合的基底每个 stage 将当前尺度特征与该尺度纹理textures[i]拼接后经卷积融合并用soft_attention按 1x/2x/4x bicubic 插值对齐加权纹理残差——Soft-Attention 在此处发挥实际作用CSFICross-Scale Feature IntegrationCSFI2/CSFI3通过 stride2 卷积降采样与 bicubic 上采样让 1x、2x、4x 三个尺度特征互相融合MergeFeatures最后将三路特征统一上采样到 4x 合并输出经torch.clamp(x, -1, 1)限幅到 [-1,1]与数据预处理器mean/std127.5的归一化范围衔接。注意TTSRNet的forward(x, soft_attention, textures)接收的是预处理后的输入与 Transformer 产物其输入通道数与中间texture_channels64对应配置中的mid_channels64与num_blocks(16,16,8,4)分别控制宽度与各级残差块数量。TTSRDiscriminatormmagic/models/editors/ttsr/ttsr_disc.py判别器是标准 CNN 分类器8 组Conv2d LeakyReLU(0.2)逐步将输入 3 通道下采样3→32→64→128→256→512 通道部分层 stride2最后经Linear(in_size//32 * in_size//32 * 512 → 1024 → 1)输出真实性 logit。配置中in_size160需与训练时图像尺寸匹配160 40×4对应 x4 放大。数据集准备与安装前置条件训练前需准备 CUFED 数据集并放置于data/CUFED/下目录结构需满足配置中的约定data/CUFED/ ├── input/ # 训练用 GT高分辨率真值 ├── ref/ # 训练用参考图 ├── CUFED5/ # 测试集*_0 待测图*_1 参考图CUFED 数据集的获取与整理方式参见 docs/zh_cn/user_guides/dataset_prepare.md 及 tools/dataset_converters 下的转换工具说明。运行训练/测试脚本前请确保已按 README_zh-CN.md 完成 MMagic 安装含 mmengine、mmcv 等运行时依赖并确认tools/train.py与tools/test.py的入口可用。总结TTSR 在 MMagic 中拥有完整的一等公民实现从数据管线LR/Ref 配对构造、模型组装TTSRTTSRNetLTESearchTransformerTTSRDiscriminator、多损失联合训练pixel/perceptual/transferal/GAN到分布式训练与评估均有源码、配置与测试三重支撑。若你的目标是 PSNR 优先可选用 rec 版200k iters25.2433 dB若追求更真实的纹理观感可选用 gan 版500k iters。按上文命令即可在 CUFED 上复现官方结果进一步理解注意力机制与各模块协作细节建议直接阅读 mmagic/models/editors/ttsr 目录下的四个实现文件与对应测试。参考资料论文《Learning Texture Transformer Network for Image Super-Resolution》Yang Fuzhi et al., CVPR 2020arxiv.org/abs/2006.04139。赞分享媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】mmagicOpenMMLab Multimodal Advanced, Generative, and Intelligent Creation Toolbox. Unlock the magic : Generative-AI (AIGC), easy-to-use APIs, awsome model zoo, diffusion models, for text-to-image generation, image/video restoration/enhancement, etc.项目地址https://gitcode.com/gh_mirrors/mm/mmagic点击查看免费下载相关推荐Cassandra 分布式系统 Bug 复现完全指南从 Jepsen、in-JVM dtest 到确定性模拟器Cassandra 分布式系统 Bug 复现完全指南从 Jepsen、in JVM dtest 到确定性模拟器 本文围绕 Apache Cassandra 仓媒体生成计算机视觉深度学习人工智能大模型MMagic 中的 EDSR 图像超分辨率模型架构原理、配置解析与训练测试实战MMagic 中的 EDSR 图像超分辨率模型架构原理、配置解析与训练测试实战 本篇技术指南围绕 OpenMMLab 多模态生成工具箱 MMagic 中内置的媒体生成计算机视觉深度学习人工智能大模型MMagic 视频超分辨率实战IconVSR 模型架构、配置解析与训练测试指南MMagic 视频超分辨率实战IconVSR 模型架构、配置解析与训练测试指南 导读 本文围绕 OpenMMLab MMagic 仓库中实现的 IconVSR媒体生成计算机视觉深度学习人工智能大模型上一篇5分钟掌握学术PDF翻译智能保留公式和排版的终极指南下一篇OOTDiffusion 集成 detectron2 命令行工具全解析训练、微调、基准测试与可视化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考