ViT:2 理解CLIP

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

语言-图像对比的预训练模型(CLIP)是由OpenAI开发的多模态学习架构。它从自然语言监督中学习视觉概念。它通过在包含图像及其相应文本描述的大规模数据集上联合训练模型来弥合文本和视觉之间的差距。

对比学习

对比学习是机器学习中经常使用的技术,特别是在无监督学习领域。对比学习教 AI模型识别大量数据的异同。

上图为对比学习的pipeline管道。

假设存在一个主体、一个相似的主体(正样本)和一个不同的主体(负样本)。对比学习的目标是让模型理解主体和相似主体的关联性,同时将主题和负样本最大程度的推开。其实也很好理解,假如识别苹果,可以给模型一堆的不同角度的苹果照片(正样本),让模型能够从多角度的认识很识别苹果。而其余品类的照片都是负样本。

CLIP 架构

CLIP使用双编码器架构将图像和文本映射到共享的潜在空间中。它通过联合训练两个编码器来工作。一个用于图像的编码器(Vision Transformer)和一个用于文本的编码器(基于Transformer的语言模型)。

图像编码器从视觉输入中提取显著特征。该编码器将“图像作为输入”并生成高维矢量表示。它通常使用卷积神经网络 (CNN) 架构(如 ResNet)来提取图像特征。文本编码器:文本编码器对相应文本描述的语义含义进行编码。它采用“文本标题/标签作为输入”并生成另一个高维向量表示。它通常使用基于 Transformer 的架构(如 Transformer 或 BERT)来处理文本序列。共享嵌入空间:两个编码器在共享矢量空间中生成嵌入。这些共享嵌入空间允许 CLIP 比较文本和图像表示并了解它们的基本关系。

CLIP 在从互联网上收集的 4 亿对(图像、文本)的大规模数据集,并在这些数据集上面进行预训练。在预训练期间,模型会被喂给有图像和文本标题配对组成的样本。其中有些是正匹配(标题准确地描述了图像),而另一些则是负匹配。CLIP对每幅图像都会创造多个文本,有些是正,有些是负。将这些创建的正样本(匹配)和负样本(不匹配)对的混合。

预训练阶段对比损失函数起到关键的作用。模型会根据学习的结果进行对应的奖惩,进而鼓励模型学习到视觉和文本信息的相似性。经过训练的文本编码器被用作zero-shot的分类器。CLIP计算所有图像和文本描述对的嵌入之间的余弦相似度,进而优化了编码器的参数,以便于提升正确对的相似性。因此CLIP学习到一个多模态嵌入空间,其中语义相关的图像和文本彼此靠近。

运用场景

即然CLIP已经将图像和文本映射到共享空间中,那么就可以集成NLP和图像处理任务。

  • 这允许CLIP生成图像的文本描述,通过查询具有图像的嵌入表示,从训练数据中检索相关的文本描述,高效的为图像生成标题。

  • 同时CLIP可以根据文本描述对图像进行分类。直接将文本描述与潜在空间中看不见的图像进行比较。无需为特定类添加标记训练数据即可执行零样本图像分类。

  • 基于这个基础模型还可以根据文本的提示“编辑”图像。用户可以操纵文本输入并将其反馈到CLIP中,为创新的文本到图像生成和“编辑”工具奠定了基础。

传统的视觉模型擅长于物体检测和图像分类等任务。然而,往往难以掌握图像中更深层次的含义和背景。CLIP 可以理解图像中描绘的物体、活动和情感之间的关系。给定一对情侣在公园互相打闹的图像,CLIP可以识别情侣的存在,还可以它们的情绪。而且CLIP可以从更少的图像-文本对中学习,使得它更加节省资源,并适用于数据有限的专业领域。

CLIP 最令人印象深刻的功能之一是它能够执行zero-shot的图像分类。这意味着 CLIP 可以仅使用自然语言描述对以前从未见过的图像进行分类,下图展示其强大的效果。

CLIP的另一个应用是将其用作多模态学习系统的组件。这些可以组合不同类型的数据,例如文本和图像。例如,它可以与 DALL-E 等生成模型配对。它从文本输入创建图像,以产生逼真和多样化的结果。它也可以根据文本命令编辑现有图像,例如更改对象的颜色、形状或样式。这使用户能够傻瓜式的创造性地创建和操作图像。

聪明的读者可以会想到其实在审核场景下,CLIP也是可以大展拳脚的。它可以帮助审核来自在线平台的不当或有害内容,例如包含暴力、裸露或仇恨言论的图片。CLIP 可以通过根据自然语言标准检测和标记此类内容来协助内容审核过程。例如,它可以识别违反平台服务条款或社区准则图像,或者对某些群体或个人具有攻击性或敏感性的图像。更加智能的地方在于它可以通过突出显示触发审核的图像或文本的相关部分来证明决策的合理性。

CLIP在图像识别、NLP、医疗诊断、辅助技术、先进机器人等领域取得突破,它为更直观的人机交互铺平了道路,因为机器可以跨不同模式掌握上下文理解。但是它对人际关系的理解,尤其是情感和抽象概念,仍然受到限制。它可能会误解复杂或细微的视觉线索。因此也会影响它在需要更深入地了解人类的任务表现。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单介绍一下vim

