【多模态论文】CLIP(Contrastive Language-Image Pre-training)

论文:Learning Transferable Visual Models From Natural Language Supervision
链接:https://arxiv.org/abs/2103.00020

摘要

  • 问题:

    • 对预定的类别进行预测,这种有监督的训练形式受限于额外标记数据 。如何利用图像的原始文本来获取广泛的监督数据?
    • 预训练的优势:Task-agnostic objectives使得在计算、模型容量和数据方面可以扩大几个数量级,能力有大幅提高。LP中的大规模无监督训练数据训练,而CV全部都是人工标注数据集,使用自然语言监督的方法进行图像表示学习很少见。
    • CV模型只能预测已知的图像类别,本文利用图像对应的文本数据,可能可以分辨未见类别的图像。
      在CV中加入自然语言数据实际结果不够好的原因归结于数据规模不够大
  • 方法:
    通过在4e (image, text) pairs数据集进行预训练,预测caption和图像是否match。并且可以zero-shot transfer到下游任务。

  • 优点:

    • 可以从大量自然语言数据中学习,无需标注进行监督学习
    • 灵活的零样本迁移

方法详解

  1. 数据集创建
  • 三个现存图像数据集:MS-COCO和Visual Genome质量高,但各10w图像,数据量少;YFCC100M 1e图像,但质量参差,metadata少,过滤后剩1500w接近ImageNet。
  • 解决方案:从互联网收集各种公开可用的资源,通过query查询的方式获取图像文本对,构建WIT( WebImageText)。
  1. 训练方法
  • 遇到问题
    (1)训练效率问题:开始训练实验VirTex类似结构,同时训练CNN和Transformer预测生成图像caption,但实验表明慢了三倍速度。
    (2)图像描述、评论和相关文本种类繁多,任务过于困难
    也有之前的方法表明,对比目标比预测目标可以更好的学习表征以及相同性能下生成比对比需要更多计算量
  • 解决方案:不需要预测文本的单词,只需要把文本当成一个整体判断文本和图像是否匹配,这样速度能提高4倍。
    在这里插入图片描述
  1. 训练任务:给定N个图像文本对,CLIP同时训练图像编码器和文本编码器,通过最大化N个real pairs的余弦相似度并且最小化N^2-N个负样本相似度的方法学习一个多模态Space。两个编码器参数均随机初始化,不使用任何热启模型。损失函数使用symmetric cross entropy loss。
  2. 模型
    图像端:
  • ResNet-50,将 global average pooling替换为 attention pooling mechanism,q为global average-pooled 表示。

  • Vision Transformer,在patch和pos embedding结合前加了layer normalization
    文本端:Transformer,63M-parameter 12-layer 512-wide model with 8 attention heads,BPE+49,152词表,max-seq-len=76,[SOS]text [EOS],使用[EOS]作为文本表示。保留了mask loss。
    在这里插入图片描述

  • 训练目标:最小化N^2-N个负样本的相似度,最大化正样本间相似度。
    在这里插入图片描述

下图为CLIP实现的伪代码:
在这里插入图片描述
只缩放文本编码器的宽度与ResNet的宽度成正比,发现CLIP对文本编码器的容量并不敏感。
5. 训练

  • 图像编码器:5个Resnet系列,包括ResNet-50, a ResNet-101,RN50x4, RN50x16, and RN50x64(后面三个为ResNet50的缩放)。3个ViT,ViT-B/32, ViT-B/16, ViT-L/14。
  • 32 epochs,温度系数0.07(防止训练不稳定必须),bs=32768
  • 为了加速训练和节省显存,使用了:Mixed-precision,gradient checkpointing, half-precision Adam statistics,half-precision stochastically rounded text encoder weights

