关注公众号,发现CV技术之美

本文分享论文『CLIP-Adapter: Better Vision-Language Models with Feature Adapters』,由上海AI Lab&罗格斯大学&港中文联合提出《CLIP-Adapter》,用极简方式微调CLIP中的最少参数!

详细信息如下:

  • 论文链接:https://arxiv.org/abs/2110.04544

  • 项目链接:https://github.com/gaopengcuhk/clip-adapter

导言:

大规模对比视觉语言预训练在视觉表征学习方面取得了显著进展。与由固定的离散标签集训练的传统视觉系统不同,最近的工作引入了一种新的范式,以直接学习在开放词汇表环境中将图像与原始文本对齐。在下游任务中,使用精心选择的文本提示进行Zero-Shot预测。为了避免prompt工程,上下文优化被提出用来学习连续向量作为任务特定的prompt,并使用few-shot训练样本。

在本文中,作者展示了除了prompt tuning之外,还有一种替代方法可以实现更好的视觉语言模型。prompt tuning用于文本输入,但作者提出CLIP-Adapter在视觉或语言分支上使用特征适配器进行微调。

具体而言,CLIP-Adapter采用额外的瓶颈层来学习新特征,并与原始预训练特征进行残差样式的特征混合。因此,CLIP-Adapter在保持简单设计的同时,能够超越上下文优化。各种视觉分类任务的实验和广泛消融研究证明了本文方法的有效性。

      01      

Motivation

视觉理解任务,如分类、目标检测和语义分割,在更好的架构设计和大规模高质量的数据集上得到了显著改进。然而,为每个视觉任务收集大规模高质量数据集是劳动密集型的,而且成本太高,无法扩展。为了解决这个问题,“预训练-微调”范式,即对大规模数据集(如ImageNet)进行预训练,然后对各种下游任务进行网络调整,已在视觉领域广泛采用。然而,这些方法仍然需要大量标注,以便对许多下游任务进行微调。

最近,对比语言图像预训练(CLIP)被提出用于解决视觉任务,通过利用大规模噪声图像-文本对进行对比学习。通过将视觉类别作为prompt放入合适的手工制作模板中,它在各种视觉分类任务中实现了不错的表现,而无需任何标注(即zero-shot迁移)。

尽管基于prompt的zero-shot迁移学习表现出良好的性能,但设计好的prompt仍然是一个需要大量时间和领域知识的工程问题。为了解决这个问题,上下文优化(CoOp)进一步提出学习连续的soft prompt,并使用很少的zero-shot样本来替换精心选择的hard prompt。与zero-shot CLIP和linear probe CLIP设置相比,CoOp在zero-shot分类方面带来了显著的改进,显示了在大规模预训练视觉语言模型上进行快速调整的潜力。

在本文中,作者提出了一种不同的方法,用特征适配器而不是prompt tuning来更好地适应视觉语言模型。与执行soft prompt优化的CoOp不同,本文只需对轻量级附加特征适配器进行微调。由于CLIP的过度参数化和缺乏足够的训练样本,简单的网络调整会导致对特定数据集的过拟合。

受参数有效迁移学习中适配器模块的启发,作者提出了CLIP-Adapter,它只调整少量额外权重,而不是优化CLIP的所有参数。CLIPAdapter采用了一种轻量级瓶颈架构,通过减少参数数量来防止few-shot learning的潜在过拟合问题。同时,CLIP Adapter与之前的方法在两个方面不同:

  1. CLIP Adapter仅在视觉或语言主干的最后一层之后添加了两个额外的线性层;相反,原始适配器模块插入到语言主干的所有层中;

  2. 此外,CLIP Adapter通过残差连接将原始Zero-Shot视觉或语言嵌入与相应的网络调整特征混合

通过这种“残差样式混合”,CLIP Adapter可以同时利用原始CLIP中存储的知识来自Few-Shot训练样本的新学习的知识

      02      

方法

上图展示了不同视觉分类结构的对比。

2.1 Classifier Weight Generation for Few-Shot Learning

首先回顾一下使用深度神经网络进行图像分类的基本框架:给定一幅图像,其中H和W分别表示图像的高度和宽度。由基本组件(如CNN、Transformer或两者的混合)级联而成的神经网络主干输入,并将其转换为特征,其中D表示特征维度。

为了进行分类,将图像特征向量f乘以分类权重矩阵,其中K表示要分类的类别数。在矩阵相乘之后,可以得到一个K维logit。Softmax函数用于将logit转换为K个类别上概率向量,表示如下:

式中,τ表示Softmax的温度参数,表示i类的权重向量,表示i类的概率。

使用少量样本从无到有地将主干和分类器在一起训练,容易导致过拟合,并且可能会在测试集上出现严重的性能下降。

通常,few-shot learning范式是首先在大规模数据集上预训练主干,然后通过直接进行Zero-shot预测或进一步微调few-shot样本,将所学知识转移到下游任务。

CLIP遵循Zero-shot迁移风格——它首先通过对大规模噪声图像-文本对的对比学习对视觉主干和文本编码器进行预训练,然后在预训练后,CLIP直接执行图像分类,无需任何网络调整。

