当前位置: 首页 > article >正文

【RED-Net | NIPS 2016论文阅读】:对称跳跃连接的深度编解码图像复原网络

论文信息标题Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections会议NIPS 2016单位南京大学、阿德莱德大学代码https://github.com/helloxiaojiao/RED-Net论文https://arxiv.org/pdf/1603.09056.pdf一、前言图像复原的经典难题图像复原去噪、超分就是从退化图像中恢复出清晰原图是个典型的病态逆问题。退化模型yxvy x vyxvyyy退化图像含噪/低分辨率xxx清晰原图vvv噪声/退化分量传统方法BM3D、WNNM效果好但速度慢早期CNN虽然快但网络一深就梯度消失细节恢复拉胯。RED-Net直接给出满分答案深度卷积编解码 对称跳跃连接1个模型搞定多噪声级还能刷到SOTA二、核心总览RED-Net到底强在哪三大杀招全卷积编解码架构编码卷积提取主体解码反卷积恢复细节对称跳跃连接对应卷积层→反卷积层直连传细节防梯度消失单模型多噪声级超大网络容量一个模型处理σ10/30/50/70全部噪声一句话总结越深越强细节不丢训练稳定一专多能。三、网络架构对称编解码跳跃连接3.1 整体架构图1 RED-Net整体架构编码器堆叠卷积层提取图像主体过滤噪声解码器堆叠反卷积层从抽象特征恢复高清细节对称跳跃连接每2层卷积→对应反卷积层逐元素相加无池化/反池化保护图像细节不丢信息卷积核全部3×3同VGG稳定好用3.2 残差模块图2 RED-Net残差模块实线卷积虚线反卷积⊕特征图逐元素相加通俗解释把编码器的细节“快递”给解码器防止反卷积“无米之炊”。四、核心原理公式通俗解释4.1 残差学习策略不直接学y→xy→xy→x而是学残差F(X)Y−XF(X) Y - XF(X)Y−XXXX网络输入退化图YYY网络输出清晰图F(X)F(X)F(X)网络学习的残差噪声/模糊分量通俗解释网络只学“退化部分”复原更简单训练更稳定。4.2 损失函数MSEL(Θ)1N∑i1N∥F(Xi;Θ)−Yi∥F2\mathcal{L}(\Theta)\frac{1}{N}\sum_{i1}^{N}\|\mathcal{F}(X_i;\Theta)-Y_i\|_F^2L(Θ)N1​i1∑N​∥F(Xi​;Θ)−Yi​∥F2​Θ\ThetaΘ网络参数卷积/反卷积核NNN训练样本数量XiX_iXi​第iii个退化图像块YiY_iYi​第iii个清晰标签块F(⋅)\mathcal{F}(·)F(⋅)网络映射∥⋅∥F\|\cdot\|_F∥⋅∥F​Frobenius范数像素级L2损失通俗解释让网络输出图和真实图的像素差距越小越好。4.3 对称跳跃连接的两大作用前向传播传递编码器的细节特征帮解码器精准恢复边缘纹理反向传播梯度直达底层解决深层网络梯度消失10/20/30层随便堆五、核心PyTorch代码实现5.1 卷积ReLU模块importtorchimporttorch.nnasnnclassConvBlock(nn.Module):def__init__(self,in_channels,out_channels):super().__init__()self.convnn.Conv2d(in_channels,out_channels,kernel_size3,padding1)self.relunn.ReLU(inplaceTrue)defforward(self,x):returnself.relu(self.conv(x))5.2 反卷积ReLU模块classDeconvBlock(nn.Module):def__init__(self,in_channels,out_channels):super().__init__()self.deconvnn.ConvTranspose2d(in_channels,out_channels,kernel_size3,padding1)self.relunn.ReLU(inplaceTrue)defforward(self,x):returnself.relu(self.deconv(x))5.3 RED-Net完整30层网络classREDNet30(nn.Module):def__init__(self,channels64):super().__init__()# 编码器15层卷积self.conv1ConvBlock(1,channels)self.conv2ConvBlock(channels,channels)self.conv3ConvBlock(channels,channels)self.conv4ConvBlock(channels,channels)self.conv5ConvBlock(channels,channels)self.conv6ConvBlock(channels,channels)self.conv7ConvBlock(channels,channels)self.conv8ConvBlock(channels,channels)self.conv9ConvBlock(channels,channels)self.conv10ConvBlock(channels,channels)self.conv11ConvBlock(channels,channels)self.conv12ConvBlock(channels,channels)self.conv13ConvBlock(channels,channels)self.conv14ConvBlock(channels,channels)self.conv15ConvBlock(channels,channels)# 解码器15层反卷积 对称跳跃连接self.deconv15DeconvBlock(channels,channels)self.deconv14DeconvBlock(channels*2,channels)self.deconv13DeconvBlock(channels*2,channels)self.deconv12DeconvBlock(channels*2,channels)self.deconv11DeconvBlock(channels*2,channels)self.deconv10DeconvBlock(channels*2,channels)self.deconv9DeconvBlock(channels*2,channels)self.deconv8DeconvBlock(channels*2,channels)self.deconv7DeconvBlock(channels*2,channels)self.deconv6DeconvBlock(channels*2,channels)self.deconv5DeconvBlock(channels*2,channels)self.deconv4DeconvBlock(channels*2,channels)self.deconv3DeconvBlock(channels*2,channels)self.deconv2DeconvBlock(channels*2,channels)self.deconv1nn.ConvTranspose2d(channels*2,1,kernel_size3,padding1)defforward(self,x):# 编码c1self.conv1(x)c2self.conv2(c1)c3self.conv3(c2)c4self.conv4(c3)c5self.conv5(c4)c6self.conv6(c5)c7self.conv7(c6)c8self.conv8(c7)c9self.conv9(c8)c10self.conv10(c9)c11self.conv11(c10)c12self.conv12(c11)c13self.conv13(c12)c14self.conv14(c13)c15self.conv15(c14)# 解码 对称跳跃连接d15self.deconv15(c15)d14self.deconv14(torch.cat([d15,c14],dim1))d13self.deconv13(torch.cat([d14,c13],dim1))d12self.deconv12(torch.cat([d13,c12],dim1))d11self.deconv11(torch.cat([d12,c11],dim1))d10self.deconv10(torch.cat([d11,c10],dim1))d9self.deconv9(torch.cat([d10,c9],dim1))d8self.deconv8(torch.cat([d9,c8],dim1))d7self.deconv7(torch.cat([d8,c7],dim1))d6self.deconv6(torch.cat([d7,c6],dim1))d5self.deconv5(torch.cat([d6,c5],dim1))d4self.deconv4(torch.cat([d5,c4],dim1))d3self.deconv3(torch.cat([d4,c3],dim1))d2self.deconv2(torch.cat([d3,c2],dim1))outself.deconv1(torch.cat([d2,c1],dim1))returnout六、实验结果全方面SOTA6.1 图像去噪表格1 出处原论文Table 1噪声级BM3DWNNMRED10RED20RED30σ1034.1834.4934.6234.7434.81σ3028.4928.7428.9529.1029.17σ5026.0826.3226.5126.7226.81σ7024.6524.8024.9725.2325.31表格1 14张测试图平均PSNR(dB)分析RED30碾压传统最强BM3D、WNNM网络越深性能越强跳跃连接完美解决深层训练难题噪声越大提升越明显复杂退化优势拉满6.2 单模型多噪声级表格2 出处原论文Table 6数据集σ10σ30σ50σ7014张图34.4929.0926.7525.20BSD20033.3827.8825.6924.36表格2 单模型30层网络去噪结果分析只用1个模型同时处理4种噪声级性能仅略低于分模型训练实用性爆炸6.3 图像超分辨率表格3 出处原论文Table 3放大倍数SRCNNCSCNRED10RED20RED30×236.6637.1437.4337.6237.66×332.7533.2633.4333.8033.82×430.4931.0431.1231.4031.51表格3 Set5数据集超分PSNR(dB)分析同样超越所有传统CNN超分方法编解码跳跃连接同样适配超分任务七、消融实验验证跳跃连接的重要性跳跃连接分析a使用反卷积和跳跃连接恢复图像细节b训练过程中的训练损失c[11] 中的跳跃连接与我们模型中的跳跃连接对比其中“Block-i-RED”表示我们模型中块大小为 i 的连接“Block-i-He et al.”表示 He 等人[11]中块大小为 i 的连接。各曲线在最后一次迭代时的峰值信噪比PSNR分别为25.08、24.59、25.30 和 25.21。图3 跳跃连接消融实验分析无跳跃连接网络越深损失越大性能越差有跳跃连接网络越深损失越小性能越强对称连接 ResNet原始连接像素级对齐更适合图像复原八、总结RED-Net是图像复原里程碑式架构对称编解码编码提主体解码恢细节对称跳跃连接传细节防梯度消失深层网络轻松训单模型通用一个模型搞定多噪声级/多放大倍数去噪、超分双双SOTA简单有效影响深远至今U-Net、RED-Net系列跳跃连接编解码仍是图像复原的标配骨架

