ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MMagic 中的 SRCNN 图像超分辨率模型:原理、配置与训练测试实战指南

MMagic 中的 SRCNN 图像超分辨率模型:原理、配置与训练测试实战指南 媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】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点击查看免费下载导读SRCNNSuper-Resolution Convolutional Neural NetworkTPAMI 2015是深度学习单图像超分辨率领域的奠基之作它首次证明了仅用三层卷积网络即可直接从低分辨率图像端到端地回归出高分辨率图像并指出传统稀疏编码超分方法本质上也可以看作一种深层卷积网络。本文以 MMagic 开源工具箱中的 SRCNN 实现为主线系统讲解其网络结构、模型配置文件4 倍上采样、DIV2K 训练方案的每个关键参数以及如何在 CPU / 单卡 / 多卡环境下完成训练与测试读完即可在 MMagic 中复现官方在 Set5、Set14、DIV2K 上的评测结果。论文背景从稀疏编码到端到端卷积回归SRCNN 对应论文为Image Super-Resolution Using Deep Convolutional NetworksDong、Loy、He 与 TangIEEE TPAMI 2015arXiv:1501.00092。其核心思想是学习一个低分辨率图像到高分辨率图像之间的端到端映射该映射由以低分辨率图像为输入、输出高分辨率图像的深层卷积神经网络CNN表示。与当时主流的基于稀疏编码的传统方法相比传统方法将图像分块提取、稀疏编码、字典重建等步骤分开处理而 SRCNN 将所有层联合优化网络结构轻量却能达到当时领先的重建质量并具备用于实际在线使用的快速推理速度。论文还探索了不同网络结构与参数设置在性能与速度之间的权衡并将网络扩展为同时处理三个颜色通道以获得更好的整体重建质量。该任务在 MMagic 中的任务分类为Image Super-Resolution图像超分辨率对应模型集合收录于 configs/srcnn/metafile.yml。源码视角三层卷积网络到底做了什么MMagic 中 SRCNN 的实现位于 mmagic/models/editors/srcnn/srcnn_net.py核心类为SRCNNNet通过MODELS.register_module()注册并在 mmagic/models/editors/srcnn/init.py 中导出。SRCNNNet的构造参数与默认值如下参数默认值说明channels(3, 64, 32, 3)四元组依次为输入通道、第 1/2/3 层卷积输出通道要求长度必须为 4kernel_sizes(9, 1, 5)三元组三个卷积层的核大小要求长度必须为 3upscale_factor4上采样倍数前向计算流程对应forward预处理上采样输入先经nn.Upsample(scale_factorupscale_factor, modebicubic, align_cornersFalse)做双三次插值放大到高分辨率尺寸后再进入网络因此网络实际在 HR 空间完成映射特征提取conv1 Conv2d(3, 64, kernel_size9, padding4)后接 ReLU对应论文中的“patch extraction and representation”非线性映射conv2 Conv2d(64, 32, kernel_size1, padding0)后接 ReLU对应“non-linear mapping”重建conv3 Conv2d(32, 3, kernel_size5, padding2)无激活对应“reconstruction”输出最终 RGB 图像。注意第 2 层采用1×1 卷积用于跨通道的非线性映射而不改变空间尺寸所有卷积的 padding 均取kernel_size // 2保证输出空间尺寸与输入一致。每个卷积层的输入/输出通道数、核大小均可通过配置自由定制。单元测试 tests/test_models/test_editors/test_srcnn/test_srcnn_net.py 验证了以下行为输入(1, 3, 4, 4)、upscale_factor4时输出形状为(1, 3, 16, 16)输入(1, 1, 4, 4)、upscale_factor2时输出形状为(1, 1, 8, 8)channels长度不为 4、或kernel_sizes长度不为 3 时抛出AssertionError。配置文件逐段解析srcnn_x4k915_1xb16-1000k_div2k官方训练配置为 configs/srcnn/srcnn_x4k915_1xb16-1000k_div2k.py命名含义SRCNN、x4 上采样、核大小 9/1/5、单卡 batch size 16、1000k 迭代、DIV2K 数据集。该文件继承 configs/base/default_runtime.py 与 configs/base/datasets/sisr_x4_test_config.py。模型定义model dict( typeBaseEditModel, generatordict( typeSRCNNNet, channels(3, 64, 32, 3), kernel_sizes(9, 1, 5), upscale_factorscale), pixel_lossdict(typeL1Loss, loss_weight1.0, reductionmean), train_cfgdict(), test_cfgdict(metrics[PSNR], crop_borderscale), data_preprocessordict( typeDataPreprocessor, mean[0., 0., 0.], std[255., 255., 255.], ))scale 4上采样倍数同时用作crop_border生成器采用SRCNNNet通道数(3, 64, 32, 3)、核大小(9, 1, 5)损失为L1Loss权重 1.0reductionmean对应论文中像素级重建损失test_cfg中metrics[PSNR]、crop_borderscale评测前裁掉边界 4 个像素避免双三次插值边界效应干扰指标与 README 中“Evaluated on RGB channels, scale pixels in each border are cropped before evaluation”一致DataPreprocessor的mean[0,0,0]、std[255,255,255]表示仅将像素值归一化到 [0,1]不做去均值化具体实现见 mmagic/models/data_preprocessors/data_preprocessor.py。训练数据流水线train_pipeline [ dict(typeLoadImageFromFile, keyimg, color_typecolor, channel_orderrgb, imdecode_backendcv2), dict(typeLoadImageFromFile, keygt, color_typecolor, channel_orderrgb, imdecode_backendcv2), dict(typeSetValues, dictionarydict(scalescale)), dict(typePairedRandomCrop, gt_patch_size128), dict(typeFlip, keys[img, gt], flip_ratio0.5, directionhorizontal), dict(typeFlip, keys[img, gt], flip_ratio0.5, directionvertical), dict(typeRandomTransposeHW, keys[img, gt], transpose_ratio0.5), dict(typePackInputs) ]img为低分辨率图、gt为高分辨率真值随机裁剪 GT 块为 128×128对应 LR 块为 32×32随后做水平/垂直翻转概率 0.5与随机转置概率 0.5增强最后PackInputs打包。验证流水线仅包含加载与打包不做增强。数据集与评测dataset_type BasicImageDataset data_root data train_dataloader dict( num_workers4, batch_size16, persistent_workersFalse, samplerdict(typeInfiniteSampler, shuffleTrue), datasetdict( typedataset_type, ann_filemeta_info_DIV2K800sub_GT.txt, metainfodict(dataset_typediv2k, task_namesisr), data_rootdata_root /DIV2K, data_prefixdict(imgDIV2K_train_LR_bicubic/X4_sub, gtDIV2K_train_HR_sub), filename_tmpldict(img{}, gt{}), pipelinetrain_pipeline)) val_dataloader dict( num_workers4, persistent_workersFalse, drop_lastFalse, samplerdict(typeDefaultSampler, shuffleFalse), datasetdict( typedataset_type, metainfodict(dataset_typeset5, task_namesisr), data_rootdata_root /Set5, data_prefixdict(imgLRbicx4, gtGTmod12), pipelineval_pipeline)) val_evaluator dict( typeEvaluator, metrics[ dict(typeMAE), dict(typePSNR, crop_borderscale), dict(typeSSIM, crop_borderscale), ])训练集为 DIV2K 的 800 张子图DIV2K800sub_GT.txtLR 用双三次下采样 X4GT 用 HR 子图验证集为 Set5LRbicx4/GTmod12目录指标含 MAE、PSNR、SSIM均按crop_border4裁剪边界测试阶段则通过继承的sisr_x4_test_config.py依次在Set5、Set14、DIV2K三个数据集上评测MultiTestLoop每个数据集分别给出 PSNR/SSIM。训练循环、优化器与学习率train_cfg dict(typeIterBasedTrainLoop, max_iters1000000, val_interval5000) val_cfg dict(typeMultiValLoop) optim_wrapper dict( constructorDefaultOptimWrapperConstructor, typeOptimWrapper, optimizerdict(typeAdam, lr2e-4, betas(0.9, 0.999))) param_scheduler dict( typeCosineRestartLR, by_epochFalse, periods[250000, 250000, 250000, 250000], restart_weights[1, 1, 1, 1], eta_min1e-7)采用基于迭代的训练循环共 100 万次迭代每 5000 次迭代验证一次优化器为 Adamlr2e-4betas(0.9, 0.999)学习率策略为CosineRestartLR分为 4 个 250000 次迭代的周期每次重启后按余弦退火从 2e-4 降至eta_min1e-7default_hooks中CheckpointHook每 5000 次迭代保存一次权重含优化器状态LoggerHook每 100 次迭代输出日志基类运行时配置还默认开启save_bestPSNR、rulegreater的最佳模型保存。训练模型CPU / 单卡 / 多卡命令按照 README 的 Quick Start在安装好 MMagic 及其依赖后可直接运行# CPU 训练 CUDA_VISIBLE_DEVICES-1 python tools/train.py configs/srcnn/srcnn_x4k915_1xb16-1000k_div2k.py # 单卡训练 python tools/train.py configs/srcnn/srcnn_x4k915_1xb16-1000k_div2k.py # 多卡训练8 卡 ./tools/dist_train.sh configs/srcnn/srcnn_x4k915_1xb16-1000k_div2k.py 8训练输出默认写入./work_dirs/srcnn_x4k915_1xb16-1000k_div2k/由work_dir决定。更完整的训练流程说明参见 docs/en/user_guides/train_test.md 中 “Train a model in MMagic” 一节。分布式训练脚本位于 tools/dist_train.sh。测试模型加载官方权重评测MMagic 提供了预训练权重由 README 的 Download 列给出可直接用以下命令在 Set5、Set14、DIV2K 上复现官方指标# CPU 测试 CUDA_VISIBLE_DEVICES-1 python tools/test.py configs/srcnn/srcnn_x4k915_1xb16-1000k_div2k.py https://download.openmmlab.com/mmediting/restorers/srcnn/srcnn_x4k915_1x16_1000k_div2k_20200608-4186f232.pth # 单卡测试 python tools/test.py configs/srcnn/srcnn_x4k915_1xb16-1000k_div2k.py https://download.openmmlab.com/mmediting/restorers/srcnn/srcnn_x4k915_1x16_1000k_div2k_20200608-4186f232.pth # 多卡测试8 卡 ./tools/dist_test.sh configs/srcnn/srcnn_x4k915_1xb16-1000k_div2k.py https://download.openmmlab.com/mmediting/restorers/srcnn/srcnn_x4k915_1x16_1000k_div2k_20200608-4186f232.pth 8测试在 RGB 通道上进行scale即 4像素宽的边界会在评测前裁剪指标为 PSNR / SSIM。测试流程的详细说明参见 docs/en/user_guides/train_test.md 中 “Test a pre-trained model in MMagic” 一节分布式测试脚本位于 tools/dist_test.sh。官方评测结果以下为 MMagic 仓库记录的srcnn_x4k915_1xb16-1000k_div2k配置在三个基准数据集上的官方指标权重与日志通过对应下载链接获取模型数据集PSNRSSIM训练资源srcnn_x4k915_1xb16-1000k_div2kSet528.43160.80991 卡srcnn_x4k915_1xb16-1000k_div2kSet1425.64860.70141 卡srcnn_x4k915_1xb16-1000k_div2kDIV2K27.74600.78541 卡同一结果亦登记在 configs/srcnn/metafile.yml 的Models.Results字段中可用于模型索引与自动评测比对。值得说明的是该模型训练仅需 1 张 GPU体现了论文所述“轻量结构 快速实用”的设计目标。引用若在研究中使用了该模型请按 README 中给出的 BibTeX 引用原始论文article{dong2015image, title{Image super-resolution using deep convolutional networks}, author{Dong, Chao and Loy, Chen Change and He, Kaiming and Tang, Xiaoou}, journal{IEEE transactions on pattern analysis and machine intelligence}, volume{38}, number{2}, pages{295--307}, year{2015}, publisher{IEEE} }小结SRCNN 在 MMagic 中的落地非常“轻量而完整”一个仅含三个卷积层与双三次预上采样的SRCNNNet配合一套参数化清晰的训练配置L1 损失、Adam CosineRestartLR、1000k 迭代、Set5 验证即可在单卡上完成训练并在 Set5/Set14/DIV2K 三个基准上给出可复现的 PSNR/SSIM 指标。对希望入门图像超分辨率或搭建自有轻量 SR 基线的开发者而言配置文件、网络实现与单元测试构成了从原理到实战的完整闭环。赞分享媒体生成计算机视觉深度学习人工智能大模型【免费下载链接】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点击查看免费下载相关推荐MMagic 中的 EDSR 图像超分辨率模型架构原理、配置解析与训练测试实战MMagic 中的 EDSR 图像超分辨率模型架构原理、配置解析与训练测试实战 本篇技术指南围绕 OpenMMLab 多模态生成工具箱 MMagic 中内置的媒体生成计算机视觉深度学习人工智能大模型Cassandra 分布式系统 Bug 复现完全指南从 Jepsen、in-JVM dtest 到确定性模拟器Cassandra 分布式系统 Bug 复现完全指南从 Jepsen、in JVM dtest 到确定性模拟器 本文围绕 Apache Cassandra 仓媒体生成计算机视觉深度学习人工智能大模型MMagic 中的 BasicVSR 视频超分辨率模型配置解析、训练测试与源码原理MMagic 中的 BasicVSR 视频超分辨率模型配置解析、训练测试与源码原理 本文以 configs/basicvsr/README_zh CN.md媒体生成计算机视觉深度学习人工智能大模型上一篇paascloud-master中分布式计数器基于Redis的原子操作实现下一篇3步实现Windows菜单半透明化TranslucentFlyouts让你的系统界面焕然一新创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表