CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION
CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION (Paper reading)
Ziwei Luo, Uppsala University, ICLR under review(6663), Cited:None, Stars: 350+, Code, Paper.
1. 前言
像CLIP这样的视觉语言模型已经显示出对零样本或无标签预测的各种下游任务的巨大影响。然而,当涉及到图像恢复等低水平视觉时,由于输入损坏,它们的性能会急剧下降。在本文中,我们提出了一种退化感知视觉语言模型(DA-CLIP),以更好地将预训练的视觉语言模型转移到低级视觉任务中,作为图像恢复的多任务框架。更具体地说,DA-CLIP训练一个额外的控制器,该控制器调整固定的CLIP图像编码器以预测高质量的特征嵌入。通过交叉关注将嵌入集成到图像恢复网络中,我们能够引导模型学习高保真度图像重建。控制器本身还将输出与输入的实际损坏相匹配的退化特征,从而为不同的退化类型生成自然分类器。此外,我们构建了一个具有合成字幕的混合退化数据集,用于DA-CLIP训练。我们的方法在退化特定和统一的图像恢复任务上都取得了最先进的性能,显示了用大规模预训练的视觉语言模型促进图像恢复的有前途的方向。
2. 整体思想
ALL in one的图像复原模型,可以用分类器对不同输入图像做分类,然后分类得到的一些输出作为条件来指导One这个模型对特定类型任务复原。这篇文章的思想也是一样的。他们使用类似于ControlNet的方法,对CLIP做微调,使CLIP可以根据输入LQ图像,得到HQ的内容编码和预测LQ的降质类型编码。这两个编码作为其他模型的条件实现All in one。思想是很老旧的,方法也是ControlNet的,但是确实work。具体的其他疑问见第6小节。
3. 介绍

现有的大规模预训练的视觉语言模型(VLM)对图像恢复(IR)等low-level视觉任务的影响有限,可能是因为它们没有捕捉到“模糊”和“噪声”等图像退化类型之间的细粒度差异。因此,现有的VLM经常使图像特征与退化文本不对齐。这并不奇怪,考虑到VLM通常在不同的网络规模数据集上进行训练,而大多数图像恢复模型是在相对较小的数据集上训练的,这些数据集是为特定任务策划的,没有相应的图像-文本对。
传统图像恢复方法通常只是简单地学习逐像素生成图像,而不利用任务知识,这通常需要对特定退化类型的同一模型进行重复训练。然而,最近的一项工作集中在统一图像恢复上,在混合退化数据集上训练单个模型,并隐式地对恢复过程中的退化类型进行分类。虽然结果令人印象深刻,但它们仍然局限于少数退化类型和与之相关的特定数据集。特别是,它们没有利用VLM中嵌入的大量信息。
在本文中,我们将大规模预训练的视觉语言模型CLIP与图像恢复网络相结合,提出了一个可应用于退化特定和统一图像恢复问题的多任务框架。具体来说,为了解决损坏的输入和干净的captions之间的特征不匹配问题,我们提出了一种图像控制器(Image Controller),该控制器调整VLM的图像编码器,以输出与干净的caption对齐的高质量(HQ)内容嵌入。同时,控制器本身也预测退化嵌入以匹配真实退化类型。这种新的框架,我们称之为退化感知CLIP(DA-CLIP),将VLM的人类级知识融入到通用网络中,从而提高图像恢复性能并实现统一的图像恢复。
为了训练DA-CLIP从低质量(LQ)输入中学习高质量特征和退化类型,我们为十个不同的图像恢复任务构建了一个大型混合退化数据集。具体来说,我们使用BLIP,一个自举的视觉语言框架,为所有HQ图像生成合成字幕,然后将LQ图像与字幕和相应的退化类型匹配为图像-文本退化对。一旦经过训练,我们的DA-CLIP就可以准确地对十种不同的退化类型进行分类,并可以很容易地集成到现有的恢复模型中,帮助在不同的退化中产生视觉上吸引人的结果,如图1所示。
4. 方法

4.1 退化感知CLIP( DA-CLIP)
我们方法的核心是控制预训练的CLIP模型,以从损坏的图像中输出高质量的图像特征,同时预测退化类型。如图2所示,图像内容嵌入 e c I e^I_c ecI与干净的标题嵌入 e c T e^T_c ecT相匹配。此外,由控制器预测的图像退化嵌入 e d I e^I_d edI指定输入的损坏类型,即来自文本编码器的相应退化嵌入 e d T e^T_d edT。然后可以将这些特征集成到其他图像恢复模型中,以提高它们的性能。
我们原本的CLIP是清晰图像匹配本文,但是你现在输入的是损坏图像,这就会导致你的潜在图像内容无法正确匹配GT文本,这里用Image Controller对CLIP的图像编码器微调,使之适应损坏图像。此外,你CLIP的额外输入还有一个降质类型,这个是Image Controller来额外预测的。
4.2 Image Controller

