尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

waifu2x 基准测试指南:用 tools/benchmark.lua 复现 PSNR 与耗时评测

waifu2x 基准测试指南:用 tools/benchmark.lua 复现 PSNR 与耗时评测 计算机视觉深度学习【免费下载链接】waifu2xImage Super-Resolution for Anime-Style Art项目地址https://gitcode.com/gh_mirrors/waifu/waifu2x点击查看免费下载本文围绕 waifu2x 仓库自带的基准测试文档appendix/benchmark.md展开系统讲解其评测方法论、测试命令、photo/art 两套模型的 PSNR 与耗时数据以及 TTA测试时增强带来的精度收益。读完本文你将掌握如何用tools/benchmark.lua复现官方数据、理解 PSNR 的“MATLAB 兼容”计算细节并能针对自己的数据集跑出一份可对比、可引用的评测报告。为什么需要一套专门的基准测试waifu2x 提供了多套预训练模型vgg_7、upconv_7、upconv_7l、resnet_14l、cunet 等分别面向照片photo与动漫插画art两类图像。模型优劣不能靠肉眼观察必须用统一的评测脚本在同一批测试图像上计算量化指标与运行耗时才能公平比较。仓库为此提供了评测主程序 tools/benchmark.lua加载模型、构造降采样输入、计算 PSNR/RMSE、统计耗时、可选保存结果图片与评测报告一键脚本 appendix/benchmark.sh封装 photo/art 两套完整评测流程覆盖多个模型与多种下采样滤波器数据生成工具 tools/make_benchmark_input.lua用于生成低分辨率/高分辨率测试图像对。官方评测结果集中记录在 appendix/benchmark.md本文将以该文档为核心逐项解读并结合源码说明数据是如何算出来的。评测方法论PSNR 是怎么算的MATLAB rgb2ycbcr 兼容的亮度转换文档明确指出本基准的 PSNR 使用一个与 MATLABrgb2ycbcr兼容的函数进行灰度转换动态范围为[16, 235]而非 [0, 255]并坦言“这并非严格意义上的 PSNR但许多论文使用该指标”。这是对比外部论文数据时必须注意的前提。对应实现位于 tools/benchmark.lua 的rgb2y_matlab函数local function rgb2y_matlab(x) local y torch.Tensor(1, x:size(2), x:size(3)):zero() x iproc.byte2float(x) y:add(x[1] * 65.481) y:add(x[2] * 128.553) y:add(x[3] * 24.966) y:add(16.0) return y:byte():float() end系数 65.481 / 128.553 / 24.966 加常数 16 正是 BT.601 标准的 Y 分量公式与 MATLABrgb2ycbcr一致随后转回 byte 类型等效于把亮度钳位到 [16, 235] 区间再参与误差计算。PSNR 计算与-range_bug选项在YMSEY 通道均方误差中-range_bug决定走哪条分支if opt.range_bug 1 then local x1_2 rgb2y_matlab(x1) -- MATLAB 兼容动态范围 16~235 local x2_2 rgb2y_matlab(x2) return (x1_2 - x2_2):pow(2):mean() else local x1_2 image.rgb2y(x1):mul(255.0) -- 常规 0~255 动态范围 ...当-range_bug 1时由于亮度值被压缩到 [16, 235]像素间差值偏小测得的 MSE 偏低、PSNR 偏高这就是文档所称的 “dynamic range bug” 的来源——官方基准刻意复现了这一“缺陷”以便与论文数据对齐。最终 PSNR 由PSNR/MSE2PSNR计算注意 MSE 被math.max(mse, 1)钳制在 1 以上防止除零local function PSNR(x1, x2, color) local mse math.max(MSE(x1, x2, color), 1) return 10 * math.log10((255.0 * 255.0) / mse) end-color选项rgb|y|r|g|b控制指标计算的通道y走上述 Y 通道流程r/g/b只取单通道rgb则对三通道整体求 MSE。官方 photo 与 art 评测统一使用-color y。评测主程序 tools/benchmark.lua 全参数解读官方文档给出的 photo 评测命令为th tools/benchmark.lua -dir dataset_dir -model1_dir model_dir -method scale -filter Catrom -color y -range_bug 1 -tta 0|1 -force_cudnn 1其中各参数在源码中有明确默认值与含义完整清单如下摘自 tools/benchmark.lua 的torch.CmdLine定义参数默认值说明-dir./data/test测试图像目录-file测试图像文件列表一行一个路径与-dir二选一-model1_dir./models/anime_style_art_rgb第一个模型的目录内部需包含scale2.0x_model.t7scale 方法或noiseN_model.t7noise 方法等模型文件-model2_dir可选第二个模型目录用于双模型对比-methodscale评测方法scale2x 放大、noise、noise_scale、user自定义输入输出对、diff、scale44x 放大-filterCatrom生成低分辨率输入时使用的下采样滤波器Box、Lanczos、Catrom(Bicubic)-resize_blur1.0缩放时的模糊参数传给iproc.scale-coloryPSNR 计算通道rgb、y、r、g、b-noise_level1噪声模型等级配合noise/noise_scale方法-jpeg_quality75JPEG 压缩质量noise 相关方法构造退化输入时用-jpeg_times1JPEG 压缩次数-jpeg_quality_down5每次压缩递减的质量值-range_bug0是否复现 MATLABrgb2ycbcr动态范围 bug1|0-save_image0是否保存转换后的结果图片-save_baseline_image0是否保存基线插值放大结果图片-output_dir./输出目录结果图片与评测报告-show_progress1是否显示进度条-baseline_filterCatrom基线插值放大使用的滤波器Box|Lanczos|Catrom(Bicubic)-save_info0是否把分数与参数写入benchmark.txt-save_all0等价于同时开启-save_info、-save_image、-save_baseline_image-thread-1CPU 线程数大于 0 时调用torch.setnumthreads-tta0是否启用 TTA0|1-tta_level8TTA 等级2|4|8值越大质量越好但越慢-crop_size256每次送入网络的分块大小patch size显存不足时调小-batch_size1批大小-force_cudnn0是否使用 cuDNN 后端0|1-yuv4200是否使用 yuv420 采样 JPEGnoise 退化用-nameuser 方法下的模型名对应{name}_model.t7-x_dir/-y_diruser 方法的输入/真值图像目录两目录文件名必须一致-x_file/-y_fileuser 方法的输入/真值文件列表-border0计算指标前从边缘裁掉的像素数去除边界效应-metric自定义指标目前支持jaccard两个与性能强相关的选项值得说明-force_cudnn 1模型加载时通过cudnn.convert把 cunn 模型转换为 cuDNN 后端见 lib/w2nn.lua 的w2nn.load_model。源码中还在首张图前显式执行一次前向作为 cuDNN benchmark 预热if opt.force_cudnn and i 1 then分支避免把自动调优时间计入评测耗时-tta 1启用 TTA 后benchmark函数会把scale_f/image_f替换为 lib/reconstruct.lua 中的reconstruct.scale_tta/reconstruct.image_tta输出变为 8 个几何变换结果的均值。scale 方法的评测流程源码视角-method scale分支的执行逻辑对每张真值图x[i].y先执行transform_scale用-filter指定滤波器把图像缩小一半宽高乘 0.5得到低分辨率输入input用scale_f(model1, 2.0, input, ...)让模型把输入放大 2 倍得到model1_output用baseline_scale默认 Catrom 插值把输入放大 2 倍作为基线输出baseline_output三者均与原始真值图计算 PSNR-color y时只比较亮度并分别累计model1_time与基线/模型的 RMSE、PSNR。也就是说官方“2x PSNR”表的语义是先用指定滤波器把原图降采样到一半再用模型或插值放大回原尺寸比较与原始图像的误差。这也是文档中 art 表以 “Filter/Model” 为行维度的原因——不同的下采样滤波器会显著影响重建难度与最终分数。数据加载时源码还会对每张图执行iproc.crop_mod4把宽高裁剪到 4 的整数倍以保证后续分块与上采样尺寸对齐见load_data_from_dir。Photo 基准数据集与结果解读数据集与模型训练背景文档说明 photo 模型是在kou 的照片集与ukbench的混合数据集上训练的对应训练脚本见 appendix/train_upconv_7_photo.sh其中使用-style photo -data_dir ./data/photo -downsampling_filters Box,Sinc,Catrom等参数。评测使用的公开数据集为BSD100BSDS300 中的 100 张测试图像Urban100来自 SelfExSR 项目包含大量城市建筑类图像纹理细节丰富、重建难度更高。2x PSNR无 TTADataset/ModelBicubicvgg_7/photoupconv_7/photoupconv_7l/photoresnet_14l/photoBSD10029.55831.42731.64031.74931.847Urban10026.85230.05730.47730.75931.016可以看出四个模型均显著超越 Bicubic 插值BSD100 上约 1.9 ~ 2.3 dBUrban100 上约 3.2 ~ 4.2 dB同族模型中resnet_14l/photo精度最高upconv_7l次之。2x 耗时秒Dataset/Modelvgg_7/photoupconv_7/photoupconv_7l/photoresnet_14l/photoBSD1004.0572.5094.9476.86Urban10016.3497.08314.17827.87upconv_7/photo速度最快BSD100 上 2.509 秒而精度最高的resnet_14l/photo耗时约是它的 2.7 倍BSD100/ 3.9 倍Urban100。Urban100 图像尺寸更大整体耗时约为 BSD100 的 3~4 倍。精度与速度的权衡是选型时的核心考虑追求速度选upconv_7追求精度选resnet_14l。2x with TTA PSNRDataset/ModelBicubicvgg_7/photoupconv_7/photoupconv_7l/photoresnet_14l/photoBSD10029.55831.47431.70531.81231.915Urban10026.85230.14030.59930.86831.1622x with TTA 耗时秒Dataset/Modelvgg_7/photoupconv_7/photoupconv_7l/photoresnet_14l/photoBSD10036.61120.21942.48660.38Urban100132.41665.125129.916255.20对比两组数据可见TTA 使各模型 PSNR 提升约0.05 ~ 0.15 dB文档给出的经验值为 photo 约 0.1但耗时膨胀到约 8 倍例如upconv_7/photo在 BSD100 上从 2.509 秒变为 20.219 秒与文档“TTA 比非 TTA 慢 8 倍”的说明一致。Art 基准多种滤波器下的模型对比art 评测命令详见 appendix/benchmark.sh其核心循环为benchmark_art() { dir./benchmarks/${1}/${2}/${3}/${4} mkdir -p ${dir} th tools/benchmark.lua -dir data/${1} -model1_dir models/${2}/art -method scale \ -filter ${3} -color y -range_bug 1 -tta ${4} -output_dir ${dir} \ -save_info 1 -show_progress 0 -force_cudnn 1 } run_benchmark_art() { for tta in 0 1 do for filter in Sinc Lanczos Catrom Box do benchmark_art art_test vgg_7 ${filter} ${tta} benchmark_art art_test upconv_7 ${filter} ${tta} benchmark_art art_test cunet ${filter} ${tta} done done } run_benchmark_art脚本按benchmarks/{dataset}/{model}/{filter}/{tta}结构组织输出目录并在-save_info 1下于每个目录写入benchmark.txt与benchmark_details.txt后者逐图记录 PSNR 与胜负。输出目录结构示意benchmarks/ └── art_test/ ├── vgg_7/ │ ├── Sinc/0/… ├── Sinc/1/… ├── Lanczos/0/… … ├── upconv_7/… └── cunet/…数据集art_test由 84 张各类同人插画组成属于私有数据集文档明确说明不对外公开因此 art 的绝对数值无法被外部直接复现但相对对比关系模型间、滤波器间、TTA 前后仍然有效。2x PSNR无 TTAFilter/ModelBicubicvgg_7/artupconv_7/artcunet/artLanczos31.02237.49538.33039.886Sinc30.94737.72238.53840.312Catrom(Bicubic)30.66337.27837.18940.184Box30.89137.70938.41039.672关键观察cunet/art 全面领先在四种滤波器下均达到 39.7 dB比upconv_7/art高约 1.2~1.6 dB滤波器对最终分数有明显影响对vgg_7/art与upconv_7/artSinc 与 Lanczos 下采样得到的输入重建分数更高而 CatromBicubic反而偏低相比之下photo 评测固定使用 Catrom 下采样-filter Catrom这也是两套评测脚本参数不同的原因。2x 耗时秒Dataset/Modelvgg_7/artupconv_7/artcunet/artart_test24.15310.79424.222upconv_7/art耗时约为vgg_7/cunet的一半属于 art 模型中的“快速档”cunet/art在精度最高的同时耗时与vgg_7/art相当。2x with TTA PSNRFilter/ModelBicubicvgg_7/artupconv_7/artcunet/artLanczos31.02237.77738.67740.289Sinc30.94738.00538.88340.707Catrom(Bicubic)30.66337.49837.41740.592Box30.89138.03238.76840.0322x with TTA 耗时秒Dataset/Modelvgg_7/artupconv_7/artcunet/artart_test207.21799.151211.520TTA 在 art 上收益明显大于 photo各模型提升约0.2 ~ 0.4 dB例如upconv_7/art在 Sinc 下从 38.538 升至 38.883cunet/art在 Sinc 下从 40.312 升至 40.707与文档“art 约 0.4”的经验值吻合代价同样是约 8 倍耗时cunet/art从 24.222 秒升至 211.520 秒。TTA 的原理与代价源码级解读TTATest-Time Augmentation测试时增强是 waifu2x 支持的集成技术。其实现位于 lib/reconstruct.lua定义 8 个几何变换模式恒等、水平翻转、垂直翻转、双向翻转、转置以及它们的组合tta函数对输入逐个施加变换 → 前向推理 → 逆变换还原 → 取 8 个输出的平均值local augmented_patterns { { forward function (a) return a end, backward function (a) return a end }, { forward function (a) return image.hflip(a) end, backward function (a) return image.hflip(a) end }, { forward function (a) return image.vflip(a) end, backward function (a) return image.vflip(a) end }, ... }-tta_level可设为2|4|8get_augmented_patterns中1 表示关闭2 为恒等转置4 增加翻转组合8 为全部模式等级越高集成样本越多、质量越好但越慢。结合上表数据可总结工程经验追求最高精度且不介意耗时如高质量插画修复art 场景开启 TTA收益约 0.2~0.4 dB追求吞吐/实时性关闭 TTAupconv_7系列是速度优先的选择photo 场景 TTA 收益较小约 0.1 dB是否开启可视算力与需求权衡。如何运行与扩展自己的基准测试复现官方评测准备数据把 BSD100 / Urban100 图像放入data/bsd100、data/urban100与 appendix/benchmark.sh 中-dir data/${1}对应art_test 为私有数据集可使用自己的插画集替代准备模型photo 模型放models/{model}/photo/scale2.0x_model.t7art 模型放models/{model}/art/scale2.0x_model.t7目录结构需与脚本一致执行官方脚本或单条命令例如th tools/benchmark.lua -dir data/bsd100 -model1_dir models/upconv_7/photo -method scale \ -filter Catrom -color y -range_bug 1 -tta 0 -output_dir benchmarks/bsd100/upconv_7/0 \ -save_info 1 -show_progress 0 -force_cudnn 1查看输出终端进度行实时显示baseline_rmse/model1_rmse/baseline_psnr/model1_psnr-save_info 1时benchmark.txt会写入完整参数JSON与最终 RMSE/PSNR/耗时benchmark_details.txt逐图记录分数。生成自定义评测数据若需要自己构造高低分辨率图像对可借助 tools/make_benchmark_input.luath tools/make_benchmark_input.lua -i ./data/my_images -lr ./data/my_lr -hr ./data/my_hr -filter Sinc脚本把输入目录中每张图用指定滤波器-filter缩小一半写入-lr原图写入-hr文件名一一对应。用 user / diff 方法做任意图像对对比若想评测的不是标准降采样流程而是任意“输入-真值”图像对可使用-method user两个模型对比或-method diff仅统计输入与真值差异不加载模型。命令格式th tools/benchmark.lua -method user -name scale2.0x \ -model1_dir models/upconv_7/art -model2_dir models/cunet/art \ -x_dir ./data/my_lr -y_dir ./data/my_hr -tta 0-x_dir与-y_dir中的文件名必须一一对应脚本按 basename 匹配-border N可在计算指标前裁掉边缘 N 像素用于规避分块重建的边界效应。结语通过 appendix/benchmark.md 及其配套脚本与源码可以看到 waifu2x 评测体系的关键结论photo 场景中resnet_14l精度最高、upconv_7速度最快art 场景中cunet全面领先TTA 在 art 上能带来约 0.4 dB 的额外收益但耗时约为 8 倍。理解 PSNR 的 MATLAB 兼容计算与-range_bug细节是让本地数据与官方数字可比的前提而tools/benchmark.lua丰富的选项user/diff/scale4等方法与-save_info报告足以支撑读者复现官方结果并针对自有数据集建立持续的模型回归评测。赞分享计算机视觉深度学习【免费下载链接】waifu2xImage Super-Resolution for Anime-Style Art项目地址https://gitcode.com/gh_mirrors/waifu/waifu2x点击查看免费下载相关推荐OpenCV Contrib dnn_superres 超分辨率基准测试指南PSNR/SSIM 质量评估与 CPU 推理耗时对比OpenCV Contrib dnn_superres 超分辨率基准测试指南PSNR/SSIM 质量评估与 CPU 推理耗时对比 dnn_superres 模计算机视觉图像处理深度学习机器学习tchMaterial-parser智慧教育平台电子课本 PDF 免费下载工具一键完整保存tchMaterial parser智慧教育平台电子课本 PDF 免费下载工具一键完整保存 想在国家中小学智慧教育平台把教材存到本地往往卡在预览页页面只网页爬虫教育Stencil 编译耗时基准测试基于 benchmark-results.md 的冷/热构建性能度量与复现指南Stencil 编译耗时基准测试基于 benchmark results.md 的冷/热构建性能度量与复现指南 本指南以 Stencil 仓库 test/en开发工具前端前端构建上一篇终极Windows系统日志监控解决方案Visual Syslog Server完整指南下一篇DDrawCompat终极指南让老游戏在现代Windows系统完美运行的完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表