论文阅读 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

Clawdbot(Moltbot)源码部署全实测:从环境搭建到 WebChat 验证,避坑指南收好

Clawdbot(Moltbot)源码部署全实测:从环境搭建到 WebChat 验证,避坑指南收好

一、为啥折腾 Clawdbot? 最近刷技术圈总刷到 Clawdbot(后来也叫 Moltbot),说是能搭私人 AI 助手,支持 WhatsApp、Telegram 这些常用通道,还能跑在自己设备上,不用依赖第三方服务 —— 想着拉下来测试一下功能,顺便研究一下其源码的实现。 于是拉上 GitHub 仓库https://github.com/openclaw/openclaw,打算从源码部署试试,过程里踩了不少坑,干脆整理成记录,给同样想折腾的朋友避避坑。 二、源码部署前的准备:Windows 环境优先选 WSL2 一开始想直接用 Windows CMD 部署,结果装依赖时各种报错,查仓库文档才发现 Windows 推荐用 WSL2(Ubuntu/Debian 镜像就行),后续操作全在 WSL2 里完成: 1.

基于C++11手撸前端Promise

基于C++11手撸前端Promise

文章导航 * 引言 * 前端Promise的应用与优势 * 常见应用场景 * 并发请求 * Promise 解决的问题 * 手写 C++ Promise 实现 * 类结构与成员变量 * 构造函数 * resolve 方法 * reject 方法 * then 方法 * onCatch 方法 * 链式调用 * 使用示例 * `std::promise` 与 `CProimse` 对比 * 1. 基础功能对比 * 2. 实现细节对比 * (1) 状态管理 * (2) 回调注册与执行 * (3) 异步支持 * (4) 链式调用 * 3. 代码示例对比 * (1) `CProimse` 示例 * (2) `std::promise` 示例 * 4.

前端人拿不到offer,九成是不知道这个新风向

今年大部分互联网公司面试的题目已经开始小部分八股文,大部分场景题了,公司需要的不仅是知识扎实,而且招进来就能上手项目的面试者… 2026最新高频场景题 * 1. 请求失败会弹出一个toast,如何保证批量请求失败,只弹出一个toast * 2. 如何减少项目里面if-else * 3. babel-runtime 作用是啥 * 4. 如何实现预览PDF文件 * 5. 如何在划词选择的文本上添加右键菜单(划词:鼠标滑动选择一组字符,对组字符进行操作) * 6. 富文本里面,是如何做到划词的(鼠标滑动选择一组字符,对组字符进行操作)? * 7. 如何做好前端监控方案 * 8. 如何标准化处理线上用户反馈的问题 * 9. px如何转为rem * 10. 浏览器有同源策略,但是为何 cdn 请求资源的时候不会有 跨域限制 * 11. cookie可以实现不同域共享吗 * 12. axios是否可以取消请求 * 13. 前端如何实现折叠面板效果? * 14. dom里面,如何判定a元素是否是b元素的子元 * 15. 判断一个对象是否为空,包含了其原型链上是否有自

Qwen3-VL-WEBUI物流包裹识别:分拣系统集成实战教程

Qwen3-VL-WEBUI物流包裹识别:分拣系统集成实战教程 1. 引言:智能分拣系统的视觉革命 随着电商和快递行业的迅猛发展,传统人工分拣方式已难以满足高效率、低错误率的运营需求。自动化分拣系统正逐步成为物流中心的核心基础设施。然而,面对复杂多变的包裹标签、模糊图像、倾斜拍摄以及多语言信息,传统OCR与规则引擎往往力不从心。 在此背景下,Qwen3-VL-WEBUI 的出现为物流智能化提供了全新可能。作为阿里开源的视觉-语言大模型前端交互平台,它内置了强大的 Qwen3-VL-4B-Instruct 模型,具备卓越的图文理解、空间感知与多模态推理能力,特别适用于非结构化图像中提取关键信息的任务——如包裹上的收件人地址、条形码、重量标识等。 本文将带你完成一次完整的工程实践:如何基于 Qwen3-VL-WEBUI 构建一个可落地的物流包裹自动识别与分类系统,并集成到现有分拣流水线中,实现“看图识包、智能归类”的闭环流程。 2. 技术选型与方案设计 2.1 为什么选择 Qwen3-VL-WEBUI? 在众多视觉语言模型(VLM)中,我们选择 Qwen3-VL-WEBU