【大模型系列】图文对齐(CLIP/TinyCLIP/GLIP)

news2024/10/2 22:29:15

文章目录

  • 1 CLIP(ICML2021,OpenAI)
    • 1.1 预训练阶段
    • 1.2 推理阶段
    • 1.3 CLIP的下游应用
      • 1.3.1 ViLD:zero-shot目标检测(2022, Google)
      • 1.3.2 图像检索Image Retrival
      • 1.3.3 HairCLIP:图像编辑Image Editing(2022,中科大)
  • 2 TinyCLIP(2023, 微软)
    • 2.1 亲和力蒸馏
    • 2.2 权重继承
    • 2.3 多段式渐进压缩
  • 3 GLIP: grounded language-image pre-training(2022,微软)
    • 3.1 如何统一两个任务
    • 3.2 网络结构

1 CLIP(ICML2021,OpenAI)

参考资料:

  • Paper:https://arxiv.org/pdf/2103.00020.pdf
  • Github:https://github.com/openai/CLIP
  • Blog:https://openai.com/research/clip

CLIP(Constrastive Language-Image Pre-training):是openAI在2021年ICML上提出的zero-shot视觉分类预训练模型(CLIP: Learning Transferable Visual Models From Natural Language Supervision),在无微调的情况下能在多个下游任务上取得不错的迁移效果。CLIP有效地借助了自然语言的监督来学习视觉概念。

CLIP方法的特点:

  • 利用互联网上存在的大量公开可用的无标注文本数据集,创建了一个包含4亿对的(图像-文本)的新数据集;
  • 基于成对的图片-文本数据,训练了CLIP模型;
  • 基于Transformer的统一视觉语言基础架构;

1.1 预训练阶段

网络输入的是图像-文字对,即每张图片配有一小句解释性的文字。将文字通过一个编码器(BERT)得到其向量表示,将图片也经过一个编码器(ViT)也得到一个向量表示,再将2个向量通过non-linear的projection head,投影到一个shared的空间,从而计算距离,然后再使用交叉熵计算损失。
在这里插入图片描述
在这里插入图片描述

假设一个batch输入N个图像-文本对:

  • 经过编码器之后,图像的特征向量维度为Nxdi,文本的特征向量维度为Nxdt
  • 两组特征向量分别经过一个非线性的映射空间,得到新的特征表达,维度都是Nxde
  • 映射后的特征矩阵相乘,得到两两之间的距离矩阵NxN
  • 沿着维度0计算交叉熵得到图像的loss,沿着维度1计算交叉熵得到文本的loss,两者的均值就是constrastive loss。

1.2 推理阶段

在这里插入图片描述
给定一张图片和一堆分类标签(如cat、dog等)

  • 利用文本编码器得到类别标签的向量表示
  • 利用图像编码器得到图像的向量表示
  • 分别计算这些标签与图像的余弦相似度,最终相似度高的即为预测分类的结果

1.3 CLIP的下游应用

1.3.1 ViLD:zero-shot目标检测(2022, Google)

  • Paper:https://arxiv.org/pdf/2104.13921.pdf
  • 推理阶段:将基本类别和新增类别转化成文本送入Pre-trained Text Encoder产生text embedding(图中的绿色和蓝色部分),再通过Mask R-CNN产生类别无关的region embeddings。然后将region embeddings和text embeddings进行点积然后再softmax归一化,取最大值的类别作为该区域的预测结果。
    在这里插入图片描述

1.3.2 图像检索Image Retrival

从图像集中选择与文本embedding余弦相似度最高的。

1.3.3 HairCLIP:图像编辑Image Editing(2022,中科大)

  • Paper:https://arxiv.org/pdf/2112.05142.pdf
  • Github:https://zhuanlan.zhihu.com/p/480539824
  • Blog:https://zhuanlan.zhihu.com/p/480539824
    在这里插入图片描述

