资讯动态

waifu2x 实战指南:基于 Torch7 的动漫风格图像超分辨率与降噪完整教程

发布时间:2026/9/30 2:04:30 来源:尧图企业网站定制
计算机视觉深度学习【免费下载链接】waifu2xImage Super-Resolution for Anime-Style Art项目地址https://gitcode.com/gh_mirrors/waifu/waifu2x点击查看免费下载waifu2x 是一个使用深度卷积神经网络DCNN对动漫风格插画进行图像超分辨率放大的开源项目同时支持照片处理。本指南将带你从零搭建其命令行环境掌握降噪、2x 放大、批量转换与视频处理等完整工作流并深入讲解如何基于仓库源码训练属于自己的定制模型。读完本文你将能够在本仓库Torch7 版本上完成从环境安装、日常图像处理到自定义模型训练的端到端实操。项目概览与技术背景waifu2x 的核心定位是Image Super-Resolution for Anime-style Art——针对动漫插画这类线条清晰、色块分明的图像利用深度卷积神经网络实现高质量的 2x 放大同时降低 JPEG 压缩带来的噪声。该项目受 SRCNNImage Super-Resolution Using Deep Convolutional Networks启发其训练与推理管线全部基于 Torch7 实现。需要特别说明的是根据仓库 README.md 的说明waifu2x 的开发工作已于2023 年 2 月迁移至 nunifPyTorch 版本仓库本仓库保留的是经典的 Torch7 实现对于希望了解早期深度学习超分辨率实现、或在旧环境中复现训练流程的读者仍有重要参考价值。仓库目录结构概览waifu2x.lua命令行推理入口web.luaWeb 服务入口turbo 异步 HTTP 框架train.lua模型训练入口convert_data.lua训练数据预处理压缩为 images.t7install_lua_modules.sh一键安装 Lua 依赖lib/核心库w2nn、reconstruct、iproc、image_loader、settings 等appendix/预训练模型的训练脚本与部署配置文件images/效果展示与训练测试图片环境依赖与安装硬件与平台要求硬件NVIDIA GPUCUDA 加速是必须的代码在启动时会强制加载cutorch/cunn见 lib/w2nn.lua 中的load_cunn逻辑平台Torch7 NVIDIA CUDA 工具链LuaRocks 依赖包除 Torch7 默认包外还需要以下 LuaRocks 包包名用途lua-csnappy训练数据压缩Snappy 编码见 lib/compression.luamd5Web 服务中文件缓存指纹计算uuidWeb 服务中任务/文件唯一 IDcsvigo训练数据 CSV 解析turbo异步 Web 服务器框架web.lua使用系统层面还需要libsnappy-dev、libgraphicsmagick1-dev需链接 little-cms2 的 GraphicsMagickmacOS/Homebrew 用户需额外处理、libssl1.0-devWeb 服务使用。安装步骤以 Ubuntu 16.04 为例1. 安装 CUDA下载 CUDA 发行包后执行sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb sudo apt-get update sudo apt-get install cuda不同 CUDA 版本8.x/9.x/10.x对应不同的 Torch7 兼容处理方式请以实际安装版本为准。2. 安装系统依赖包sudo apt-get install libsnappy-dev sudo apt-get install libgraphicsmagick1-dev sudo apt-get install libssl1.0-dev # for web server3. 安装 Torch7按照 Torch 官方入门指南完成 Torch7 安装。4. 获取 waifu2x 并安装 Lua 模块git clone --depth 1 https://github.com/nagadomi/waifu2x.git cd waifu2x ./install_lua_modules.shinstall_lua_modules.sh 会依次安装 graphicsmagick、lua-csnappy、md5、uuid、csvigo、turbo并额外从 cudnn.torch 仓库的R7分支编译安装 cuDNN 绑定luarocks make cudnn-scm-1.rockspec。5. 验证安装th waifu2x.lua如果环境正确程序会使用默认参数对images/miku_small.png执行处理并输出结果文件。命令行工具核心参数与四种处理模式命令行入口是 waifu2x.lua通过torch.CmdLine解析参数见 waifu2x.lua 中waifu2x()函数的完整选项定义。完整参数可通过th waifu2x.lua -h查看核心参数如下参数默认值说明-iimages/miku_small.png输入图像路径-l空批量模式图像列表文件每行一个路径-mnoise_scale处理方法noise、scale、noise_scale、user-noise_level1降噪等级(0\|1\|2\|3)-scale2放大倍数2 表示 2x-o(auto)输出文件路径支持%s/%d占位符-model_dir./models/cunet/art模型目录默认使用 cunet 动漫模型-crop_size256每次处理的图像块大小显存不足时调小-batch_size1批大小-force_cudnn0使用 cuDNN 后端0|1速度远快于默认内核-tta0TTA 模式慢但质量略高0|1-tta_level8TTA 等级2|4|8越高越慢越好-depth8输出位深8|16-resume0批量模式下跳过已存在的输出文件0|1-thread-1CPU 线程数-gpu1GPU 设备 ID-load_modeascii模型加载格式ascii|binary-q0静默模式0|1从 waifu2x.lua 源码可以看出四种模式分别加载不同命名的模型文件model_dir下降噪noise%d_model.t7%d 为 noise_level放大scale%.1fx_model.t7如 scale2.0x_model.t7降噪放大优先加载融合模型noise%d_scale%.1fx_model.t7若不存在则依次加载独立的降噪模型与放大模型串联执行用户模型%s_model.t7%s 为-name指定的模型名降噪Noise Reductionth waifu2x.lua -m noise -noise_level 1 -i input_image.png -o output_image.png不同噪声等级 03 分别对应不同强度等级 0 即轻微处理等级 3 针对重度压缩噪声th waifu2x.lua -m noise -noise_level 0 -i input_image.png -o output_image.png th waifu2x.lua -m noise -noise_level 2 -i input_image.png -o output_image.png th waifu2x.lua -m noise -noise_level 3 -i input_image.png -o output_image.png2x 放大Upscalingth waifu2x.lua -m scale -i input_image.png -o output_image.png放大倍率通过-scale 2控制默认即为 2x。降噪 2x 放大Noise Reduction Upscalingth waifu2x.lua -m noise_scale -noise_level 1 -i input_image.png -o output_image.png同样支持 03 四个噪声等级th waifu2x.lua -m noise_scale -noise_level 0 -i input_image.png -o output_image.png th waifu2x.lua -m noise_scale -noise_level 2 -i input_image.png -o output_image.png th waifu2x.lua -m noise_scale -noise_level 3 -i input_image.png -o output_image.png输出文件命名规则%s 与 %d批量模式下输出路径支持两种占位符实现见 waifu2x.lua 的format_output函数%s替换为源文件名不含扩展名%d替换为序号支持宽度格式如%06d例如输入文件为piyo.png时%s_%03d.png会被替换为piyo_001.png。若未指定-o默认输出到源文件同目录命名为源文件名_处理模式.png。批量转换与断点续传将待处理图片列表写入文本文件配合-l参数批量处理find /path/to/imagedir -name *.png -o -name *.jpg image_list.txt th waifu2x.lua -m scale -l ./image_list.txt -o /path/to/outputdir/prefix_%d.png批量处理的内部逻辑在 waifu2x.lua 的convert_frames函数中程序会一次性读取列表全部路径逐张加载、处理、保存并通过xlua.progress输出进度。两个实用技巧断点续传加上-resume 1会跳过已经存在的输出文件适合长时间任务中断后恢复内存回收源码中每处理 10 张图片调用一次collectgarbage()释放内存但超大图片仍建议配合-crop_size使用例如-crop_size 128避免显存溢出。cuDNN 加速与显存控制如果你安装了 cuDNN 库可添加-force_cudnn 1选项切换 cuDNN 后端。cuDNN 内核比默认内核快得多。从 waifu2x.lua 源码可见开启后还会自动设置cudnn.fastest true并在批量模式下启用cudnn.benchmark true自动寻找最快算法。模型加载时通过 lib/w2nn.lua 的w2nn.load_model调用cudnn.convert将普通 cunn 模型转换为 cuDNN 模型。若遇到 GPU 显存不足out of memory使用-crop_size选项缩小每次处理的图像块例如-crop_size 128以时间换显存。使用 Photo 模型处理照片waifu2x 不仅支持动漫插画也支持照片。默认model_dir为models/cunet/art动漫模型切换到照片模型只需指定模型目录th waifu2x.lua -model_dir models/photo -m scale -i input_image.png -o output_image.pngphoto 模型目录对应仓库中的models/upconv_7/photo见 web.lua 中PHOTO_MODEL_DIR的定义。Web 应用waifu2x 附带一个基于 turbo 异步框架的 Web 演示服务th web.lua启动后访问http://localhost:8812/即可使用网页版处理界面网页资源见 assets/多语言页面模板见 webgen/templates/index.html.erb。web.lua 作为waifu2x-api服务还提供了以下可调参数参数默认值说明-port8812监听端口-gpu1GPU 设备 ID-enable_tta0是否启用 TTA 查询-crop_size256每次处理的图像块大小-max_pixels3000×3000输出图像最大像素数限制-max_body_size5MB上传文件大小上限-cache_max200RAM 中缓存的最大图片数-force_cudnn0是否使用 cuDNN 后端视频处理工作流利用批量模式可以轻松实现整段视频的逐帧超分/降噪。以下示例以avconvUbuntu 14.04 上avconv即ffmpeg的别名演示从 00:09:00 到 00:12:00 的 3 分钟片段处理1. 抽取帧与音频mkdir frames avconv -i data/raw.avi -ss 00:09:00 -t 00:03:00 -r 24 -f image2 frames/%06d.png avconv -i data/raw.avi -ss 00:09:00 -t 00:03:00 audio.mp32. 生成帧列表find ./frames -name *.png |sort data/frame.txt3. waifu2x 批量降噪带断点续传mkdir new_frames th waifu2x.lua -m noise -noise_level 1 -resume 1 -l data/frame.txt -o new_frames/%d.png4. 合成视频avconv -f image2 -framerate 24 -i new_frames/%d.png -i audio.mp3 -r 24 -vcodec libx264 -crf 16 video.mp4训练自定义模型训练入口是 train.lua全部训练参数定义在 lib/settings.lua 中可通过th train.lua -h查看。核心参数如下参数默认值说明-methodscale训练任务noise、scale、noise_scale、user-modelvgg_7网络结构vgg_7、vgg_12、upconv_7、upconv_8_4x、dilated_7-model_dir./models模型输出目录-noise_level1降噪等级0|1|2|3-scale2.0放大倍数1 或偶数-styleart风格art动漫或photo照片-colorrgb颜色空间y或rgb-backendcunn计算后端cunn或cudnn-testimages/miku_small.png训练过程中的测试图像-learning_rate0.00025Adam 学习率-crop_size48训练裁剪块大小-batch_size16小批量大小-epoch50训练轮数-losshuber损失函数huber、l1、mse、bce-downsampling_filtersBox,Lanczos,Catrom2x 训练的下采样滤波器可选项含 Point、Box、Triangle、Lanczos、Sinc 等-gpu1GPU ID支持逗号分隔多卡-thread-1CPU 线程数用于数据增强管线-resume空从已有模型继续训练此外还内置了丰富的数据增强选项-random_color_noise_rate颜色噪声、-random_overlay_rate翻转折叠、-random_half_rate半分辨率、-random_unsharp_mask_rate反锐化掩模、-random_blur_rate高斯模糊配合-random_blur_size/-random_blur_sigma_min/-random_blur_sigma_max、-nr_rate降噪与保细节的权衡0.01.0等这些增强由 lib/pairwise_transform.lua 系列模块在训练线程池中实现见 train.lua 的transform_pool_init。数据准备首先生成无噪声训练图像的列表README 中提到作者使用约 6000 张高清无噪声 PNG 训练find /path/to/image/dir -name *.png data/image_list.txt然后执行 convert_data.lua 将原始图像转换为训练用的images.t7内部使用 Snappy 压缩存储并支持-max_training_image_size对大图随机裁剪th convert_data.lua训练降噪level1模型mkdir models/my_model th train.lua -model_dir models/my_model -method noise -noise_level 1 -test images/miku_noisy.png # 使用训练出的模型 th waifu2x.lua -model_dir models/my_model -m noise -noise_level 1 -i images/miku_noisy.png -o output.png训练过程中会持续用-test指定的测试图验证效果最终模型保存在models/my_model/noise1_best.png最佳模型对应noise1_model.t7。训练降噪level2模型th train.lua -model_dir models/my_model -method noise -noise_level 2 -test images/miku_noisy.png # 使用 th waifu2x.lua -model_dir models/my_model -m noise -noise_level 2 -i images/miku_noisy.png -o output.png最佳效果图保存在models/my_model/noise2_best.png。训练 2x 放大模型th train.lua -model upconv_7 -model_dir models/my_model -method scale -scale 2 -test images/miku_small.png # 使用 th waifu2x.lua -model_dir models/my_model -m scale -scale 2 -i images/miku_small.png -o output.png最佳效果图保存在models/my_model/scale2.0x_best.png。训练 2x 放大 降噪融合模型th train.lua -model upconv_7 -model_dir models/my_model -method noise_scale -scale 2 -noise_level 1 -test images/miku_small.png # 使用 th waifu2x.lua -model_dir models/my_model -m noise_scale -scale 2 -noise_level 1 -i images/miku_small.png -o output.png最佳效果图保存在models/my_model/noise1_scale2.0x_best.png。模型文件命名规则见 lib/settings.luanoise%d_model.t7、scale%.1fx_model.t7、noise%d_scale%.1fx_model.t7这些命名与推理端 waifu2x.lua 的模型查找逻辑一一对应。训练时若使用 cuDNN 后端-backend cudnn训练出的模型是 cudnn 格式可通过 tools/rebuild.lua 类工具转换回通用 cunn 格式。复现官方预训练模型官方预训练模型的实际训练命令收录在 appendix/train_upconv_7_art.sh 与 appendix/train_upconv_7_photo.sh 中可作为训练参数参考。以动漫版为例其关键流程为# 数据预处理限制训练图像尺寸不超过 1600 th convert_data.lua -max_training_image_size 1600 # 先训练 2x 放大模型downsampling_filters 使用 Box,Sinc保存全部历史模型便于人工挑选 th train.lua -save_history 1 -scale 2 -model upconv_7 -method scale \ -model_dir models/test/upconv_7_rev5 -downsampling_filters Box,Sinc \ -test query/pixel-art-small.png -backend cudnn -thread 4 -oracle_rate 0.0 \ -inner_epoch 2 -epoch 100 # 再以放大模型为起点微调 noise_scale 融合模型-resume 加载已有权重 th train.lua -save_history 1 -model upconv_7 -method noise_scale -noise_level 1 \ -model_dir models/test/upconv_7_rev6 -downsampling_filters Box,Sinc \ -test query/noise_test.jpg -backend cudnn -thread 4 \ -resume models/test/upconv_7_rev5/scale2.0x_model.t7 -style art降噪模型-method noise则使用vgg_7结构、-crop_size 32训练等级 3 时配合-nr_rate 1强化去噪。从脚本注释可以看出作者会通过-save_history 1保留全部 epoch 的历史模型再通过肉眼观察 mesh 伪影等视觉质量来挑选最优 checkpoint。Docker 部署仓库提供了 Dockerfile基于nagadomi/torch7:cuda10.1-cudnn7-devel-ubuntu18.04基础镜像构建内置了全部 Lua 依赖。使用 Docker 需要先安装 nvidia-docker注意README 与 Dockerfile 面向的是较旧的nvidia-docker/--gpus all语法请以实际 Docker 版本为准。构建并运行docker build -t waifu2x . docker run --gpus all -p 8812:8812 waifu2x th web.lua docker run --gpus all -v pwd/images:/images waifu2x th waifu2x.lua -force_cudnn 1 -m scale -scale 2 -i /images/miku_small.png -o /images/output.png重要注意事项——CUDA JIT 缓存在 Docker 中运行 waifu2x 时若没有启用 CUDA JIT 缓存fat binary 编译缓存首次运行会非常慢。解决方法是将宿主机的缓存目录挂载进容器例如docker run --gpus all -v $PWD/ComputeCache:/root/.nv/ComputeCache waifu2x th waifu2x.lua --help源码导读从加载到重建的内部原理理解推理主流程有助于更好地调参。以 waifu2x.lua 的convert_image函数为例单图处理链为图像加载image_loader.load_float读取图像并解析元数据含透明通道 alpha模型加载w2nn.load_model(model_path, opt.force_cudnn, opt.load_mode)加载.t7模型若force_cudnn为真则执行cudnn.convert转换为 cuDNN 格式最后model:cuda():evaluate()切换到 GPU 推理模式见 lib/w2nn.lua边界处理放大前用alpha_util.make_border扩充边界补偿卷积网络的感受野偏移分块重建reconstruct.scale/reconstruct.image按-crop_size分块前向推理开启-tta 1时改用reconstruct.scale_tta/image_tta对 8 个方向-tta_level 8的变换结果取平均换取更高质量Alpha 合成alpha_util.composite将处理结果与原始透明通道重新合成保存输出image_loader.save_png按-depth8/16 位写出 PNG。训练侧的 lib/reconstruct.lua、lib/srcnn.lua 与 lib/ 下的一系列自定义 Criterion如 ClippedWeightedHuberCriterion、SSIMCriterion、L1Criterion和网络模块LeakyReLU、ShakeShakeTable、RandomBinaryConvolution 等共同支撑了训练管线这些模块在w2nn加载时统一注册因此train.lua与waifu2x.lua都能复用。结语本文完整覆盖了 waifu2xTorch7 版从环境搭建、命令行推理、Web 服务、视频处理到自定义模型训练与 Docker 部署的实战全流程并给出了 waifu2x.lua、lib/settings.lua、appendix/train_upconv_7_art.sh 等关键源码与配置的对照关系。无论是快速上手图像增强还是基于 train.lua 训练自己的动漫/照片超分模型本文中的命令与参数均可直接复制运行。若需最新特性可关注其 PyTorch 继任项目 nunif。赞分享计算机视觉深度学习【免费下载链接】waifu2xImage Super-Resolution for Anime-Style Art项目地址https://gitcode.com/gh_mirrors/waifu/waifu2x点击查看免费下载相关推荐waifu2x终极指南如何快速实现动漫图像超分辨率与降噪waifu2x终极指南如何快速实现动漫图像超分辨率与降噪 想要让你的动漫图片更加清晰锐利吗 waifu2x是一款专门为动漫风格图像设计的深度学习工具能计算机视觉深度学习【亲测免费】 waifu2x动漫风格艺术品的图像超分辨率工具waifu2x动漫风格艺术品的图像超分辨率工具 在数字化时代图像质量的需求日益增长waifu2x 应运而生。这是一个利用深度卷积神经网络Deep Con计算机视觉深度学习性能对比分析Gemma-4-26B-A4B-it-qat-OptiQ-4bit vs 统一4位量化的优势性能对比分析Gemma 4 26B A4B it qat OptiQ 4bit vs 统一4位量化的优势 Gemma 4 26B A4B it qat Opt基础模型大模型模型量化多模态人工智能上一篇HsMod炉石传说模改工具完整使用教程下一篇Shardeum漏洞奖励全指南安全漏洞报告与处理流程完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