相关文章:

【RED-Net | NIPS 2016论文阅读】:对称跳跃连接的深度编解码图像复原网络

论文信息 标题:Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Connections会议:NIPS 2016单位:南京大学、阿德莱德大学代码:https://github.com/helloxiaojiao/RED-Net论文&…...

手把手调试MIPI DBI显示:用逻辑分析仪抓取Type A/B时序波形,快速定位花屏、闪屏问题

手把手调试MIPI DBI显示:用逻辑分析仪抓取Type A/B时序波形,快速定位花屏、闪屏问题 调试MIPI DBI接口的显示问题时,硬件时序分析往往是最后一道防线。当软件配置检查无误后,花屏、闪屏或无法点亮的故障通常源于信号完整性或时序偏…...

安卓demo-壁纸预览、分屏小窗与U盘播放时长记忆功能

壁纸预览 1.背景 有的项目需要做壁纸功能,就会用到壁纸预览功能。类似于手机上的壁纸预览功能: 选择图片->点击预览->桌面上的组件、应用图片名称等会出现在壁纸上。 图1.实际桌面与壁纸预览界面 2.现状分析 现在桌面已经做成一个应用了&…...

TensorFlow Recommenders多任务学习指南:同时优化多个推荐目标

TensorFlow Recommenders多任务学习指南:同时优化多个推荐目标 【免费下载链接】recommenders TensorFlow Recommenders is a library for building recommender system models using TensorFlow. 项目地址: https://gitcode.com/gh_mirrors/rec/recommenders …...

