【AIGC】10、Chinese CLIP | 专为中文图文匹配设计

news2024/12/26 10:35:45

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 基础内容
      • 2.2 数据集
      • 2.3 预训练方法
      • 2.4 模型尺寸
    • 三、效果

论文:Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese

代码:https://github.com/OFA-Sys/Chinese-CLIP

出处:阿里达摩院

时间:2022.11

贡献:

  • 提出了 Chinese CLIP,是经过在大尺度中文图像-文本对儿的两阶段预训练

一、背景

CLIP 的成功极大地促进了对比学习在视觉-语言模型预训练上的研究和应用

不同于传统生成式预训练,CLIP 是一种基于对比学习的模型,在从网络上收集的约 4 亿个 image-text pair 上进行预训练,而且有很好的 zero-shot 迁移能力

由于 CLIP 能够在视觉和文本之间建立联系,所有页改变了多模态表达学习和计算机视觉的相关研究

在 CLIP 之后有很多的工作,如 DALL-E,StyleCLIP,SLIP,CLIP4Clip 等

尽管如此,但在中国还没有一个专为中文多模态学习设计的模型

所以,本文中提出了 Chinese CLIP (CN-CLIP),模型在大量的中文文本-图像对儿上进行了预训练

数据:

  • 约 2 亿 image-text pairs

模型大小:

  • 建立了 5 个不同大小的模型,从 77M 到 958M 参数量

训练方式:

  • 使用两阶段训练的方式
  • 第一阶段:冻结 image encoder
  • 第二阶段:image encoder 和 text encoder 都参与训练(如图 1)
  • 消融实验证明了两阶段训练的好处

测试数据集:

  • 在 3 个 Chinese cross-modal 检索数据集上进行的测试
  • 包括 MUGE2, Flickr30K-CN, COCO-CN
    在这里插入图片描述

二、方法

2.1 基础内容

首先介绍一下 CLIP 的训练方法:

  • CLIP 是由 image encoder 和 text encoder 构成的
  • image encoder:是 vision backbone,如 ResNet、ViT 等
  • text encoder:是 transformer model,如 BERT、GPT 等
  • CLIP 有多种不同大小的模型尺度
  • vision backbone:5 个不同尺度的 resnet(ResNet-50, ResNet101, RN50x4, RN50x16, RN50x64),3 个饼图的 ViT (ViT-B/32, ViT-B/16, and ViT-L/14)
  • 模型的训练使用的是 large-batch 的对比学习,给定一个 batch 中有 N 个图像,则共有 N × N N \times N N×N 个可能的图文对儿,有 N 对儿 positive samples,有 N 2 − N N^2-N N2N 对儿 negative samples。则共有 N 2 N^2 N2 个 similarity score,来优化 cross-entropy loss

CLIP 的扩展:

  • 可以迁移到跨模态的检索
  • image encoder 可以作为 vision backbone 来代替在 ImageNet 上预训练的 ResNet 或 ViT
  • 通过计算给定的 image 和固定形式 Candidate label (如 a photo of [label]) 的相似性,也可以进行开集的 zero-shot 分类

2.2 数据集

CLIP 成功的另外一个原因在于预训练使用的超大尺度的训练集

由在 CLIP 上进行的实验可知,通过增大数据量、增长训练周期都可以提供模型在 zero-shot 学习任务上的效果

训练数据集:

  • 从 LAION-5B 中抽取包含 ‘zh’ 的中文数据,共抽取 1.08 亿数据
  • 从 Wukong 中获得 0.72 亿数据
  • 将英文多模态数据翻译为中文的,包括 Visual Genome 和 MSCOCO
  • 最后共得到约 2 亿的训练数据
  • 一般将图像 resize 为 224x224 来使用,在 ViT-L/14 中使用 336x336 大小

2.3 预训练方法

最简单的训练方法是从头开始训练,就是会受到训练数据的数量和质量的限制

为了利用现有的预训练模型优势:

  • 对于 image encoder ,使用了官方 CLIP 开源预训练模型来初始化
  • 对于 text encoder,使用 RoBERTa-wwm-ext 和 RBT3