给定的K个类别的图像分类下游数据集,CLIP构造将每个类别名称放入预先定义的hard prompt模板H中。然后,语言特征提取器将生成的prompt编码为分类器权重,表示如下:

CoOp采用连续提示,而不是手工制作的hard prompt。CoOp创建一个随机初始化的可学习soft token列表,其中L表示soft token序列的长度。然后将soft token序列S连接到每个类名,从而形成提示。表示如下

对于CLIP和CoOp,基于生成的分类权重,其中,可以计算第i类的预测概率。

2.2 CLIP-Adapter

与CoOp的prompt tuning不同,本文提供了一个替代方法,通过微调其他特征适配器,在zero-shot图像分类上实现更好的视觉语言模型。作者认为,由于大量的参数和缺乏训练样本,以前广泛采用的“预训练-微调”范式在few-shot设置下无法调整整个CLIP主干网络。

因此,作者提出了CLIP Adapter,它只在CLIP的语言和图像分支上附加少量可学习的瓶颈线性层,同时在few-shot微调过程中保持原始片段主干冻结。然而,在少数few-shot样本中,使用附加层进行的简单微调可能仍然会陷入过拟合。为了解决过拟合问题并提高CLIP Adapter的健壮性,作者进一步采用残差连接来动态地将微调后的知识与CLIP主干中的原始知识混合。

具体而言,给定输入图像和一组类别的自然语言名称,基于上面的公式计算原始CLIP主干的图像特征f和分类权重W。然后,将两个可学习的特征适配器和分别集成到网络中用于变换f和W中,每个适配器都包含两层线性变换。

为了避免忘记由预训练CLIP编码的原始知识,作者对特征适配器采用了残差连接。使用两个常量值α和β作为“残差比”,以帮助调整保持原始知识的程度,从而获得更好的性能。特征适配器可以表示如下:

通过网络微调获取的新知识通过残差连接与原始特征加在一起:

获得新的图像特征和分类器权重,然后使用之前的公式可以计算出新的类别概率向量,并通过选择概率最高的类来预测图像类别:。

在few-shot训练中,使用交叉熵损失优化和的权重:

其中N是训练样本的总数;如果i等于ground-truth类别标签,则,否则;是第i类的预测概率;表示所有可学习的参数。

2.3 Variants of CLIP-Adapter

本文的CLIP适配器有三种结构变体:

  1. 仅微调图像分支的特征适配器,而保持文本分支冻结;

  2. 仅微调文本分支的特征适配器,同时保持图像分支冻结;

  3. 同时微调CLIP主干的图像和文本分支

在超参数α和β方面,作者观察到不同的数据集具有不同的最优α和β值。手动选择超参数既耗时又费力。因此,作者还通过将α和β设置为可学习的参数,以可微分的方式探索它们的学习。通过这种方式,可以通过超网络Q:,从视觉特征或分类权重动态预测α和β。

      03      

实验

3.1 Few-Shot Learning

上图展示了在11个数据集上few-shot的实验结果,可以看出,CLIP-Adapter明显优于其他baseline方法。

上图展示了本文方法相比于zero-shot CLIP的性能提升幅度。

上表展示了不同CLIP Adapter变体的性能对比。

3.2 Visualization of Manifold

上图展示了在EuroSAT数据集上对CLIP、CoOp、CLIP Adapter(无残差连接)和CLIP Adapter(有残差连接)进行训练后,使用t-SNE对其manifold进行可视化的结果。可以看出,CLIP Adapter更有效地检测来自同一类的图像manifold之间的相似性。

3.3 Ablation Studies

3.3.1 Dimension of Bottleneck Layer

上表展示了DTD和ImageNet两个数据集上,不同bottleneck layers隐藏层维度的实验结果。

3.3.2 Residual Ratio α

上表展示了不同残差比的实验结果。

      04      

总结

作者将CLIP Adapter作为基于prompt的方法的一种替代方法,用于few-shot图像分类。CLIP Adapter仅通过微调少量额外的瓶颈层,就恢复了“预训练-微调”范式。为了进一步提高泛化能力,作者采用了由残差比率参数化的残差连接,将zero-shot知识与新的自适应特征动态融合。

根据实验结果,在不同的few-shot设置下,CLIP Adapter在11个图像分类数据集上的表现优于baseline。广泛的消融实验研究证实了本文方法的设计,并证明了CLIP Adapter学习了更好的特征。

▊ 作者简介

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎/公众号:FightingCV

END

加入「计算机视觉交流群

