ImageNet零样本准确率首次超过80%,地表最强开源CLIP模型更新

2023-11-09

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

本文转自新智元,编辑LRS。

开源模型OpenCLIP达成ImageNet里程碑成就!

虽然ImageNet早已完成历史使命,但其在计算机视觉领域仍然是一个关键的数据集。

2016年,在ImageNet上训练后的分类模型,sota准确率仍然还不到80%;时至今日,仅靠大规模预训练模型的zero-shot泛化就能达到80.1%的准确率。

dbdcd090bb9c9a3caadc7d1de50c0b09.png

最近LAION使用开源代码OpenCLIP框架训练了一个全新的 ViT-G/14 CLIP 模型,在 ImageNet数据集上,原版OpenAI CLIP的准确率只有75.4%,而OpenCLIP实现了80.1% 的zero-shot准确率,在 MS COCO 上实现了74.9% 的zero-shot图像检索(Recall@5),这也是目前性能最强的开源 CLIP 模型。

060690c98731f7789698647a3634b1fc.png

LAION全称为Large-scale Artificial Intelligence Open Network,是一家非营利组织,其成员来自世界各地,旨在向公众提供大规模机器学习模型、数据集和相关代码。他们声称自己是真正的Open AI,100%非盈利且100%免费。

感兴趣的小伙伴可以把手头的CLIP模型更新版本了!

735b1e74d52682b753240fc5ed4e3173.png

模型地址:https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k

OpenCLIP模型在各个数据集上具体的性能如下表所示。

c9a221efeb706faf0a1d92fc70dcaa3e.png

Zero-shot能力

一般来说,计算机视觉(CV)模型在各个任务上的sota性能都是基于特定领域的训练数据,无法泛化到其他领域或任务中,导致对视觉世界的通用属性理解有限。

泛化问题对于那些缺少大量训练数据的领域尤其重要。

理想情况下,CV模型应该学会图像的语义内容,而非过度关注训练集中的特定标签。比如对于狗的图像,模型应该能够理解图像中有一只狗,更进一步来理解背景中有树、时间是白天、狗在草地上等等。

但当下采用「分类训练」得到的结果与预期正好相反,模型学习将狗的内部表征推入相同的「狗向量空间」,将猫推入相同的「猫向量空间」,所有的问题的答案都是二元,即图像是否能够与一个类别标签对齐。

d6f7c7e2c6df3a7e71f04850b336c394.png

对新任务重新训练一个分类模型也是一种方案,但是训练本身需要大量的时间和资金投入来收集分类数据集以及训练模型。

幸运的是,OpenAI 的CLIP模型是一个非常灵活的分类模型,通常不需要重新训练即可用于新的分类任务中。

CLIP为何能Zero-Shot

对比语言-图像预训练(CLIP, Contrastive Language-Image Pretraining)是 OpenAI 于2021年发布的一个主要基于Transformer的模型。

CLIP 由两个模型组成,一个Transformer编码器用于将文本转换为embedding,以及一个视觉Transformer(ViT)用于对图像进行编码。

21208b122567e422c7e5ac238418e782.png

CLIP内的文本和图像模型在预训练期间都进行了优化,以在向量空间中对齐相似的文本和图像。在训练过程中,将数据中的图像-文本对在向量空间中将输出向量推得更近,同时分离不属于一对的图像、文本向量。

078046fb9e225ec9e1514161f9f874a9.png

CLIP与一般的分类模型之间有几个区别:

首先,OpenAI 使用从互联网上爬取下来的包含4亿文本-图像对的超大规模数据集进行训练,其好处在于:

1. CLIP的训练只需要「图像-文本对」而不需要特定的类标签,而这种类型的数据在当今以社交媒体为中心的网络世界中非常丰富。

2. 大型数据集意味着 CLIP 可以对图像中的通用文本概念进行理解的能力。

3. 文本描述(text descriptor)中往往包含图像中的各种特征,而不只是一个类别特征,也就是说可以建立一个更全面的图像和文本表征。