5个步骤扩展Cookiecutter项目模板功能:打造专属插件系统

5个步骤扩展Cookiecutter项目模板功能:打造专属插件系统 【免费下载链接】cookiecutter A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects. 项目地址: https://g…...

中兴光猫终极管理指南:zteOnu一键开启工厂模式与永久Telnet的完整教程

中兴光猫终极管理指南:zteOnu一键开启工厂模式与永久Telnet的完整教程 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫是许多家庭和企业网络的核心设备&#xff0c…...

Awesome Diffusion Models in Medical Imaging:医学影像扩散模型完全入门指南

Awesome Diffusion Models in Medical Imaging:医学影像扩散模型完全入门指南 【免费下载链接】Awesome-Diffusion-Models-in-Medical-Imaging Diffusion Models in Medical Imaging (Published in Medical Image Analysis Journal) 项目地址: https://gitcode.co…...

利川乡村民宿:口碑驱动的选品与运营策略解析

利川乡村民宿:口碑驱动的选品与运营策略解析“‘利川乡村民宿的核心竞争力,从来不是装修多豪华,而是能否让游客真正享受清凉与安心’——这是利川乡村民宿行业的共识,但如何选到靠谱的民宿、理解其运营逻辑,却困扰着不…...

数据智能代理DATAMIND架构与实战解析