图像控制器是CLIP图像编码器的副本,但使用一些零初始化连接进行包装,以向编码器添加控制。它操纵所有编码器块的输出以控制图像编码器的预测。在本文中,我们使用ViT作为编码器和控制器的默认主干。图3(a)说明了控制过程,其中控制器的输出由两部分组成:图像退化嵌入 e d I e_d^I edI和隐藏控件 h c h_c hc。注意,后者包含来自变换器块的所有输出,这些输出随后被添加到相应的编码器块以控制它们的预测。变换器块之间的连接是简单的密集神经网络,所有参数都初始化为零,这在训练过程中逐渐影响图像编码器。由于与VLM中使用的网络规模数据集相比,我们的训练数据集很小,因此这种控制策略在保持原始图像编码器能力的同时减轻了过拟合。
我们冻结预训练的CLIP模型的所有权重,只微调图像控制器。为了使退化嵌入空间具有判别性和良好的分离性,我们使用对比目标来学习嵌入匹配过程。设N表示训练批中成对嵌入(来自文本编码器和图像编码器/控制器)的数量。对比损失定义为:

然后为了优化内容和降质嵌入,我们使用以下共同目标:
L c ( w ) = L c o n ( e c I , e c T ; w ) + L c o n ( e d I , e d T ; w ) L_c(w) = L_{con}(e^I_c, e^T_c;w) + L_{con}(e^I_d, e^T_d;w) Lc(w)=Lcon(ecI,ecT;w)+Lcon(edI,edT;w)
这个损失函数的意思就是,先让CLIP的文本编码器对GT描述和降质类型编码得到 e c T e_c^T ecT和 e d T e_d^T edT,然后图二中的输入LQ得到输出 e c I e_c^I ecI和 e d I e_d^I edI。他们做对比学习进行对齐,就可以实验LQ输入匹配HQ的captions和types的编码。
4.3 DA-CLIP用于图像复原

简单介绍下IR- SDE,它是一个专用于复原的扩散模型,对于不同任务都需要从头训练一个特定的模型。主要思想和这篇文章一模一样,但是IR- SDE更早点。
我们使用IR-SDE(如上图)作为图像恢复的基本框架。它采用了类似于DDPM的U-Net架构,但删除了所有自注意层。为了将干净的内容嵌入注入扩散过程,我们引入了一种交叉注意力机制,从预先训练的VLM中学习语义指导。考虑到图像恢复任务中输入大小的变化以及将注意力应用于高分辨率特征的成本的增加,为了提高样本效率,我们只在U-Net的底部块中使用交叉注意力。
另一方面,预测的退化嵌入对于统一图像恢复是有用的,其中目标是用单个模型处理多种退化类型的低质量图像。如图1所示,我们的DA-CLIP准确地对不同数据集和各种退化类型的退化进行了分类,这对于统一的图像恢复至关重要。此外,为了利用这些退化嵌入,我们将它们与即时学习模块相结合,以进一步改进结果,如图3(b)所示。这里的prompt应该就是content embedding。
5. 实验
·数据集的选择

·benchmark数据集上的对比

·可视化实验



6. 讨论
这篇文章好像就做了这么个事:找到一个图像复原的模型,LQ编码并加在crossattn中,从头训练这个模型。审稿意见请看这里。
CLIP是否有必要?或者说直接用分类器是否可以?或者content有用吗?

