新闻详情

新闻详情

首页 / 资讯中心 / 详情

Invertible-Image-Rescaling 代码逐行精读:从 IRNModel 到 ConvDownsampling 的可逆网络实现细节

发布时间:2026/9/7 7:38:48来源:尧图网络
Invertible-Image-Rescaling 代码逐行精读:从 IRNModel 到 ConvDownsampling 的可逆网络实现细节
Invertible-Image-Rescaling 代码逐行精读从 IRNModel 到 ConvDownsampling 的可逆网络实现细节【免费下载链接】Invertible-Image-Rescaling[ECCV 2020, IJCV 2022] Invertible Image Rescaling项目地址: https://gitcode.com/gh_mirrors/in/Invertible-Image-Rescaling在 ECCV 2020 的 Invertible-Image-RescalingIRN项目中可逆图像缩放做到了一个网络同时搞定下采样与上采样前向得到低分辨率图 潜在噪声 z反向拼上 z 就能精确恢复高分辨率图。下面我们从训练入口 IRNModel 一路精读到 ConvDownsampling把可逆网络的每一块拆解清楚。一、整体架构一个网络两个方向整张图可以拆成三段正好对应源码里的三类模块架构组件源码位置作用Haar 变换 / 卷积下采样HaarDownsampling、ConvDownsampling把分辨率降下来通道数乘 4或 scale²InvBlock 可逆块InvBlockExp用 F、G、H 三个子网做可逆变换下采样模块InvRescaleNet把上述操作串成整张网络二、项目结构与入口代码分为 Config / Data / Model / Network 四部分见 codes/README.md训练/测试入口python train.py -opt options/train/train_IRN_x4.yml、python test.py -opt options/test/test_IRN_x4.yml网络定义codes/models/networks.py模型逻辑codes/models/IRN_model.py可逆结构codes/models/modules/Inv_arch.py子网DBNet 稠密块codes/models/modules/Subnet_constructor.py训练配置示例codes/options/train/train_IRN_x4.yml三、IRNModel可逆网络的训练核心IRNModel 继承自 BasicSR 风格的BaseModel是整个可逆图像缩放模型的大脑。3.1 网络构建与调度器在__init__中模型通过networks.define_G(opt)拿到 InvRescaleNet并按配置选择MultiStepLR或带重启的余弦退火学习率优化器为 Adamlr 2e-4。3.2 一次训练迭代发生了什么optimize_parameters是理解 IRN 的关键共三步前向下采样把 HR 图喂给netG(xself.input)输出前 3 个通道当作 LR后scale²-1×3 个通道当作潜在变量 z加噪对 LR 先做 8bit 量化Quantization 模块用round/255模拟真实存储再按概率叠加高斯噪声模拟真实下采样器的输出反向放大把 LR 随机 z 拼成y调用netG(xy, revTrue)重建 HR用 L1 损失监督。总损失为lambda_fit_forw * L_fit拟合参考 LR lambda_ce_forw * ‖z‖²z 应接近 0 均值 lambda_rec_back * L_rec重建 HR。3.3 推理接口downscale(HR)前向取前 3 通道并量化得到 LRupscale(LR, scale)拼上标准高斯 z 后反向传播一次取前 3 通道得到 HR。四、InvBlockExp可逆块的 F/G/H 三剑客可逆图像缩放的最小单元是 InvBlockExp它把特征沿通道切成两半正向: y1 x1 F(x2) s clamp * (sigmoid(H(y1)) * 2 - 1) y2 x2 * exp(s) G(y1) 反向: s clamp * (sigmoid(H(x1)) * 2 - 1) y2 (x2 - G(x1)) / exp(s) y1 x1 - F(y2)每步都只做加法和乘除因此正向与反向可以互相精确抵消jacobian()返回±sum(s)即逐点雅可比行列式的对数供流模型场景使用。F/G/H 由subnet_constructor注入本项目中是 DenseBlock——5 个卷积串联、逐层拼接特征的 DenseNet 风格子网最后一个卷积零初始化保证初始时子网输出为 0变换为恒等。五、ConvDownsampling可卷积下采样的逐行精读当use_ConvDownsampling: True如 train_IRN_x8.yml时define_G 会强制down_firstTrue、down_num1网络开头先用一个 ConvDownsampling 直接降 scale 倍。它比固定 2 倍的 Haar 更通用权重初始化conv_weights torch.eye(scale²)scale2 时改成 Haar 的 ±1/4 四行权重scale3 时第一行取均匀 1/9低通正向先用ReplicationPad2d补齐到 scale 的整数倍再用 reshape permute 把scale×scale邻域拉平类似 pixel-unshuffle与scale²×scale²的分组卷积做通道混合输出通道数变为C*scale²反向直接对权重求矩阵逆torch.inverse(conv_weights)走一遍卷积 pixel-shuffle 即可精确还原——这就是可逆的来源下采样是通道间的线性变换求逆就是上采样。对比之下HaarDownsampling 只固定降 2 倍把不可学习的 Haar 矩阵A/H/V/D 四通道作为深度卷积权重stride2 完成下采样反向用转置卷积精确还原。六、InvRescaleNet把操作串成一张可逆链InvRescaleNet 用一个ModuleList顺序存放所有操作down_firstTrueIRN / x3、x8先放下采样模块再放block_num[0]个 InvBlock否则交替放置 Haar 下采样与 InvBlock逐层降分辨率。forward的精髓只有一行正向按operations顺序执行反向按reversed(operations)逆序执行——每一步自身可逆整条链自然可逆。七、定量与定性效果2× 下采样时IRN 在 Set5 上达到43.99 dB / 0.9871参数仅 1.66M全面超过 CAREDSR 等 50M 级组合4× 时同样以 4.35M 参数取得各数据集最优验证了这套可逆块 可逆下采样设计的表达力。八、快速上手清单安装依赖pip install numpy opencv-python lmdb pyyaml PyTorch/CUDA修改 options/train/train_IRN_x4.yml 中dataroot_GT指向 DIV2K 高清图运行python train.py -opt options/train/train_IRN_x4.yml开始训练换options/test/test_IRN_x4.yml执行python test.py即可评测彩色与压缩扩展版入口分别为 train_IRN-Color.py 和 train_IRN-Compression.py。小结IRN 的可逆图像缩放实现非常克制可逆性由InvBlockExp的加法-缩放结构和ConvDownsampling的可逆矩阵保证IRNModel负责前向拟合 反向重建的双向训练InvRescaleNet只做正向顺序执行、反向逆序执行的调度。读懂 Inv_arch.py 这不到 300 行代码基本就掌握了整个项目的精华。✨【免费下载链接】Invertible-Image-Rescaling[ECCV 2020, IJCV 2022] Invertible Image Rescaling项目地址: https://gitcode.com/gh_mirrors/in/Invertible-Image-Rescaling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