如何基于开源模型来预训练:

  • constrastive tuning, 对比微调,类似于将 CLIP 迁移到下游任务上去
  • Locked-image Tuning(LiT),效果更好

Chinese CLIP 如何进行预训练:两阶段预训练方法,如图 1 所示

  • 主要思想是冻结 image encoder(冻结所有的参数)使用 LiT 让 text encoder 能够从 OpenAI 的 CLIP 的基础视觉模型中读出高质量的表示,然后将这些表示迁移到需要的数据域中。
  • 第一阶段:冻结 image encoder 的所有参数,只训练 text encoder,这一动作是基于一个假设:训练好的 vision backbone 已经有很强的能力来抽取视觉特征了。第一阶段的训练直到对下游任务没有明显的提升而结束
  • 第二阶段,让 image encoder 的参数参与训练,这样一来 image encoder 的参数就可以学习从中文网站来的图了
  • 实验结果表明两阶段的预训练能够比直接从训练好的模型来 finetune 效果更好

2.4 模型尺寸

有 5 种不同的模型尺寸,从 77 ~ 958 million 参数量,无特殊说明情况下预训练图像大小为 224x224

  • ResNet 50 model: C N − C L I P R N 50 CN-CLIP_{RN50} CNCLIPRN50
  • C N − C L I P V i T − B / 16 CN-CLIP_{ViT-B/16} CNCLIPViTB/16
  • C N − C L I P V i T − L / 14 CN-CLIP_{ViT-L/14} CNCLIPViTL/14
  • C N − C L I P V i T − L / 14 @ 336 p x CN-CLIP_{ViT-L/14@336px} CNCLIPViTL/14@336px
  • C N − C L I P V i T − H / 14 CN-CLIP_{ViT-H/14} CNCLIPViTH/14

三、效果

数据集:

  • MUGE-Retrieval:image-text 检索数据集
  • Flickr30K-CN:Flickr30K 数据集且将标签翻译为中文
  • COCOCN:COCO 数据集且将标签翻译为中文

评价指标:

  • zero-shot learning:使用 image 和 text 之间的 smilarity score 来衡量,使用 top-k similar candidates
  • finetuning:使用 Recall@K 来评价,K={1, 5, 10},也会使用 Mean Recall (MR)来评价,即 Recall@K 的均值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

061:cesium设置棋盘图材质(material-5)

第061个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置棋盘材质,请参考源代码,了解CheckerboardMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共89行)相关API参考:专栏目标…

第09章_子查询

第09章_子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。 SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果…

SeaweedFs使用-环境准备

SeaweedFs使用-环境准备 1.下载go语言包实现go语言环境2.下载SeaweedFs文件3.安装SeaweedFs SeaweedFs是一款开源的分布式存储软件,在存储大量小文件方面有更好的优化,比较适合存储web项目的图片等文件。 1.下载go语言包实现go语言环境 因为SeaweedFs是…

实战TCP三次握手

开篇 在几乎所有的后端开发面试题中,TCP三次握手绝对是最被面试官青睐的题目之一。但是这个东西,平时开发中看不见,摸不着,对于很多人来说,是纯理论的知识,玄之又玄。但是为了应对面试,又不得不…

《JavaEE》网络编程TCP/IP五层协议万字详解

文章目录 TCP/IP五层协议栈应用层xml (可读性比较好 但是运行效率不高)json(可读性好 但是运行效率不高)prtobuffer(可读性不好 但是运行效率很高) 传输层UDP TCPTCP数据解读32位序号32位确认序号4位首部的长度保留位6位标志位字段…

C语言实现学生管理系统

学习完C语言之后,我们可以通过简单写一个学生管理系统来检验自己学的怎么样。很多计算机系大学生都会学到C语言,对于C语言课程的设计作业可能会感到困难,该篇博客的核心点就是带领读者单独完成学生管理系统,此篇博客附有整个学生管…

【C++ 入坑指南】(11)指针

文章目录 一、概念定义和使用二、空指针 & 野指针2.1 空指针2.2 野指针2.3 小结 三、const 修饰的指针四、指针 和 数组五、指针和函数六、实例 学习 C 的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态…

数据全生命周期管理