​上海AI Lab罗格斯大学港中文提出CLIP-Adapter,用极简方式微调CLIP中的最少参数!...相关推荐

  1. 腾讯AI Lab联合清华,港中文长文解析图深度学习的历史、最新进展到应用

    本文作者: 腾讯:荣钰.徐挺洋.黄俊洲:清华大学:黄文炳:香港中文大学:程鸿 前言 人工智能领域近几年历经了突飞猛进的发展.图像.视频.游戏博弈.自然语言处理.金融等大数据分析领域都实现了跨越式的进步 ...

  2. 腾讯AI Lab联合清华、港中文带来万字干货解析:图深度学习的历史、最新进展和应用

    作者: 腾讯:荣钰.徐挺洋.黄俊洲:清华大学:黄文炳:香港中文大学:程鸿 前言 人工智能领域近几年历经了突飞猛进的发展.图像.视频.游戏博弈.自然语言处理.金融等大数据分析领域都实现了跨越式的进步并催 ...

  3. 博士申请 | 美国罗格斯大学王灏助理教授招收机器学习方向博士生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 罗格斯大学 罗格斯大学(Rutgers, The State Univer ...

  4. 罗格斯大学电气与计算机工程专业怎么样,美国电子工程排名 - 电子计算机工程的研究生教育,特别是偏向电路设计方向,请问是美国罗格斯大学新布朗斯维克校区好还是清华...

    美国电子工程排名 - 电子计算机工程的研究生教育,特别是偏向电路设计方向,请问是美国罗格斯大学新布朗斯维克校区好还是清华,1. 电子计算机工程的研究生教育,特别是偏向电路设计方向,请问是美国罗格斯大学 ...

  5. 罗格斯大学电子与计算机系排名,罗格斯大学美国大学排名及专业排名汇总(USNEWS美国大学排名版)...

    [罗格斯大学]2019年USNEWS美国大学综合排名第115名 [罗格斯大学]2018年USNEWS美国大学综合排名第69名 [罗格斯大学]2017年USNEWS美国大学综合排名第135名 [罗格斯大 ...

  6. 罗格斯的计算机科学,Rutgers的CS「罗格斯大学计算机科学系」

    罗格斯大学计算机科学系设于文理学院下,研究生开设有2个学位项目,分别是: 计算机科学理学硕士(Master of Science in Computer Science):为期2-3年,共计修读30个 ...

  7. 全能型AI!用通用预训练感知模型处理多模态多任务!商汤西交港中文提出:Uni-Perceiver...

    关注公众号,发现CV技术之美 本文分享论文『Uni-Perceiver: Pre-training Unified Architecture for Generic Perception for Zer ...

  8. 国科大港中文提出带视觉语言验证和迭代推理的Visual Grounding框架,性能SOTA,代码已开源!(CVPR2022)...

    关注公众号,发现CV技术之美 本文分享 CVPR 2022 的一篇论文『Improving features Visual Grounding with Visual-Linguistic Verifi ...

  9. 《AI极简经济学》书中的精髓:人工智能的发展会给社会带来什么样的影响?人工智能会取代人们的工作吗?

    <AI极简经济学>书中的精髓:人工智能的发展会给社会带来什么样的影响?人工智能会取代人们的工作吗? 说到人工智能,很多人觉得这是一件遥远的事情.但实际上,人工智能已经逐渐从高科技创新领域渗 ...

最新文章

  1. Oracle访问远程服务器的数据库
  2. oracle分页查询数据(收藏)
  3. hdfs restful API:httpfs与webhdfs的简单使用
  4. 【JavaWeb】Response请求转发与重定向辨析
  5. 常用的后端性能优化六种方式:缓存化+服务化+异步化等
  6. videojs插件使用
  7. windows phone 页面导航(6)
  8. 【英语学习】【Level 08】U05 Better option L1 Message sent
  9. mysql存储过程类_mysql存储过程类
  10. Android ANT多渠道打包
  11. 解决“Pip - Fatal error in launcher: Unable to create process using... ”
  12. kotlin-中文免费文档(后台,android,前端)
  13. R语言ggplot2可视化条形图:通过双色渐变配色颜色主题可视化条形图
  14. 软件测试实例:登录功能怎么设计测试用例
  15. 人脸识别接口_活体检测在人脸识别中不可或缺的一部分
  16. win11怎么开启休眠睡眠?
  17. GPU 编程 CPU 异同点_22年后再战显卡市场 分析师:英特尔GPU不会构成威胁
  18. [转]结婚戒指为什么戴在无名指?
  19. elementui中 el-table表格表头以及内容渲染(横向纵向渲染)以及固定列fixed定位位置错乱表格偏移问题
  20. 七周七并发模型与七周七语言

热门文章

  1. Python3 SSH远程连接服务器
  2. 矩阵乘法Strassen算法
  3. 最小生成树(Kruskal算法+Prim算法)简单讲解+最小生成树例题 acm寒假集训日记22/1/8
  4. java 画树_java – 如何绘制代表连接节点图的树?
  5. 跳一跳python开挂_微信跳一跳物理外挂—教​你用 Python 来玩微信跳一跳
  6. 、简述global关键字的作用_在C#编程中global关键字的作用及其用法
  7. springboot自动装配原理_【springboot】基于springboot运行原理实现springboot的自动配置...
  8. itext 添加空格_itext7史上最全实战总结
  9. filter过滤器_web容器的过滤器Filter和拦截器Inteceptor的区别
  10. html select设置不选中的值,如何定义 select 默认不选中任何值