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没必要,那就相当于作者什么也没做。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/201893.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

fastadmin 如何引入自己的js

在需要的界面中&#xff1a;如何实例说明&#xff1a; 中<script> function zhuruJs(url) { let temp document.createElement( script ); temp.setAttribute( type, text/javascript" );temp.src urL; document.head . appendChild(temp); zhuruJs(location…

智能优化算法应用:基于哈里斯鹰算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于哈里斯鹰算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于哈里斯鹰算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.哈里斯鹰算法4.实验参数设定5.算法结果6.参考…

【Hydro】SG滤波器纯numpy实现

目录 说明WIKI示例滑动平均卷积系数的推导第一点和最后点的处理scipy.signal中的savgol_filter纯numpy实现的savgol_filterCPP实现的savgol_filter参考文献说明 Savitzky-Golay滤波器(S-G滤波器)是一种在时域和频域上同时进行的滤波方法,它通过局部多项式拟合来平滑信号。这…

ExoPlayer - Failed to initialize OMX.qcom.video.decoder.avc

人莫鉴于流水而鉴于止水&#xff0c;唯止能止众止 1. 背景 使用ExoPlayer&#xff0c;我不信你没遇到过这个问题&#xff1a; java.lang.IllegalArgumentException: Failed to initialize OMX.qcom.video.decoder.avc 详细内容如下图所示&#xff1a; 2. MediaCodec(解码器) …

Android控件全解手册 - 多语言切换完美解决方案(兼容7.0以上版本)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

MySQL-函数

一、统计函数 CREATE TABLE student (id INT NOT NULL DEFAULT 1,name varchar(20) not null default ,chinese float not null default 0.0,english float not null default 0.0,math float not null default 0.0 );insert into student values (1,曹操,77,89,85);insert int…

Python内置函数与标准库函数的详细解读

一、内置函数与标准库函数的区分 Python 解释器自带的函数叫做内置函数&#xff0c;这些函数可以直接使用&#xff0c;不需要导入某个模块。 Python 解释器也是一个程序&#xff0c;它给用户提供了一些常用功能&#xff0c;并给它们起了独一无二的名字&#xff0c;这些常用功能…

二叉树leetcode(求二叉树深度问题)

today我们来练习三道leetcode上的有关于二叉树的题目&#xff0c;都是一些基础的二叉树题目&#xff0c;那让我们一起来学习一下吧。 https://leetcode.cn/problems/maximum-depth-of-binary-tree/submissions/ 看题目描述是让我们来求出二叉树的深度&#xff0c;我们以第一个父…

【LeetCode刷题】--90.子集II

90.子集II class Solution {public List<List<Integer>> subsetsWithDup(int[] nums) {List<List<Integer>> ans new ArrayList<>();List<Integer> list new ArrayList<>();//排序后便于去重Arrays.sort(nums);dfs(0,nums,ans,lis…

Docker的数据持久化;Docker网络;Dockerfile编写

Docker的数据持久化&#xff1b;Docker网络&#xff1b;Dockerfile编写&#xff1b; 文章目录 Docker的数据持久化&#xff1b;Docker网络&#xff1b;Dockerfile编写&#xff1b;**Docker的数据持久化**1&#xff09;将本地目录映射到容器里2&#xff09;数据卷3&#xff09;将…

聚类分析例题 (多元统计分析期末复习)

例一 动态聚类&#xff0c;K-means法&#xff0c;随机选取凝聚点&#xff08;题目直接给出&#xff09; 已知5个样品的观测值为&#xff1a;1&#xff0c;4&#xff0c;5&#xff0c;7&#xff0c;11。试用K均值法分为两类(凝聚点分别取1&#xff0c;4与1&#xff0c;11) 解&…

JavaScript编程进阶 – Return语句

JavaScript编程进阶 – Return语句 JavaScript Programming Advanced – Return Statement By JacksonML 就像人们习惯的函数一样&#xff0c;总觉得在函数体最后需要一个return语句&#xff0c;标志着函数的结束,就像下面这个函数 theFunc() 那样。 function theFunc() { re…

【Openstack Train安装】八、placement安装

Placement 肩负着这样的历史使命&#xff0c;最早在 Newton 版本被引入到 openstack/nova repo&#xff0c;以 API 的形式进行孵化&#xff0c;所以也经常被称呼为 Placement API。它参与到 nova-scheduler 选择目标主机的调度流程中&#xff0c;负责跟踪记录 Resource Provide…

Vue diff 算法探秘:如何实现快速渲染

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

思维模型 达维多定律

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。持续创新&#xff0c;引领市场潮流。 1 达维多定律的应用 1.1 达维多定律应用之吉列公司&#xff1a;不断创新的刀片领导者 吉列公司是一家以剃须刀片而闻名的公司。自 1901 年推出首款安…

高级IO—poll,epoll,reactor

高级IO—poll,epoll,reactor 文章目录 高级IO—poll,epoll,reactorpoll函数poll函数接口poll服务器 epollepoll的系统调用epoll_createepoll_ctlepoll_wait epoll的工作原理epoll的工作方式水平触发边缘触发 epoll服务器 reactor poll函数 poll函数是一个用于多路复用的系统调…

C++中的类型转换和异常

C类型转换 类型转换(cast) 是将一种数据类型转换成另一种数据类型。例如&#xff0c;如果将一个整型 值赋给一个浮点类型的变量&#xff0c;编译器会暗地里将其转换成浮点类型。 转换是非常有用的&#xff0c;但是它也会带来一些问题&#xff0c;比如在转换指针时&#xff0c…

【linux防火墙】iptables的四表五链以及实操应用

目录 一、防火墙的基本认识 浅提一下iptables 二、防火墙的分类 三、netfilter中的五个勾子函数和报文流向 四、netfilter/iptables的简介 五、iptables的原理讲解和四表五链 内核中数据包传输的过程&#xff1a; 六、iptables iptables的语法&#xff1a; 七、实操 七…

二.运算符

运算符 1.算术运算符2.比较运算符3.逻辑运算符 1.算术运算符 算数运算符主要用于数学运算&#xff0c;其可以连接运算符前后的两个数值或表达式&#xff0c;对数值或表达式进行 - * / 和 取模%运算 1.加减法运算符 mysql> SELECT 100,100 0,100 - 0,100 50,100 50 - …

RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树节点实验

** 🚀返回专栏总目录 文章目录 一、获取获取设备树节点二、驱动程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过OF函数获取设备树节点实验 一、获取获取设备树节点 在 Linux 内核源码中提供了一系列的 of 操作函数来帮助我们获取到设备树中编写的…