上述优势也是CLIP其建立Zero-shot能力的关键因素,论文的作者还对比了在ImageNet上专门训练的 ResNet-101模型和 CLIP模型,将其应用于从ImageNet 派生的其他数据集,下图为性能对比。

89b7eacbcdc5a210e7e4d3a1e118abf3.png

可以看到,尽管 ResNet-101是在ImageNet上进行训练的,但它在相似数据集上的性能要比 CLIP 在相同任务上的性能差得多。

在将 ResNet 模型应用于其他领域时,一个常用的方法是「linear probe」(线性探测),即将ResNet模型最后几层所学到的特性输入到一个线性分类器中,然后针对特定的数据集进行微调。

在CLIP论文中,线性探测ResNet-50与zero-shot的CLIP 进行了对比,结论是在相同的场景中,zero-shot CLIP 在多个任务中的性能都优于在ResNet-50中的线性探测。

6162183ec577ec974867290e2b8682f3.png

不过值得注意的是,当给定更多的训练样本时,Zero-shot并没有优于线性探测。

用CLIP做Zero-shot分类

从上面的描述中可以知道,图像和文本编码器可以创建一个512维的向量,将输入的图像和文本输入映射到相同的向量空间。

用CLIP做Zero-shot分类也就是把类别信息放入到文本句子中。

举个例子,输入一张图像,想要判断其类别为汽车、鸟还是猫,就可以创建三个文本串来表示类别:

T1代表车:a photo of a car

T2代表鸟:a photo of a bird

T3代表猫:a photo of a cat

将类别描述输入到文本编码器中,就可以得到可以代表类别的向量。

假设输入的是一张猫的照片,用 ViT 模型对其进行编码获取图像向量后,将其与类别向量计算余弦距离作为相似度,如果与T3的相似度最高,就代表图像的类别属于猫。

734ddb20baed4b9eeeceabad8be061a2.png

可以看到,类别标签并不是一个简单的词,而是基于模板「a photo of a {label}」的格式重新改写为一个句子,从而可以扩展到不受训练限制的类别预测。

实验中,使用该prompt模板在ImageNet的分类准确性上提高了1.3个百分点,但prompt模板并不总是能提高性能,在实际使用中需要根据不同的数据集进行测试。

Python实现

想要快速使用CLIP做zero-shot分类也十分容易,作者选取了Hugging Face中的frgfm/imagenette数据集作为演示,该数据集包含10个标签,且全部保存为整数值。

eed1b121d1a54fd0e57d95003347b029.png

使用 CLIP进行分类,需要将整数值标签转换为对应的文本内容。

0601db751dfab7a25a82cfbda471dd24.png

在直接将标签和照片进行相似度计算前,需要初始化 CLIP模型,可以使用通过 Hugging Face transformers找到的 CLIP 实现。

69e48e8bce299295747e9035ce669db0.png

文本transformer无法直接读取文本,而是需要一组称为token ID(或input _ IDs)的整数值,其中每个唯一的整数表示一个word或sub-word(即token)。

0b68a23c101449ab5fef6cc128a9d969.png

将转换后的tensor输入到文本transformer中可以获取标签的文本embedding

5c28d3d4552b2a177c8547150d7150a8.png

注意,目前CLIP输出的向量还没有经过归一化(normalize),点乘后获取的相似性结果是不准确的。

690f03c8778fcc3f967a03b555e7cc27.png

下面就可以选择一个数据集中的图像作测试,经过相同的处理过程后获取到图像向量。

e5763c5b0865b0862dac576647954531.png

将图像转换为尺寸为(1, 3, 224, 224)向量后,输入到模型中即可获得embedding

fd4ff8ceecb31c76dce553209fa3b449.png

下一步就是计算图像embedding和数据集中的十个标签文本embedding之间的点积相似度,得分最高的即是预测的类别。

47445749645ee1a8596bd2683ee90129.png

模型给出的结果为cassette player(盒式磁带播放器),在整个数据集再重复运行一遍后,可以得到准确率为98.7%

16367c681136d03241c7e4687413bfb3.png