1. 项目概述DATAMIND这个项目名称本身就透露着浓厚的"数据智能"气息。作为一个长期混迹数据科学圈的老兵,我第一眼看到这个标题就意识到,这绝不是一个简单的数据分析工具,而是一个具备自主学习和决策能力的智能代理系统。这类系统正…...

以水胜刚,SAP HANA 开发里的柔弱之道

老子说「天下莫柔弱於水。而攻坚强者,莫之能胜。」这一句放到 SAP HANA 开发里,我会把它理解成一种很朴素的工程直觉,系统里真正强大的东西,往往不是堆得最厚的过程代码,不是最长的 SQLScript,不是最复杂的 Calculation View,也不是到处加索引、到处建中间表、到处写强制…...

抖音下载器完整指南:5分钟学会批量下载无水印抖音视频

抖音下载器完整指南:5分钟学会批量下载无水印抖音视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…...

LLM上下文工程化实践:从向量检索到智能问答的完整解决方案

1. 项目概述:从“上下文”到“工程化”的桥梁 如果你是一名AI应用开发者,或者正在尝试将大语言模型(LLM)集成到你的产品中,那么“上下文管理”这个词对你来说一定不陌生,甚至可能是一个痛点。我们常常会遇到…...

算法题(173):枚举排列

审题: 本题需要我们找出所有排列方式并按照字典序排序输出 思路: 方法一:dfs深度优先搜索 由于最后还需要我们按照字典序输出,且无法事先确定需要的for循环层数,所以我们这里不能采用简单的for循环解决 决策树&#xf…...

浏览器沙箱环境构建:安全执行与结构化回显的实现原理

1. 项目概述:一个浏览器内的指令回显工具最近在折腾一些前端自动化测试和交互原型开发时,我常常遇到一个需求:需要快速验证浏览器环境下的指令执行结果,或者想直观地看到某个JavaScript API在特定上下文中的行为。手动打开控制台敲…...

算法题(172):组合型枚举

审题: 本题需要我们对1到n的数进行n中取m的组合枚举,找到所有不同的组合并按照字典序输出,要求行内和行间都满足字典序 思路: 本题我们采用枚举的方法,但是用for循环暴力枚举会有两个大问题 其一是无法确定for循环个数…...

从零到千档:AXOrderBook如何重塑A股市场深度洞察

从零到千档:AXOrderBook如何重塑A股市场深度洞察 【免费下载链接】AXOrderBook A股订单簿工具,使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等,包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com/gh_mirrors/…...

树莓派4B与STM32串口通信保姆级教程:从GPIO引脚连接到minicom调试全流程

树莓派4B与STM32串口通信全流程实战指南 引言 嵌入式开发中,串口通信是最基础也最关键的技能之一。作为初学者,你可能已经听说过树莓派和STM32这两个名字——前者是当下最受欢迎的单板计算机,后者则是嵌入式领域广泛使用的微控制器。将它们通…...

AISMM白皮书深度拆解:5大核心模块、87个评估维度、23个典型误用陷阱——一线架构师手把手带你避坑

更多请点击: https://intelliparadigm.com 第一章:2026奇点智能技术大会:AISMM白皮书下载 2026奇点智能技术大会(Singularity Intelligence Summit 2026)正式发布《AI System Maturity Model(AISMM&#…...

暗黑破坏神2重制版自动化刷宝终极指南:Botty像素级智能助手全解析

