论文阅读 PromptIR: Prompting for All-in-One Blind Image Restoration

论文阅读 PromptIR: Prompting for All-in-One Blind Image Restoration

作者:Syed Waqas Zamir, Aditya Arora, Salman Khan, Munawar Hayat, Fahad Shahbaz Khan, Ming-Hsuan Yang

机构:Mohamed bin Zayed University of AI, Linköping University

来源期刊:NeurIPS

发表时间:2023年
 

一、研究动机

        1.研究目标


        构建一个“All-in-One”盲图像复原网络,用单一模型、单次训练、无需先验地处理多种退化(去噪、去雨、去雾),并在各任务上均达到 SOTA 性能。

        2.过去方法


        任务专用网络:DnCNN、MPRNet、Restormer 等,每类退化需独立模型,存储/部署成本高。
         早期 All-in-One:AirNet 用对比学习额外训练退化编码器,两阶段训练、参数量大,且对退化表征耦合严重。
        通用视觉 Transformer:SwinIR、Uformer 等需针对任务微调,没考虑过退化统一。

         3.本文方法      


        核心思想:把“退化类型”当作可学习的轻量提示(prompt),在解码阶段动态注入网络,引导特征自适应恢复。
关键模块:
        Prompt Generation Module (PGM):根据输入特征实时生成退化条件提示。
        Prompt Interaction Module (PIM):将提示与图像特征做通道级拼接 + Transformer 融合,实现退化感知恢复。
        整体为 4 级 U 型 Transformer,仅在解码器侧插入 3 个 Prompt Block,即插即用、端到端单阶段训练。

        4.优势以及创新点


        ① 首个把提示学习引入低层视觉,用 <0.5% 的额外参数实现多任务统一。
        ② 无需退化先验或对比学习,训练友好。
        ③ 在 denoising/deraining/dehazing 三大任务 6 个公开测试集上,平均 PSNR 比 AirNet 高 0.86 dB,最高领先 2.64 dB;参数量仅 26 M,推理速度提升 1.7×。
        ④ Prompt Block 架构无关,可一键嵌入任意现有复原网络。

二、算法主要思想与原理详解

PromptIR架构概述
  1. Prompt 架构整体就是在Restormer 的架构基础上在每层采样之间加上了一个Prompt Block模块。
  2. 整体流程
    输入退化图 I ∈ R^(H×W×3)
    → 卷积提取浅层特征 F0
    → 4 级编码器(Transformer Block 数=[4,6,6,8])下采样到 1/8 分辨率
    → 解码器逐级上采样,每两级间插入 1 个 Prompt Block(共 3 个)
    → 输出复原图 Î

        3.Prompt Block 内部机制
        (1) PGM:动态生成提示
        Fl ∈ R^(Hi×Wi×C)
        → GAP → 向量 v ∈ R^C
        → 1×1 Conv 降维 → Softmax 得权重 w ∈ R^N(N=5 个 prompt components)
        → w 对可学习组件 Pc ∈ R^(N×H×W×C) 加权求和 → 输入条件提示 P

        (2) PIM:提示-特征交互
           通道拼接 → 送入标准 Transformer Block:
        – MDTA(Multi-Dconv Head Transposed Attention)
          在通道维计算自注意力,复杂度 O(C^2) 而非 O(HW^2),适合高分辨率。
          输出 Y = Wp·V·Softmax(K·Q/α)+X
        – GDFN(Gated-Dconv Feed-Forward)
          两路 1×1+3×3 深度卷积,一路 GeLU 激活后逐元乘,增强非线性且抑制噪声。
        → 3×3 Conv 输出增强特征 F̂l

三、实验结果

  1. 数据集
  2. 训练:BSD400+WED(denoising)、Rain100L(deraining)、SOTS-indoor(dehazing)合并,共约 7.7 万张128×128块。
  3. 测试:
    – BSD68、Urban100(denoising σ=15,25,50)
    – Rain100L(deraining)
    – SOTS-indoor(dehazing)
  4. 评价指标
    PSNR (dB) 、SSIM 

四.定性试验​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

去雨场景下的性能对比

单任务专用模型再对比:
 去雾:PromptIR 31.31 dB,比 AirNet 高 8.13 dB,比 Restormer 高 0.44 dB。
 去雨:37.04 dB,比 AirNet 高 2.13 dB。
 去噪 σ=50:29.39 dB(Urban100),比 AirNet 高 0.51 dB。 

去噪场景下的性能对比

定量结果(All-in-One 单模型)

全集成修复场景下的性能对比分析
去雾场景下的性能对比
图片去雨比较
图片去噪比较
  1.  去雾场景,PromptIR 彻底去除远处雾幕,建筑边缘无伪影;AirNet 有残留灰色雾墙。
     去雨场景,雨丝密度高时,PromptIR 无条纹残留,车牌文字清晰;AirNet 可见轻微雨痕。
     去噪 σ=50,纹理细节(砖缝、窗户)保持完整,无过度平滑。
  2. 消融实验