数据存储 时代"海纳百川,有容乃大"意味结构化、半结构和非结构化多样化的海量的 ,也意味着批数据和流数据多种数据形式的存储和计算。面对不同数据结构、数据形式、时效性与性能要求和存储与计算成本等因素考虑,应该使用适合的存储…

组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python)

组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 ARIMA-CNN-LSTM是一种结合了传统时间序列模型和深度学习模型的…

chatgpt赋能Python-python3的下载

Python 3-您在编程路上不可或缺的伙伴 如果您正在寻找一种流行的编程语言,那么Python 3就是一个不错的选择。Python 3作为一种高级编程语言,可以轻松地创建各种应用程序和网站。它是最受欢迎的编程语言之一,就是因为它易于学习和使用。 Pyt…

本地部署 VisualGLM-6B

本地部署 VisualGLM-6B 1. 什么是 VisualGLM-6B2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 VisualGLM-6B6. 启动 VisualGLM-6B7. 访问 VisualGLM-6B8. API部署9. 命令行部署 1. 什么是 VisualGLM-6B VisualGLM-6B 是一个开源的,支持图像、中文和英文…

大模型时代下智能文档处理核心技术大揭秘

大模型时代下智能文档处理核心技术大揭秘 前言一张图全览文档图像分析与预处理图像预处理的整体架构核心技术点应用场景 版面分析与还原整体架构核心技术点应用场景 AI安全文档图像篡改检测 大模型时代思考总结 前言 最近,中国图像图形大会在苏州圆满结束&#xff0…

碳交易机制下考虑需求响应的综合能源系统优化运行(matlab代码)

目录 1 主要内容 架构模型: 需求响应模型: 目标函数: 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序复现文献《碳交易机制下考虑需求响应的综合能源系统优化运行》,解决碳交易机制下考虑需求响应的综合能源系统优化…

Emacs之快速高亮查找字符(九十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

ubuntu22.04静态ip设置(桥接模式、only-host+NAT模式)

在创建一台虚拟机后,默认的方式往往是通过DHCP动态的进行分配,DHCP服务器会告知创建的虚拟机分配到的ip地址,网关地址等信息。所以在创建好虚拟机之后,这些信息都不需要我们来配置,我们直接用就好了。 但是&#xff0…

redis集群之hash槽分析算法

上文提过了 hash取余算法和hash一致性算法 一致性hash算法是为了减少节点数目发生改变时尽可能的减少数据迁移 将所有的存储节点排在首位相连的Hash环上,每个key在计算hash后会顺时针找到临近的存储节点。 而当有节点加入或退出时,仅影响该节点在hash环上…

chatgpt赋能Python-python3求平均值

Python3求平均值-从基础到实践 Python3作为一种广泛使用的编程语言,被广泛应用于不同的领域。今天我们将探讨如何使用Python3求平均值。求平均值在数学和统计学中非常常见,使我们能够了解数据的中心趋势,并简化数据分析过程。让我们深入了解…

DELPHI7实现XP菜单风格

在DELPHI7中不使用任何第三方控件,实现放在工具栏上可拖动的XP风格菜单 今天有点空闲时间,顺便写点东西,不是什么深奥的东西,但实用,对于不想第三方控件但又想加点效果的朋友可能有点用.实现的效果如图: 步骤一:把Win32面板上把CoolBar组件加到窗体上 步骤二:把Additional面板上…

VBA 密码删除软件 4n6.VBA Password Remover 1.2 Crack

VBA 密码删除软件 软件评级(基于 1541 条评论的平均评分 4.8) 该工具是完美的软件,可以解锁任何类型的受密码保护的 VBA 文件。用户可以轻松使用此 VBA 密码删除软件并从 VBA 文件中删除密码保护。 兼容所有 Office 文件格式:.d…

Linux线程5——生产消费模型

生产消费模型 1个交易场所:超市 2种角色:生产者/消费者 3种关系:生产者和生产者(竞争关系也叫互斥关系),消费者和消费者(竞争关系同样是互斥关系),生产者和消费者(互斥,同步关系:生产完再消费或消费完再生产)。 以上是生产消费模型遵守的“321”原则。 生产者和消…