CLIP对比图文预训练 (Contrastive Language-Image Pretraining)论文阅读笔记

任务:

video captioning, 视频描述生成,简单来说就是给定一段视频(目前以几秒到几分钟的短视频为主),计算机输出描述这段视频的文字(目前以英文为主)。往往一个视频对应多个人工标注,这也是为训练时增添了一些鲁棒性,如:<image, text#1, text#2…text#n>。
在这里插入图片描述

网络模型:在这里插入图片描述

网络分成两部分:
1)文本特征提取:文本编码器可以是 transformer;
2) 图像特征提取:可以是resnet50等;
训练阶段:
训练数据是网络社交媒体上搜集的图像文本对。在训练阶段,对于一个batch 的数据,首先通过文本编码器和图像编码器,得到文本和图像的特征,接着将所有的文本(一个视频对应好多个标注句子)和图像特征分别计算内积,就能得到一个矩阵,然后从图像的角度看,行方向就是一个分类器,从文本角度看,列方向也是一个分类器。
而由于我们已经知道一个batch中的文本和图像的匹配关系,所以目标函数就是最大化同一对图像和文本特征的内积,也就是矩阵对角线上的元素,而最小化与不相关特征的内积。对图片嵌入特征和文本嵌入特征进行矩阵相乘。那么形成的打分矩阵上,对角线上都是配对的正样本对打分,而矩阵的其他元素,则是由同个batch内的图片和不配对的文本(相反亦然)组成的负样本。

def forward(self, image, text):image_features = self.encode_image(image) #编码imagetext_features = self.encode_text(text) #编码text# norm一下特征image_features = image_features / image_features.norm(dim=-1, keepdim=True)text_features = text_features / text_features.norm(dim=-1, keepdim=True)# 计算内积相似度logitslogit_scale = self.logit_scale.exp()logits_per_image = logit_scale * image_features @ text_features.t()logits_per_text = logit_scale * text_features @ image_features.t()# shape = [global_batch_size, global_batch_size]return logits_per_image, logits_per_text

测试阶段:
在这里插入图片描述
在测试阶段,可以直接将训练好的CLIP用于其他数据集而不需要finetune。和训练阶段类似,首先将需要分类的图像经过编码器得到特征,然后对于目标任务数据集的每一个标签,或者你自己定义的标签,都构造一段对应的文本,如上图中的 dog 会改造成 “A photo of a dog”,以此类推。然后经过编码器得到文本和图像特征,接着将文本特征与图像特征做内积,内积最大对应的标签就是图像的分类结果。这就完成了目标任务上的 zero-shot 分类。

参考文献

https://blog.csdn.net/weixin_42772394/article/details/120688085?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164843634516780265465349%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164843634516780265465349&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-120688085.142v5control,143v6register&utm_term=CLIP&spm=1018.2226.3001.4187

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

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

相关文章

干货|免费文本语料训练数据集

关于Word2Vec&#xff0c;上篇文章文本分类特征提取之Word2Vec中已有还算详尽的叙述。简单总结下&#xff1a;word2vec是Google在2013年提出的一款开源工具&#xff0c;其是一个Deep Learning模型&#xff08;实际上该模型层次较浅&#xff0c;严格上还不能算是深层模型&#x…

​GENIUS: 根据草稿进行文本生成的预训练模型,可用于多种NLP任务的数据增强...

©PaperWeekly 原创 作者 | 郭必扬 单位 | 上海财经大学信息管理与工程学院AI Lab 论文标题&#xff1a; GENIUS: Sketch-based Language Model Pre-training via Extreme and Selective Masking for Text Generation and Augmentation 论文作者&#xff1a; Biyang Guo,…

UI自动化控制PC端微信获取当前群聊的群友列表

在一个月前,某个群友在获取整个群的群友信息时遇到了一点问题: 对整个群进行群友数据获取经测试确实有点棘手,下面我将我的解决过程公布给大家。 基础教程详见: https://blog.csdn.net/as604049322/article/details/121391639 人工打开要抓取的群聊窗口后,首先获取微信窗…

企业微信接入群聊机器人详细步骤

目录 一、 创建群机器人 二、机器人配置 三、机器人信息推送 四、线上使用 五、推送效果 一、 创建群机器人 先选择一个企业微信群右键添加机器人完善机器人的头像、名称即可 二、机器人配置 查看生成的机器人webhook地址点击地址&#xff0c;里面可以查看文档和一些简单的配…

每日学术速递2.1

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.Cv 1.SeaFormer: Squeeze-enhanced Axial Transformer for Mobile Semantic Segmentation 标题&#xff1a;SeaFormer:用于移动语义分割的挤压增强型轴向变换器 作者&#xff1a; Qian…

chatgpt赋能python:Python轨迹可视化:用数据讲故事

Python轨迹可视化&#xff1a;用数据讲故事 介绍 随着物联网、智能城市等领域的发展&#xff0c;越来越多的数据被收集下来并存储在数据库中。这些数据对于决策者来说是非常重要的&#xff0c;但是如何将这些数据进行展示和分析呢&#xff1f;这时候Python轨迹可视化就可以派…

AutoCV第八课:3D基础

目录 3D基础注意事项一、2023/5/11更新二、2023/5/15更新前言1. nuScenes数据集2. nuScenes数据格式3. 点云可视化4. 点云可视化工具5. 点云可视化(补充)总结 3D基础 注意事项 一、2023/5/11更新 新增工具可视化点云&#xff0c;即第 4 节内容 二、2023/5/15更新 经杜老师…