实验

  1. zero-shot transfer:作者建议将零样本迁移能力作为衡量模型学习能力的一种方式。
    用于图像分类
    在这里插入图片描述

  2. 如何zero-shot?
    之前分类方式的弊端:多义性的label,缺乏上下文,无法判断。并且训练数据文本大多为完整句子,而非一个单词。
    zero-shot方式:使用prompt template “A photo of a {label}.”
    使用prompt方式,在ImageNet提高了1.3%的准确率
    在这里插入图片描述
    针对不同的分类任务,详尽地指出是哪一种类别,会提高zero-shot的效果。例如Oxford-IIIT Pets数据集, “A photo of a {label}, a type of pet.”。还有Food101数据集a type of food ,FGVC Aircraft使用a type of aircraft。又或者指定图像形式,比如卫星图像-a satellite photo of a {label}。

除此之外,ensembling over multiple zeroshot classifiers来提升效果,such as 'A photo of a big {label}" and “A photo of a small {label}”。在Embedding层面计算一个averaged text embeddings。
在这里插入图片描述
3. Zero shot在各分类数据集效果
在卫星图像分类(EuroSAT和RESISC45)、淋巴结肿瘤检测(PatchCamelyon)、合成场景(CLEVRCounts)、自动驾驶相关任务(如德国交通标志识别(GTSRB)、识别到最近汽车的距离(KITTI距离)等几个专业、复杂或抽象任务上,Zero shot CLIP非常弱。作者认为:测量零样本迁移,而不是少样本迁移,对于学习者没有先前经验的困难任务(例如几乎所有人的淋巴结肿瘤分类)是一项有意义的评估。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

为什么3D渲染让客户无法抗拒?7个重要原因

客户通常对工程、建筑、复杂的室内外设计知之甚少,展示草图只会让他们感到难以理解。不过,现代设计师和建筑师不再需要为此烦恼。 通过使用逼真且沉浸式的3D渲染,他们可以让能够轻松地向客户传达信息和沟通想法。它对赢得客户至关重要。接下…

Java多线程设计模式之保护性暂挂模式

模式简介 多线程编程中,为了提高并发性,往往将一个任务分解为不同的部分。将其交由不同的线程来执行。这些线程间相互协作时,仍然可能会出现一个线程等待另一个线程完成一定的操作,其自身才能继续运行的情形。 保护性暂挂模式&a…

NodeJs 连接本地 mySql 数据库获取数据

写在前面 今天把 nodejs 连接本地数据库的坑简单的踩一下,为后续写接口做个铺垫 安装 mySql (mac举例子) 安装地址 安装完成大概这个样子,起动起来就行 安装本地数据库连接工具(navicat举例子) 安装地…

文件防篡改监控工具 - WGCLOUD全面介绍

WGCLOUD是一款优秀的运维监控软件,免费、轻量、高效,部署容易,上手简单,对新手非常友好 WGCLOUD部署完成后,点击菜单【文件防篡改】,可以看到如下页面 我们点击【添加】按钮,输入监控文件的信息…

赛力斯:“新王”能做多久

最近,电车圈又有大事了。 造车新势力们迎来“新王”——赛力斯。 最近,赛力斯市值突破1500亿,反超理想, 成为新势力市值一哥。 今年第一季度,赛力斯新能源汽车销量达94825辆,同比增长高达374.77%&#xf…

想要高效回复客户消息?来看看这个款微信神器

不管是销售还是客服来说,能及时回复客户的反馈和问题,是确保顾客满意度的关键因素。 今天,就给大家分享一个职场必备神器——个微管理系统,帮助大家提高回复效率! 首先,你可以在系统上设置自动通过好友后自…

聊聊其他之ShowDoc安装部署

聊聊其他之ShowDoc安装部署 Docker离线安装部署 由于很多公司服务器处于内网环境,跟外网阻断,所以需要通过离线的方式进行Docker镜像安装。 Linux环境准备 第一步:检查防火墙,是否关闭。 查看防火墙状态: [rootlo…

java后端方法地址组成解析

本篇文章旨在记录后端方法被调用时,是如何组成的,以及组成的部分。 提示:以下是本篇文章正文内容,下面案例可供参考 一、后端方法地址是什么? 示例:http://127.0.0.1:8080/user/info 如果携带了路径参数…

主存储器的基本组成+容量扩展+与CPU的连接

1.基本组成 1.主存储器的基本组成和读写操作 主存储器被称为主存/内存。是计算机中存储程序的重要部件 主存储器内部包含了存储体、各种逻辑部件以及控制电路等。 主存是通过寻址的方式对存储体内的存储单元进行读写操作的。 主存首先要从MAR获取地址,之后译码器…

Java23种设计模式(五)

1、MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。…

惠海H4120 降压IC 40V 36V 30V降压5V3A 9V3A 12V3A 动态响应优异,低纹波

H4120是一款功能优良的异步降压型DC-DC转换器。它的主要特性和优势如下: 产品特性: 内置40V耐压MOS:内置的高耐压MOS使得H4120能够处理更多种的输入电压范围,增强了其适用性和可靠性。 宽输入范围:输入电压可在5V至…

ubuntu18.04 安装HBA

HBA是一个激光点云层级式的全局优化的程序,他的论文题目是:HBA: A Globally Consistent and Efficient Large-Scale LiDAR Mapping Module,对应的github地址是:HKU-Mars-Lab GitHub 学习本博客,可以学到gtsam安装&am…

android串口助手apk下载 源码 演示 支持android 4-14及以上

android串口助手apk下载 1、自动获取串口列表 2、打开串口就开始接收 3、收发 字符或16进制 4、默认发送at\r\n 5、android串口助手apk 支持android 4-14 (Google seral port 太老) 源码找我 需要 用adb root 再setenforce 0进入SELinux 模式 才有权限…

QT day03

思维导图 QT设计 升级优化自己应用程序的登录界面。 要求: 1. qss实现 2. 需要有图层的叠加 (QFrame) 3. 设置纯净窗口后,有关闭等窗口功能。 4. 如果账号密码正确,则实现登录界面关闭,另一个应用界面…

vuejs3+elementPlus后台管理系统,左侧菜单栏制作,跳转、默认激活菜单

默认激活菜单,效果&#xff1a; 默认激活菜单&#xff0c;效果1&#xff1a; 默认激活菜单&#xff0c;效果2&#xff1a; 跳转链接效果&#xff1a; 制作&#xff1a; <script setup> import {useUserStore} from "/stores/userStore.js"; import {ref} fr…

密码学及其应用——GMP库在密码学中的应用

GMP&#xff08;GNU Multiple Precision arithmetic library&#xff0c;GNU多精度算术库&#xff09;是一个针对大整数运算的库。这个库提供了许多针对多种多精度类型的计算函数&#xff1a; - 大整数&#xff1a;Z - 大有理数&#xff1a;Q - 大浮点数&#xff1a;R 1. 密码学…

找不到com.fasterxml.jackson.core.exc.StreamWriteException的类文件

1. 前言: 使用springboot搭建的项目, 需要使用 jackson 更改json文件的内容; maven管理jar包, 导入jar包版本信息如下: <!-- 读写json文件所需依赖 --> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databin…

陈晓婚前婚后大变样

陈晓婚前婚后大变样&#xff1f;陈妍希揭秘甜蜜与现实的碰撞在娱乐圈的星光璀璨中&#xff0c;有一对夫妻总是津津乐道&#xff0c;那就是陈晓和陈妍希。他们的爱情故事&#xff0c;从荧幕到现实&#xff0c;一直备受关注。然而&#xff0c;近日陈妍希在节目中透露&#xff0c;…

yolov8训练文件夹文件目录介绍及讲解

背景说明 凡是使用过yolov8算法的朋友都知道&#xff0c;在使用yolov8算法训练模型完成后&#xff0c;会在代码目录下默认生成一个runs文件夹&#xff0c;该文件夹通常用来保存模型的训练任务以及相关的模型信息。 如果我们按照任务分类进行点击进入&#xff0c;会发现…

实现一个简易动态线程池

项目完整代码&#xff1a;https://github.com/YYYUUU42/Yu-dynamic-thread-pool 如果该项目对你有帮助&#xff0c;可以在 github 上点个 ⭐ 喔 &#x1f970;&#x1f970; 1. 线程池概念 2. ThreadPoolExecutor 介绍 2.1. ThreadPoolExecutor是如何运行&#xff0c;如何同时…