这是作者的消融实验,其实Content对性能影响不大我感觉,因为你的模型只需要根据不同的conditions调用参数完成特定任务就可以了,degradation embedding已经可以做到分类不同任务了,而且你的模型以及不是生成模型了,content确实是多余,在消融实验中LPIPS和FID的提升简直微不足道。此外,degradation embedding是否有必要呢?分类器不可以吗?如果用CLIP没必要,那就相当于作者什么也没做。。
相关文章:
CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION
CONTROLLING VISION-LANGUAGE MODELS FOR MULTI-TASK IMAGE RESTORATION (Paper reading) Ziwei Luo, Uppsala University, ICLR under review(6663), Cited:None, Stars: 350, Code, Paper. 1. 前言 像CLIP这样的视觉语言模型已经显示出对零样本或无标签预测的各种下游任务…...
HarmonyOS应用开发——页面
我们将对于多页面以及更多有趣的功能展开叙述,这次我们对于 HarmonyOS 的很多有趣常用组件并引出一些其他概念以及解决方案、页面跳转传值、生命周期、启动模式(UiAbility),样式的书写、状态管理以及动画等方面进行探讨 页面之间…...
Java流Stream使用详解(练习)
练习 第一题 数据过滤 定义一个集合,并添加一些整数1,2,3,4,5,6,7,8,9,10过滤奇数,只留下偶数,并将结果保存起来 import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors…...
请介绍一下MySQL的存储引擎及其特点
问题:请介绍一下MySQL的存储引擎及其特点。 回答: MySQL是一个开源的关系型数据库管理系统,它支持多种存储引擎,每个存储引擎都有其自身的特点和适用场景。下面是对MySQL常见存储引擎的简要介绍: InnoDB: …...
Python---魔术方法
1、什么是魔术方法 在Python中,__xxx__()的函数叫做魔法方法,指的是具有特殊功能的函数。 2、__init__()方法(初始化方法或构造方法) 思考:人的姓名、年龄等信息都是与生俱来的属性,可不可以在生产过程中就赋予这些属性呢&…...
手把手教你注册意大利商标
在当今全球商业环境中,拥有一个独特的商标可以为企业在市场竞争中提供重要优势。商标作为品牌形象的核心,有助于吸引潜在客户,提升品牌价值,增加客户忠诚度。在意大利,商标注册同样具有重要意义,它能为企业…...
pandas详细笔记
一:什么是Pandas from matplotlib import pyplot import numpy as np import pandas as pdarange np.arange(1, 10, 2) series pd.Series(arange,indexlist("ABCDE")) print(series)二:索引 三:切片 位置索引切片(左闭…...
win11安装(未完待续)
学习补丁 test.bat 运行后需要重启 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms kms.03k.org slmgr /ato 文件扩展名 主题 性能设置 开始按钮靠左 任务栏对齐方式-靠左 必备软件 f.lux redshift 360管家 驱动精灵 edge c*lash(v2*ray不支持w…...
python之记录程序运行时长工具
python之记录程序运行时长工具 废话不多话,上代码 from datetime import datetime, timedelta import timestart_time datetime.now()while True:current_time datetime.now()elapsed_time current_time - start_timeformatted_time str(elapsed_time).split(…...
.Net core 6.0 升8.0
1 Update Visual Studio 2 3 用Nutget 更新不同套件版本 更新后结果如下:...
MacDroid Pro for Mac – 安卓设备文件传输助手,实现无缝连接与传输!
想要在Mac电脑上轻松管理和传输您的安卓设备文件吗?MacDroid Pro for Mac 是您的最佳选择!这款强大的文件传输助手可以让您在Mac上与安卓设备之间实现快速、方便的文件传输。 MacDroid Pro for Mac 提供了简单易用的界面,让您能够直接在Mac上…...
【EtherCAT详解】基于Wireshark的EtherCAT帧结构解析
写在前面 EtherCAT的报文比较繁琐,且一些参考书籍错误较多,且晦涩难懂,对于初学者,很难快速的入门。本文适用于有一定基础的研究者,如对报文有一些研究、对canopen协议有一定了解、并且对TwinCAT有了解的研究者。当然,对于初学者来说,也是很好的引导,少走很多弯路。本…...
C语言之程序的组成和元素格式
目录 关键字 运算符 标识符 姓名和标识符 分隔符 常量和字符串常量 自由的书写格式 书写限制 连接相邻的字符串常量 缩进 本节我们来学习程序的各组成元素(关键字、运算符等)和格式相关的内容。 关键字 在C语言中,相if和else这样的标识…...
HalconDotNet.HTupleAccessException:Index out of range
原因可能是没有生成hv_Qx的值,我这里是没有生成该值的区域。...
Delphi-线程
碰到身份证阅读器项目,直接放进trimmer里面读卡,导致主页面卡顿,就打算放进子线程里试一下,就有了这个尝试。 1.创建线程文件 直接点击左上角file新建other,delphi有自带的模版 这个勾选了,就是他会给你…...
WeakMap
WeakMap简介 作为es6一种新的数据结构,他是一种键值对的集合。与Map最大的区别有两个 1. 是其中的键必须是对象或非全局注册的符号。 全局注册的符号 const s1 Symbol.for(mySymbol) 非全局注册的符号 const s1 Symbol(mySymbol)了解Symbol.for 2. 不会创建对它…...
获取网络ppt资源
背景: 某度上有很多优质的PPT资源和文档资源,但是大多数需要付费才能获取。对于一些经济有限的用户来说,这无疑是个遗憾,因为我们更倾向于以免费的方式获取所需资源。 解决方案: 然而,幸运的是&am…...
从0到1构建智能分布式大数据爬虫系统
文章目录 1. 写在前面2. 数据获取挑战3. 基础架构4. 爬取管理5. 数据采集6. 增量与去重设计 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐…...
C语言速通笔记(41-62)
40.十六进制转义字符:\x6d才是合法的,前面的0不能写,而且 x 是小写 41.字符型和整型是近亲:两个具有很大的相似之处,所有的字符都有一个它对应的整形数 据的 ASCLL 的数值。如 char a 65 % …...
Python 调用企业微信群机器人发送消息及文件
Python 操作企业微信群机器人。 企业微信群创建机器人 : 安装 requests json : pip install requests pip install json发送消息(markdown) import requests import json# 企业微信机器人发送文字 def send_markdown (message, …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