暗黑破坏神2重制版自动化刷宝终极指南:Botty像素级智能助手全解析 【免费下载链接】botty D2R Pixel Bot 项目地址: https://gitcode.com/gh_mirrors/bo/botty 想要在《暗黑破坏神2重制版》中解放双手,实现高效自动刷宝吗?Botty作为一…...

Vue3+TypeScript在线演示文稿编辑器的技术实现深度解析

Vue3TypeScript在线演示文稿编辑器的技术实现深度解析 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing for the editi…...

艾体宝洞察|面向 Agentic AI 场景:基于原生多模型架构构建“统一上下文层”

随着大语言模型(LLM)能力的演进,AI 应用的开发正在从单轮问答式的 RAG(检索增强生成),向具备长程规划与工具调用能力的智能体(AI Agent)架构迁移。 然而,从工程实践的角度…...

Docker网络延迟高达400ms?用eBPF+量子调度模型实时诊断,3分钟定位瓶颈

更多请点击: https://intelliparadigm.com 第一章:Docker网络延迟的量子化认知革命 传统网络性能分析常将延迟视为连续可微的宏观量,而 Docker 容器间通信却在内核网络栈、cgroup 限流、iptables 规则与 veth pair 驱动层叠作用下&#xff0…...

如何快速安装和配置QLMarkdown:新手入门教程

如何快速安装和配置QLMarkdown:新手入门教程 【免费下载链接】QLMarkdown macOS Quick Look extension for Markdown files. 项目地址: https://gitcode.com/gh_mirrors/qlm/QLMarkdown QLMarkdown是一款专为macOS设计的Quick Look扩展工具,能帮助…...

终极Photoshop纹理压缩指南:Intel Texture Works插件完整使用教程

终极Photoshop纹理压缩指南:Intel Texture Works插件完整使用教程 【免费下载链接】Intel-Texture-Works-Plugin Intel has extended Photoshop* to take advantage of the latest image compression methods (BCn/DXT) via plugin. The purpose of this plugin is …...

Miku-LuaProfiler安全性与稳定性:如何避免Hook导致的崩溃问题

Miku-LuaProfiler安全性与稳定性:如何避免Hook导致的崩溃问题 【免费下载链接】Miku-LuaProfiler 项目地址: https://gitcode.com/gh_mirrors/mi/Miku-LuaProfiler Miku-LuaProfiler是一款功能强大的Lua性能分析工具,通过Hook技术实现对Lua代码执…...

ied生命周期脚本执行机制:从安装到构建的完整流程

ied生命周期脚本执行机制:从安装到构建的完整流程 【免费下载链接】ied :package: Like npm, but faster - an alternative package manager for Node 项目地址: https://gitcode.com/gh_mirrors/ie/ied ied作为一款快速的Node.js替代包管理器,其…...

三步搞定B站4K视频下载:开源工具让大会员内容永久保存

三步搞定B站4K视频下载:开源工具让大会员内容永久保存 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 在数字内容消费日益…...

别再只查命令了!深入理解树莓派I2C通信,从驱动到应用层玩转DS3231 RTC模块

树莓派I2C通信深度解析:从DS3231驱动到Python寄存器级操作 树莓派作为嵌入式开发的明星平台,其I2C接口的灵活性和可扩展性一直备受开发者青睐。但大多数教程仅停留在基础命令操作层面,对于想真正掌握硬件交互本质的开发者来说,这远…...

如何快速创建Serverless项目:Cookiecutter模板的终极指南

如何快速创建Serverless项目:Cookiecutter模板的终极指南 【免费下载链接】cookiecutter A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects. 项目地址: https://…...

别再踩坑了!Windows下用Code::Blocks搭建LVGL模拟器(V9版)的完整避坑指南

Windows下用Code::Blocks搭建LVGL V9模拟器的完整避坑指南 最近在Windows平台上用Code::Blocks搭建LVGL V9模拟器时,发现网上大部分教程都是针对V8版本的,导致在文件系统访问环节频频踩坑。本文将分享我从环境准备到成功运行的全过程,特别是那…...