文章利用在大规模人脸数据集上预训练的StyleGAN作为的生成器。给定待编辑的真实图像,我们首先使用StyleGAN inversion方法得到其隐编码,然后我们的头发映射器根据隐编码和条件输入(发型条件、发色条件)预测隐编码相应的变化,最后修改后的隐编码将被送入StyleGAN产生对应的头发编辑后的图像。本质上是通过CLIP输出的embedding来指导图像的生成。

2 TinyCLIP(2023, 微软)

  • Paper:TinyCLIP2023_ICCV_paper.pdf
  • Blog:https://zhuanlan.zhihu.com/p/668468034
  • 主要贡献
    • 提出了一种名为TinyCLIPdd额d多模态蒸馏方法,主要包含:亲和力蒸馏和权重继承;
    • 渐进式多阶段蒸馏方法;

2.1 亲和力蒸馏

在这里插入图片描述
损失包含4个部分:

  • Student网络与gt的交叉损失:image-to-text和text-to-image
  • Student与Teacher网络的交叉损失:image-to-text和text-to-image

A I 2 T ( i , j ) = exp ⁡ ( I i ⋅ T j / τ ) ∑ k ∈ B exp ⁡ ( I i ⋅ T k / τ ) A T 2 I ( i , j ) = exp ⁡ ( I i ⋅ T j / τ ) ∑ k ∈ B exp ⁡ ( I k ⋅ T j / τ ) L distill  = L I 2 T + L T 2 I = C E ( A I 2 T s , A I 2 T t ) + C E ( A T 2 I s , A T 2 I t ) . A_{I 2 T}(i, j)=\frac{\exp \left(I_i \cdot T_j / \tau\right)}{\sum_{k \in \mathcal{B}} \exp \left(I_i \cdot T_k / \tau\right)} \\ A_{T 2 I}(i, j)=\frac{\exp \left(I_i \cdot T_j / \tau\right)}{\sum_{k \in \mathcal{B}} \exp \left(I_k \cdot T_j / \tau\right)} \\ \mathcal{L}_{\text {distill }} =\mathcal{L}_{I 2 T}+\mathcal{L}_{T 2 I} =C E\left(A_{I 2 T}^s, A_{I 2 T}^t\right)+C E\left(A_{T 2 I}^s, A_{T 2 I}^t\right) . AI2T(i,j)=kBexp(IiTk/τ)exp(IiTj/τ)AT2I(i,j)=kBexp(IkTj/τ)exp(IiTj/τ)Ldistill =LI2T+LT2I=CE(AI2Ts,AI2Tt)+CE(AT2Is,AT2It).

2.2 权重继承

**手动继承:**直接选择网络的前k层;
**自动继承:**通过设置可学习mask识别权重重要性。引入一个全局稀疏约束来保证重要参数的数目符合压缩要求。在MHA引入head mask、在FFN引入神经元mask、在embeding层引入embed mask。
在这里插入图片描述

2.3 多段式渐进压缩

当较多的权重被去除后(70%),模型性能会有显著的下降,为了缓解这个问题,本文提出渐进式蒸馏。分成G个阶段进行,每个阶段在前Lm step里做亲和蒸馏和继承训练(根据step更新当前稀疏度p,然后计算亲和力蒸馏损失,然后当前稀疏度p和目标稀疏q计算稀疏损失,然后更新mask和权重),然后将不重要权重移除,Lm后续的训练用亲和训练。
在这里插入图片描述

3 GLIP: grounded language-image pre-training(2022,微软)

  • Paper:https://arxiv.org/abs/2112.03857
  • Github:https://github.com/microsoft/GLIP
  • Blog:
    • https://blog.csdn.net/qq_43687860/article/details/129357440
    • https://developer.aliyun.com/article/1277345

主要贡献:GLIP统一了目标检测(Object detection)和定位任务(Grounding),构建了一个统一的训练框架。目标检测任务是给定一张图输出bounding box,定位任务是给定图片和文本,根据文本找出目标。

算法效果:进行zero-shot测试,不管是给定几个类别(apple,person等),还是给定一段话(there are some holes on the road)作为文本编码器的输入,GLIP模型都能从图像中找到对应目标的位置。
在这里插入图片描述