chatgpt赋能python:Python轨迹绘制:让数据可视化更易懂

Python轨迹绘制&#xff1a;让数据可视化更易懂 在数据可视化中&#xff0c;轨迹图应该是最为常见的一种类型了。轨迹图通过展示物体或用户在一定时间范围内移动的路径&#xff0c;帮助我们更加直观地理解和分析数据。 在Python中&#xff0c;我们可以使用多种库来绘制轨迹图…

chatgpt赋能python:Python坐标表示:让您的数据可视化更加精确!

Python坐标表示&#xff1a;让您的数据可视化更加精确&#xff01; 在数据可视化中&#xff0c;通过准确的坐标表示数据点的位置是非常重要的。Python作为最受欢迎的编程语言之一&#xff0c;有多种方法来表示坐标。在本文中&#xff0c;我们将深入探讨Python中坐标表示的不同…

chatgpt赋能python:Python色板介绍:让数据可视化更加迷人

Python色板介绍&#xff1a;让数据可视化更加迷人 在数据可视化中&#xff0c;合适的配色方案是非常重要的。Python色板是一种常用的工具&#xff0c;可以帮助数据分析师和科学家创建漂亮、易于阅读的图表。本文将为大家介绍Python色板&#xff0c;包括一些主流的Python色板、…

人生意义

一块蛋糕最终还是会被吃完&#xff0c;那么你吃它的目的是什么&#xff1f; 1.你不能因为一样美好的东西最终会消失而否定它的意义。 2.生命是一场馈赠。它和所有我们收到的其它礼物&#xff0c;比如蛋糕一样&#xff0c;本身并没有意义&#xff0c; 但如果你能享受它的美好…

程序员:我终于知道post和get的区别

效率工具传送门 推荐20套实战源码 程序员你可以考虑安装的15款谷歌插件 99%的人不知道搜索引擎的6个技巧 12款好用的Visual Studio插件&#xff0c;最后一款良心推荐 IT界知名的程序员曾说&#xff1a;对于那些月薪三万以下&#xff0c;自称IT工程师的码农们&#xff0c;其…

chatgpt赋能python:Python通过IP连接同一局域网中的电脑

Python通过IP连接同一局域网中的电脑 在日常工作中&#xff0c;我们常常需要在本地局域网内进行电脑之间的通信&#xff0c;这时候就需要借助一些工具来进行IP连接。而对于Python编程来说&#xff0c;实现这个过程也非常简单。 什么是IP连接 IP连接指的是使用IP地址和端口号…

chatgpt赋能python:Python获取电脑IP地址方法与实例

Python获取电脑IP地址方法与实例 什么是IP地址 IP地址是一个数字标识符&#xff0c;是指在Internet协议中用作网络接口标识和定位地址的32位二进制数&#xff0c;通常表现为四个十进制数&#xff0c;每个数用“.”分隔&#xff0c;如192.168.0.1。在不同的网络协议中&#xf…

win10计算机ip如何更改,Win10本地连接ip怎么更改_Win10怎么更改ip地址?-192路由网...

问&#xff1a;Win10本地连接IP地址怎么更改&#xff1f; 本人是电脑小白&#xff0c;新买的电脑&#xff0c;是Win10系统&#xff1b;请问Win10电脑中的IP地址在哪里更改&#xff1f; 答&#xff1a;Win10系统IP地址需要在“本地连接”的 属性 中进行更改的。所以&#xff0c;…

chatgpt赋能python:Python获得电脑IP地址

Python获得电脑IP地址 在进行网络编程时&#xff0c;通常需要获取本机的IP地址。对于Python开发者来说&#xff0c;获取电脑IP地址可能是开发过程中常见需求之一。本文将介绍如何使用Python获取电脑IP地址&#xff0c;以及其中的一些常见问题和解决方案。 什么是IP地址&#…

万字长文 | ChatGPT的工作原理(二)

— 6 — 嵌入的概念 神经网络 —— 至少在它们目前的设置中 —— 从根本上说是基于数字的。因此&#xff0c;如果我们要用它们来处理像文本这样的东西&#xff0c;我们就需要一种方法来用数字表示我们的文本。 当然&#xff0c;我们可以开始&#xff08;基本上就像 ChatGPT 那…

You don't have permission to access 权限问题

修改pip.ini配置文件如下&#xff1a; 综合搜索案例如下&#xff1a; 我遇到的情况是修改了&#xff0c;第一张图的配置&#xff0c;还是不行&#xff0c;那就是其他情况&#xff0c;虽然第二张图的这种写法&#xff0c;在线上是可以用的&#xff0c;但是在线下是不能用的&…

网络错误:windows无法访问\\,你没有权限访问\\

网络错误:windows无法访问\\&#xff0c;你没有权限访问\\ 电脑突然不能网络访问。 客户端&#xff1a;win10 服务器端&#xff1a;win2003 处理办法&#xff1a; 设置/控制面板/用户帐户/管理windows凭证 检查是否存在登录过的ip信息&#xff1a; 如果存在&#xff0c;删除…

关于访问权限控制问题

实际上Java中是有访问权限控制的&#xff0c;就是我们个人的隐私的一样&#xff0c;我不允许别人随便来查看我们的隐私&#xff0c;只有我们自己同意的情况下&#xff0c;才能告诉别人我们的名字、年龄等隐私信息。 所以说Java中引入了访问权限控制(可见性)&#xff0c;我们可…