简单介绍一下vim 一、vim是什么?二、vim的优点三、vi/vim的使用命令模式输入模式底线命令模式 四、vi/vim 按键说明(一)命令模式可用的光标移动、复制粘贴、搜索替换等移动光标的方法:搜索替换的方法删除、复制与贴上的方法 (二&a…

Unity 集成 FMOD 音频管理插件 2.02

Unity 集成 FMOD 音频管理插件 2.02 3. 集成教程:3.1 设置Unity项目3.2 设置FMOD项目3.3 设置 FMOD for Unity3.4 添加声音:卡丁车引擎3.5 添加声音:氛围3.6 添加声音:音乐3.7 删除现有音频3.8 下一步 10. 脚本 API 参考10.1 基础…

linux的持续性学习

安装php 第一步:配置yum源 第二步:下载php。 yum install php php-gd php-fpm php-mysql -y 第三步:启动php。 systemctl start php-fpm 第四步:检查php是否启动 lsof -i :9000 计划任务 作用&am…

设计模式- 责任链模式(行为型)

责任链模式 责任链模式是一种行为模式,它为请求创建一个接收者对象的链,解耦了请求的发送者和接收者。责任链模式将多个处理器串联起来形成一条处理请求的链。 图解 角色 抽象处理者: 一个处理请求的接口,可以通过设置返回值的方…

SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 …

Webpack 从入门到精通-基础篇

一、webpack 简介 1.1 webpack 是什么 webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。 在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。 它将根据模块的依赖关系进行静态分析,打包生成对应的…

【深度学习】【机器学习】支持向量机,网络入侵检测,KDD数据集

文章目录 环境加载数据归一化数据训练模型用测试数据集给出评估指标准确率召回率预测某个输入数据随便取一行数据加载训练好的SVM支持向量机模型并预测 全部数据和代码下载 环境 之前介绍过用深度学习做入侵检测,这篇用向量机。 环境Python3.10 requirements.txt…

Vuex3学习笔记

文章目录 1,入门案例辅助函数 2,mutations传参辅助函数 3,actions辅助函数 4,getters辅助函数 5,模块拆分6,访问子模块的state辅助函数 7,访问子模块的getters辅助函数 8,访问子模块…

虚拟机调用摄像头设备一直 select timeout问题的解决

在VMware里面调用v4l2-ctl捕获图像,或者opencv的VideoCapture(0)捕获图像,或者直接调用v4l2的函数,在streamon后,调用select读取数据,均会一直提示select timeout的问题,大概率是由于USB版本的兼容性造成的…

每日5题Day21 - LeetCode 101 - 105

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; class Solution {public boolean isSymmetric(TreeNode root) {if(root null){return true;}Stack<…

类和对象(下+)_const成员、初始化列表、友元、匿名对象

类和对象&#xff08;下&#xff09; 文章目录 类和对象&#xff08;下&#xff09;前言一、const成员二、友元1.友元函数2.友元类 三、初始化列表四、explicit关键字五、匿名对象总结 前言 static成员、内部类、const成员、初始化列表、友元、匿名对象 一、const成员 将cons…

网络安全难学吗?2024该怎么系统学习网络安全?

学习网络安全需要循序渐进&#xff0c;由浅入深。很多人对网络安全进行了解以后&#xff0c;就打算开始学习网络安全&#xff0c;但是又不知道怎么去系统的学习。 网络安全本身的知识不难&#xff0c;但需要学习的内容有很多&#xff0c;其中包括Linux、数据库、渗透测试、等保…

excel拖拽怎么使单元格序号不递增

拖拽下来不仅不递增&#xff0c;而且右下角没有倒三角可以设置改变&#xff0c;&#xff08;即没有下图这个&#xff09; 则&#xff0c;可以采用以下方法 excel数值拖拽不递增还有一个更快更快捷的方法&#xff0c;这就运用到了excel快捷键&#xff0c;我们把鼠标放到单元格的…

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(二)

在自动驾驶中&#xff0c;对车辆外界环境进行感知需要用到很多传感器的数据&#xff08;Lidar&#xff0c;Camera&#xff0c;GPS/IMU&#xff09;&#xff0c;如果计算中心接收到的各传感器消息时间不统一&#xff0c;则会造成例如障碍物识别不准等问题。 为了对各类传感器进…

consul做配置中心

1. 分布式配置中心 consul不仅可做注册中心&#xff0c;还可做配置中心 applicaiton.yml与bootstrap.yml: applicaiton.yml是用户级的资源配置项bootstrap.yml是系统级的&#xff0c;优先级更加高 Spring Cloud会创建一个“Bootstrap Context”&#xff0c;作为Spring应用…

ReactRouter——路由配置、路由跳转、带参跳转、新route配置项

目录 写在前面 (一)初步使用router 1.安装react-router-dom 2.创建router结构 3.嵌套路由 4.配置not found页面 (1)确切路由报错页面 (2)未配置路由报错页面 5.重定向 (二)路由跳转 1.组件跳转 2.NavLink 3.js跳转 (三)传递参数 1.searchParams(query)参数 2…

kafka集成SpringBoot api编写教程

1.新建项目 用的idea是20222.1.3版本&#xff0c;没有Spring Initializr 插件&#xff0c;不能直接创建springboot项目 可以在以下网址创建项目&#xff0c;下载后解压&#xff0c;然后用idea打开项目即可 1.1 在 https://start.spring.io/ 上创建项目 1.2上传到linux&#x…

10.2 Go Channel

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Letcode-Top 100二叉树专题

94. 二叉树的中序遍历 方法一&#xff1a;递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeN…

【python】在【机器学习】与【数据挖掘】中的应用:从基础到【AI大模型】

目录 &#x1f497;一、Python在数据挖掘中的应用&#x1f495; &#x1f496;1.1 数据预处理&#x1f49e; &#x1f496;1.2 特征工程&#x1f495; &#x1f497;二、Python在机器学习中的应用&#x1f495; &#x1f496;2.1 监督学习&#x1f49e; &#x1f496;2.2…