3.1 如何统一两个任务

目标检测与定位任务的目标函数都是由2个部分组成:分类损失和定位损失

L = L c l s + L b o x L = L_{cls} + L_{box} L=Lcls+Lbox

  • 定位损失:直接计算GT与预测框的Loss
  • 分类损失:
    • 目标检测任务:目标的region embedding通过分类头输出logits,再用nms筛选后与gt计算交叉熵;
    • 定位任务:文本编码特征text embedding与目标的region embeding计算相似性,再计算交叉熵;

如何统一:将目标检测object detection任务转化为定位grounding任务

  • 将检测任务的标签在分散后拼接成一句话,从而可以将目标检测任务转化为伪短语定位任务
  • 最后的loss的计算参考grounding任务

3.2 网络结构

在这里插入图片描述

  • 计算得到文本特征和图像特征的相似度后,直接与GT计算对齐损失Alignment loss,定位损失直接与GT框计算;
  • 中间的融合层(Fusion)是为了增加图像和文本之间的交互,让模型在浅层阶段就进行跨模态的学习;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI视野·今日Robot 机器人论文速览 第八十三期】Wed, 6 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 6 Mar 2024 Totally 30 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚SpaceHopper,外星探索多功能三足机器人 (from Robotic Systems Lab, ETH Zurich) Daily Robotics Papers A Safety-Criti…

RAG综述 《Retrieval-Augmented Generation for Large Language Models: A Survey》笔记

文章目录 概述RAG 的定义RAG的框架Naive RAGAdvanced RAGpre-retrieval processRetrievalpost-retrieval process Modular RAG RetrievalEnhancing Semantic Representationschunk 优化 微调向量模型Aligning Queries and DocumentsAligning Retriever and LLM GenerationAugme…

【工具使用-VScode】VScode如何设置空格和tab键显示

一,简介 在提交代码的时候,行末尾的tab和空格不符合规范,但是如果在vscode中不显示tab和空格的话,不能及时的查看到并改正,导致提交代码之后还需要再次进行修改,效率比较低。 代码编辑界面如图所示&#…

1+x中级题目练习复盘(一)

1、MOD(m,n) 返回m除以n的余数 2、物理备份可以分为冷备份和热备份。冷备份又称脱机备份,是指在关闭数据库后进行的备份;而热备份也称为联机备份,是在数据库运行的同时进行备份,但热备份存在着难以维护等风险。 3、删除表使用…

Elastic Stack--05--聚合、映射mapping

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.聚合(aggregations)基本概念桶(bucket)度量(metrics) 案例 11. 接下来按price字段进行分组:2. 若想对所…

8核16G服务器支持多少人?2024年腾讯云8核16G18M轻量服务器

腾讯云8核16G轻量服务器CPU性能如何?18M带宽支持多少人在线?轻量应用服务器具有100%CPU性能,18M带宽下载速度2304KB/秒,折合2.25M/s,系统盘为270GB SSD盘,月流量3500GB,折合每天116.6GB流量&…

Qdrant 向量数据库的部署以及如何在 .NET 中使用 TLS 安全访问

本文介绍如何使用 Docker 部署 Qdrant 向量数据库,以及其相关的安全配置,并演示如何使用 .NET 通过 TLS 安全访问 Qdrant 向量数据库。 文章目录 1. 背景2. Qdrant 向量数据库的部署2.1 Qdrant 向量数据库的安全配置2.2 使用 Docker 部署安全的 Qdrant 向…

vulnstack1--红队靶机(第一部分)

环境搭建 Windows7x64 Windows server8(域控) Windows server3 注意密码是hongrisec2019,需要测试是否连通 Kali配置 Eth1是桥接的ip 流程 主机发现 目标应该是193 端口扫描 服务扫描 漏洞扫描 看一下web Win7的系统 目录爆破 web利用 …

【开源】SpringBoot框架开发教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

gensim 实现 TF-IDF;textRank 关键词提取