图片去雾比较
消融实验

        无 Prompt Block:平均 PSNR 降 0.38 dB。  固定 Prompt:再降 0.19 dB。 Prompt 放在编码器+解码器:性能反而下降 0.92 dB,说明“解码器单侧注入”最佳。  未见噪声水平 σ=35:AirNet 仅 13.64 dB,PromptIR 21.03 dB,差距 7.4 dB,验证泛化能力。

五、结论

PromptIR 首次把提示学习引入图像复原,用极轻量插件实现“一个模型、三种退化、盲设置”下的新 SOTA。未来工作将:

  1. 把 Prompt Block 拓展到更多退化(模糊、低分辨率、混合失真)以逼近“通用复原大模型”
  2. 结合物理退化模型与对抗训练,进一步提升极端场景鲁棒性

Read more

前端组件库:别再重复造轮子了

前端组件库:别再重复造轮子了 毒舌时刻 这组件写得跟拼凑似的,一点都不统一。 各位前端同行,咱们今天聊聊前端组件库。别告诉我你还在手动编写所有组件,那感觉就像在没有工具的情况下盖房子——能盖,但效率低得可怜。 为什么你需要组件库 最近看到一个项目,每个组件都要手动编写,样式不统一,维护困难。我就想问:你是在做组件还是在做重复劳动? 反面教材 // 反面教材:手动编写组件 // Button.jsx import React from 'react'; function Button({ children, onClick }) { return ( <button onClick={onClick} style={{ padding: '10px 20px', backgroundColor: '#007bff', color: '

前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦

前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦

前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦 * 前端人别卷网页了!7天用Electron搞定桌面应用,工资翻倍不是梦 * 瞎扯淡的开场白:为什么你的简历还缺个"桌面端"项目 * 扒一扒Electron这货的底裤 * 套壳浏览器?这么说对也不对 * 除了Electron,这几个备胎也得认识 * 为啥大厂都爱用Electron? * 手把手教你把网页"塞"进桌面图标里 * 脚手架一把梭,别傻傻敲命令 * main.js里的那些破事儿 * preload脚本:别把它当摆设 * 这框架虽好,但这几个坑踩进去就拔不出来 * 打包体积:塞了整个Chrome进去? * 内存占用:低配电脑杀手 * 自动更新:配置起来想砸键盘 * 安全性:别让应用变成筛子 * 实战环节:做个能摸鱼的本地记事本 * 程序崩了别只会重启,这几招能让你少掉几根头发 * 主进程挂了怎么查? * 渲染进程白屏了? * 内存泄漏排查

Java Web web新能源充电系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

Java Web web新能源充电系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

💡实话实说: C有自己的项目库存,不需要找别人拿货再加价。 摘要 随着全球能源结构的转型和新能源汽车的普及,充电基础设施的建设成为推动行业发展的关键环节。传统充电系统存在效率低、管理不便、用户体验差等问题,亟需通过智能化手段进行优化。新能源充电系统通过整合物联网、云计算等技术,实现充电桩的远程监控、智能调度和用户便捷操作,为新能源汽车用户提供高效、安全的充电服务。该系统不仅提升了充电设施的利用率,还通过数据分析优化了能源分配,降低了运营成本。关键词:新能源充电系统、充电桩、物联网、云计算、智能化。 本系统基于SpringBoot2框架构建后端服务,采用Vue3作为前端开发框架,结合MyBatis-Plus实现数据持久化操作,MySQL8.0作为数据库存储数据。系统功能包括用户管理、充电桩管理、订单管理、支付管理和数据分析模块。用户可通过移动端或Web端实时查询充电桩状态、预约充电、在线支付,管理员则能监控设备运行状态、统计运营数据并生成报表。系统通过RESTful API实现前后端分离,确保高内聚低耦合的架构设计,同时利用Redis缓存提升响应速度。关键词:SpringBoo

【2026最新Python+AI入门指南】:从零基础到实操落地,避开90%新手坑

【2026最新Python+AI入门指南】:从零基础到实操落地,避开90%新手坑

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:AI 【前言】 2026年AI技术持续爆发,大模型应用普及、边缘AI轻量化,Python作为AI开发的“第一语言”,成为零基础入门者的最优选择。作为深耕AI领域3年的开发者,我深知“选对方向+找对方法”比盲目跟风更重要。 不同于千篇一律的入门教程,本篇博客结合2026年AI热门趋势,拆解Python+AI零基础入门完整路径,包含热门实操案例、极简代码、避坑指南,附带流程图、表格,全程贴合新手节奏,帮你少走弯路、快速上手。 适合人群:零基础编程小白、转行AI职场人、非计算机专业大学生;核心收获:掌握Python必备语法、了解AI热门方向、实现2个AI入门案例、获取全套学习工具资料。 文章目录: * 一、先搞懂:为什么2026年入门AI,必须先学Python? * 1. 生态碾压:AI开发“