除了Zero-shot分类,多模态搜索、目标检测、 生成式模型如OpenAI 的 Dall-E 和 Stable disusion,CLIP打开了计算机视觉的新大门。

参考资料:

https://twitter.com/hardmaru/status/1619270829828874240

https://laion.ai/blog/giant-openclip/

https://www.pinecone.io/learn/zero-shot-image-classification-clip/

cd7fafe73bae313ea24c292056fa9079.jpeg

END

欢迎加入「CV交流群

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ImageNet零样本准确率首次超过80%,地表最强开源CLIP模型更新 的相关文章

  • Git- 连接远程仓库

    如何使用Git 连接远程仓库呢 远程仓库 gt 一般指的是代码托管平台 那就先来瞅瞅三个较熟悉的版本 代码 托管服务平台 版本 代码 托管服务平台 码云 gitee com 是开源中国社区团队推出的基于Git的快速的 免费的 稳定的在线代码
  • build kernel :missing symbol table

    https www spinics net lists kernel msg3797871 html
  • 【茗创科技】如何看待心理学实验中的数据缺失?

    大家好 这里是 茗创科技 茗创科技专注于脑科学数据处理 涵盖 EEG ERP fMRI 结构像 DTI ASL FNIRS 等 欢迎留言讨论及转发推荐 也欢迎了解茗创科技的脑电课程 数据处理服务及脑科学工作站销售业务 可添加我们的工程师 M
  • robot framework 初学--打开浏览器

    在TesterHome看到一篇文章后 跟着做了一遍 源地址https testerhome com topics 10447 这里是我个人操作之后的一些疑问和解决方法 1 Robot是否是以键值对的形式存在呢 A 我实在是太天真了 只是看到
  • 数字化时代10:从我国经济建设目标看社会产品形态的变化

    摘要 从我国经济建设目标看产品的形态变化 从物质到精神 从实体到虚拟 物体到人自身 看到财富形态变化的端倪 随着物质产品的极大丰富 物质产品的新的价值 不在物质本身 即不是在物质产品原先的 固有的使用价值 而是在于它作为某种精神产品的物质承
  • Spring-Aop实现操作日志收集

    最近刚换了份工作 这家公司主要做的是b端的产品 b端产品一般审计都比较严 所以免不了会有操作日志这个东西 但是我发现现在这家公司的操作日志都是这样收集的 看以下代码 记录操作日志 主子表分别添加 List
  • Spring Framework的设计哲学(Bing翻译)

    3 Design Philosophy When you learn about a framework it s important to know not only what it does but what principles it
  • 全网最强下载神器IDM使用教程:如何利用IDM加速下载百度网盘大文件

    作者 okay 自从不限速度盘下载工具Pandownload被封杀后 有些网友纷纷表示 幸好我们还有IDM 但是 对于很多小伙伴来说 初次听到这个名词时都是一脸懵逼 啥是IDM 今天 扩展迷就专门针对IDM这款工具做一个科普和使用说明 01
  • 高可用架构,期刊下载

    掌阅 http t cn Rqs8cr5图灵社区 http t cn R5v6o7Z 手机扫一扫 欢迎关注公众号 关注程序员成长
  • php文件管理

  • 生成spwm_详解SPWM与SVPWM的原理、算法以及两者的区别

    欢迎加入技术交流QQ群 2000人 电力电子技术与新能源 905724684 高可靠新能源行业顶尖自媒体 在这里有电力电子 新能源干货 行业发展趋势分析 最新产品介绍 众多技术达人与您分享经验 欢迎关注我们 搜索微信公众号 电力电子技术与新
  • SpringBoot的数据校验(@Validated注解)、关于validation无法导入的问题解决、自定义校验注解

    一 SpringBoot的数据校验 Validated注解 关于validation无法导入的问题解决 在springboot中 Validated可对后台接收model进行数据校验 不符合则抛出异常 导入依赖
  • 动态规划--矩阵最小的路径和

    题目描述 给定一个 N M 的矩阵arr 从左上角开始每次只能向下或者向右走 最后到达右下角 路径上所有点的数字和为 路径和 求最小的路径和 典型的动态规划 状态方程为 dp i j getMin dp i 1 j dp i j 1 arr
  • Origin作图技巧

    Origin is a proprietary computer program for interactive scientific graphing and data analysis It is produced by OriginL
  • 关于uniapp css背景图不能用本地文件的解决办法

    参考 http ask dcloud net cn question 62417 uni app解决无法加载本地图片的方法 动态加载背景图片 唯一的解决办法 特别注意 千万别忘记了 url indexBackgroundImage
  • Java 异常错误 (Ljava/lang/String;)L java/lang/String;

    异常问题如下 起初xml中返回值类型是这样子 一直在找返回值类型的问题 怎么看都是没有问题的 又改为如下 结果还是不对 查询资料反反复复还是出现这个异常 突然一下想到会不会是有重复id名字的sql 我用的是idea 直接全局查询 确实查到了
  • 仿一个wp7中PhotoChooserTask指定宽高后的图片裁剪窗口

    先看看PhotoChooserTask的图片裁剪窗口有哪些特点 1 窗口主体 整个图片最大可能存在的区域 宽480高720 无SystemTray 高32 有Appbar 高72 不支持横竖屏切换 只有竖屏模式 2 取景窗边框宽度1像素 边
  • vscode使用Remote-SSH插件无法连接远程LINUX服务器【解决】

    报错 Could not fetch remote environment Unable to write to Folder Settings because no resource is provided Failed to conne
  • Vue 3 技术揭秘

    作者介绍 muwoo 前端技术专家 曾就职于蚂蚁集团 之前对 Vue 2 x 源码有过深层次的研究和探索 并在 Github 上开源了相关的技术文章 Vue 2 x 技术揭秘 目前已有超过 2k star 自 Vue 3 诞生以来 就一直关
  • Flutter json_serializable

    1 添加项目依赖 dev dependencies flutter test sdk flutter build runner 1 1 3 json serializable 3 2 0 2 创建实体类 可以使用json serializa