目录 TF-IDF 提取关键词 介绍 代码 textRAnk 提取关键词 这里只写了两种简单的提取方法,不需要理解上下文,如果需要基于一些语义提取关键词用 LDA:TF-IDF,textRank,LSI_LDA 关键词提取-CSDN博客 TF-IDF 提取关键词…

JavaEE进阶(15)Spring原理:Bean的作用域、Bean的生命周期、Spring Boot自动配置(加载Bean、SpringBoot原理分析)

接上次博客:JavaEE进阶(14)Linux基本使用和程序部署(博客系统部署)-CSDN博客 目录 关于Bean的作用域 概念 Bean的作用域 Bean的生命周期 源码阅读 Spring Boot自动配置 Spring 加载Bean 问题描述 原因分析 …

【stm32】hal库学习笔记--定时器输出PWM波

【stm32】hal库学习笔记–定时器输出PWM波 PWM波原理 输出比较 输入捕获 驱动函数 定时器驱动函数 PWM波驱动函数 定时器基本不使用DMA方式 定时器中断处理通用函数 HAL_TIM_IRQHandler实验一:输出固定占空比PWM波 时钟树配置 PF9 改为tim14CH1 tim14配置 开启tim14全局中…

基础GamePlay知识-矩形碰撞检测

主要介绍AABB碰撞检测下,矩形该如何和矩形进行碰撞检测/和圆形进行碰撞检测。 直接看图,主要是比较两个矩形的边界线的前后关系。 效果 分析什么时候重合 分析什么时候不重合 完整代码 矩形身上挂载 public class Rectangle : MonoBehaviour {public …

MES数据采集设备

在智能制造日益盛行的今天,MES(制造执行系统)作为连接计划与生产现场的关键环节,其重要性不言而喻。而MES数据采集设备则是MES系统的核心组件,负责实时、准确地获取生产现场的各种数据,为企业的生产决策提供…

内存卡损坏打不开:数据恢复全攻略

在我们的日常生活中,内存卡作为一种常见的存储设备,广泛应用于手机、相机、平板电脑等电子设备中。然而,有时我们会遇到内存卡损坏打不开的问题,导致重要的照片、视频或文件无法读取。面对这种情况,我们该如何应对呢&a…

mac电脑总卡蓝屏是怎么回事,苹果电脑老卡蓝屏怎么办

电脑老卡蓝屏是比较常见的电脑故障之一,导致这一问题的出现很可能是电脑本身的硬件,或电脑上的驱动安装错误,没法运行,当然也不排除其他的一些因素。虽说电脑蓝屏是电脑几乎都会出现的小毛病,不足以致命,但…

短视频文案素材哪里找?推荐几个既好看又好用的素材网站

我们在做短视频的同时,一般需要一些视频,文案,图片,音频,来添加短视频的突出点,那么这些短视频文案去哪里找呢? 蛙学网 想要做出容易上热门的短视频文案,你一定要找到合适的短视频素材&#…

【个人开发】llama2部署实践(三)——python部署llama服务(基于GPU加速)

1.python环境准备 注:llama-cpp-python安装一定要带上前面的参数安装,如果仅用pip install装,启动服务时并没将模型加载到GPU里面。 # CMAKE_ARGS"-DLLAMA_METALon" FORCE_CMAKE1 pip install llama-cpp-python CMAKE_ARGS"…

【C语言】深入理解指针(进阶篇)

一、数组名的理解 数组名就是地址&#xff0c;而且是数组首元素的地址。 任务&#xff1a;运行以下代码&#xff0c;看数组名是否是地址。 #include <stdio.h> int main() {int arr[] { 1,2,3,4,5,6,7,8,9,0 };printf("&arr[0] %p\n", &arr[0]);pri…

PMP-项目管理十大知识领域学习和理解

项目管理十大知识领域&#xff1a; 整合、范围、进度、成本、 质量、资源、沟通、风险、采购、干系人 十大知识领域的理解 十大知识领域裁剪情况&#xff1a; 十大知识领域: 硬技能和软技能