海思平台GPIO模拟I2C驱动实战:从时序到源码解析 2026/9/7 7:36:23

海思平台GPIO模拟I2C驱动实战:从时序到源码解析

简介:在海思平台开发中,如果硬件I2C控制器不足或为了节约资源,常常使用GPIO模拟I2C总线通信,这套驱动源码正好给出完整参考。压缩包很小,仅有4KB,里面包含三个文件:一个头文件、一个C语言源文件…

阅读更多 →
PEX8734 PCIe交换芯片实战:从通道分配到链路调优全解析 2026/9/7 7:36:23

PEX8734 PCIe交换芯片实战:从通道分配到链路调优全解析

简介:PEX8734是Broadcom(原PLX)推出的PCIe Gen3桥片,这套资源面向服务器、存储与通信领域的硬件工程师,系统覆盖从选型评估、原理图设计、封装确认到PCB Layout落地的完整流程。压缩包共32个文件,大小约51.…

阅读更多 →
用二十一点实战对比Q-Learning、SARSA、蒙特卡洛与DQN:强化学习入门项目解析 2026/9/7 7:36:23

用二十一点实战对比Q-Learning、SARSA、蒙特卡洛与DQN:强化学习入门项目解析

简介:这是一套基于 Python 的二十一点变体强化学习算法实现,面向强化学习初学者、算法复现者及游戏策略研究者。项目将二十一点建模为离散决策环境,完整实现了蒙特卡洛(MC)、SARSA、线性函数逼近(LFA&#…

阅读更多 →
串口烧录与IAP升级全指南:从驱动排查到Bootloader设计 2026/9/7 7:36:23

串口烧录与IAP升级全指南:从驱动排查到Bootloader设计

简介:面向STM32嵌入式开发者及单片机爱好者,这套资源提供完整的串口在线升级(IAP)方案,解决固件烧录、程序下载与远程升级需求,适用于产品批量烧录、现场固件更新、Bootloader二次开发等场景。方案基于YMod…

阅读更多 →
Win32平台OpenCV 4.5.0库文件配置全攻略与避坑指南 2026/9/7 7:36:23

Win32平台OpenCV 4.5.0库文件配置全攻略与避坑指南

简介:OpenCV 4.5.0(Win32)预编译库文件是一套面向32位Windows平台的计算机视觉开发资源,适合在Visual Studio等IDE中开展图像处理、目标检测与视频分析项目的开发者,可直接省去自行编译OpenCV的繁琐流程。压缩包共523个…

阅读更多 →
Excel封装成exe实战指南:从表格到独立程序的完整方案 2026/9/7 7:33:23

Excel封装成exe实战指南:从表格到独立程序的完整方案

简介:这款工具专门解决Excel文档分发与运行的痛点,可将.xlsx/.xls文件封装为独立.exe程序,适合需要批量交付报表、模板或数据工具的办公人员与二次开发者,无需对方安装Excel也能直接使用。资源压缩包共3个文件,总计约1…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