随机推荐

  • libxml2 c库使用

    libxml2库 1 读取一个文件到内存 xmlParseFile和xmlReadFile xmlReadFile is a bit more powerful as it is able to take an URL instead of
  • element-plus中的ElMessage消息提示 执行了但是没有弹出提示

    报错原因及解决 引入了element plus 并没有引入css文件 所以导致了样式的缺失 只需要在main js文件中添加如下语句即可 import element plus dist index css 如果还是没有效果记得重启一下项目
  • 黑客学习笔记(自学)

    一 首先 什么是黑客 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手 现阶段黑客所需要掌握的远远不止这些 二 为什么要学习黑客技术 其实 网络信息空间安全已经成为海陆空之外的第四大战场 除了国与国之间的博弈 国内企业与企业间也有显著的明争暗
  • 如何快速准备大厂秋招面试中的算法

    如何快速准备大厂秋招面试中的算法 数据结构 1 栈 1 1 栈的概述 1 2 栈的常规操作 1 3 用js封装栈 1 4 栈的应用 2 队列 2 1 队列的概述 2 2 队列的常规操作 2 3 用js封装队列 2 4 队列的应用 3 链表
  • FreeRTOS学习笔记6(任务通知)

    1 任务通知函数及其知识点的介绍 下面是任务通知得一些特点 1 我们使用队列 信号量 事件组等等方法时 并不知道对方是谁 使用任务通知时 可以明确指定 通 知哪个任务 2 使用任务通知时 任务结构体TCB中就包含了内部对象 可以直接接收别人
  • MacbookPro安装前端开发环境的爬坑之旅

    文章目录 前言 一 MacbookPro的系统认知 二 强大的触控板 16种姿势带你飞 1 熟悉触控板 2 熟悉怎样下载APP 3 开始前端环境的搭建 总结 前言 2021年1月26日 一个前端开发小菜鸟拿到人生第一台MacbookPro的
  • 4.2 类

    类 类声明 类体 变量 成员变量 实例变量和类变量 局部变量 方法里面声明的变量 4 2 1类声明 类声明 class 类名 public class People 公共类 public class People String name i
  • Java .io_java IO

    java IO 主要内容 java io File类的使用 IO原理及流的分类 文件流 FileInputStream FileOutputStream FileReader FileWriter 缓冲流 BufferedInputStre
  • Linux十大常用命令

    1 gt 查看文件信息 ls ls是英文单词list的简写 其功能为列出目录的内容 是用户最常用的命令之一 它类似于DOS下的dir命令 Linux文件或者目录名称最长可以有265个字符 代表当前目录 代表上一级目录 以 开头的文件为隐藏文
  • 机器视觉之医学诊断应用

    https www toutiao com a6668252530897584644 随着药品和医疗器械安全性问题重要性的不断提升 越来越多的生产厂商将机器视觉技术引入实际生产中来 以达到提高生产效率 加强产品质量保障的目的 同样 在医疗系
  • Windows环境安装redis-dump

    安装msys2 x86 64 20190524 exe http repo msys2 org distrib x86 64 msys2 x86 64 20190524 exe rubyinstaller devkit 2 7 1 1 x6
  • CSS样式修改的一些技巧

    感觉自己对页面太差了 很多小问题不了解 是时候加强一下这方面 把最近一个小需求 总结一下 自己也欠了好多学习博客补一下 另外这个博客是来自于自己平时学习的总结和看法 基本是原创或者自己看到一些结合了自己的理解 已经有了一些文章 借用了 我的
  • 重启c语言—两个有序链表序列的交集

    7 1 两个有序链表序列的交集 20分 已知两个非降序链表序列S1与S2 设计函数构造出S1与S2的交集新链表S3 输入格式 输入分两行 分别在每行给出由若干个正整数构成的非降序序列 用 1表示序列的结尾 1不属于这个序列 数字用空格间隔
  • 华为OD机试 - 选修课(Java & JS & Python)

    题目描述 给定一个元素类型为小写字符串的数组 请计算两个没有相同字符的元素长度乘积的最大值 如果没有符合条件的两个元素 返回0 输入描述 第一行为第一门选修课学生的成绩 第二行为第二门选修课学生的成绩 每行数据中学生之间以英文分号分隔 每个
  • 汇编笔记

    更新于20190929 1 Intel和AT T汇编 参数是反的 AT T寄存器前加 常量前加 Intel mov rax rcx rcx gt rax mov cl 2 对应AT T movq rcx rax rcx gt rax mov
  • RHEL/centos8.0离线安装n卡驱动,cuda10.1,cudnn7.5,anaconda3,pycharm以及mmdeection和simpledet的搭建

    我最近在两台RHEL8 0的服务器装了这些玩意 特此记录一下 1 离线安装nvidia driver cuda10 1 cudnn7 5 关键因素 显卡型号 Quadro P4000 系统 RHEL 8 0 用 cat etc redhat
  • IPv4与ipv6联系

    IPv4又称互联网通信协议第四版 是网际协议开发过程中的第四个修订版本 也是此协议第一个被广泛部署的版本 但是2019年11月26日 全球所有43亿个IPv4地址已分配完毕 IPV6是互联网工程任务组设计的用于替代IPv4的下一代IP协议
  • Java高级程序设计_JAVA高级程序设计

    恢复内容开始 import java awt import java awt event ActionEvent import java awt event ActionListener import java awt event Mous
  • 12个C语言必背实例

    C语言实例第01期 十进制数转换二进制数 实例代码 include stdio h int main int m n k 定义变量 int a 16 0 printf 请输入一个0 32767之间的数字 n scanf d n printf
  • ImageNet零样本准确率首次超过80%,地表最强开源CLIP模型更新

    关注公众号 发现CV技术之美 本文转自新智元 编辑LRS 开源模型OpenCLIP达成ImageNet里程碑成就 虽然ImageNet早已完成历史使命 但其在计算机视觉领域仍然是一个关键的数据集 2016年 在ImageNet上训练后的分类
Powered by Hwhale