论文解读:CLIP探索笔记(Learning Transferable Visual Models From Natural Language Supervision Alec)

CLIP探索笔记(Learning Transferable Visual Models From Natural Language Supervision Alec)

记录CLIP的流水账,训练和推理是如何完成的?
每一次阅读都有不同的领悟和发现,一些简单的想法。

在这里插入图片描述

官方信息

相关的文章

它想干嘛?

他想做一个分类任务,一个模糊分类的任务;
他还可以做图文匹配等;

之前看过这篇论文,但是有些步骤或者工作原理没想明白,看到后面越来越迷糊,越来越困惑,所以进一步深挖。

训练阶段

  • Text Encoder不需要训练,直接拿现成的文本模型来用就可以了,比如GPT,提取文本特征

    • Text Encoder可以是Bert, GPT
    • 作者统一采用GPT-2里的Transformer结构; 对于base size model,使用63M-parameter 12-layer 512-width model with 8 attention heads; model width则随着image encoder的size增加而增加。 输入句子的最大长度为76。
  • Image Encoder需要训练,提取图片特征

    • Image Encoder模型可以是vgg,resnet,vit等
    • 代码中用的是CNN,resnet结构
  • 计算余弦相似度

    • 论文中给出了伪代码,文本特征和图像特征,分别和真实标签特征做相似度计算,然后再求平均
  • 对角线是正样本

在这里插入图片描述

重点来看一下,LOSS的计算

在这里插入图片描述
假设一个batch中共有N对<图像,文字>对,经过Text Encoder和Image Encoder 后,就会分别产生:

  • N条文字向量: [ T 1 T_1 T1, T 2 T_2 T2,…, T n T_n Tn], N条特征对应上图中红色矩形框,维度是(N=128,D=512), 注意 T 1 T_1 T1就对应一条文本的特征,维度是D=512或者768,
  • N张图片向量: [ I 1 I_1 I1, I 2 I_2 I2,…, I n I_n In],N张特征对应上图中绿色矩形框,维度是(N=128,D=512),注意 I 1 I_1 I1就对应一张图的特征,维度是D=512或者768, 与文本的特征维度一致

得到文本特征和图像特征后,我们要干什么事?

T 1 T_1 T1 I 1 I_1 I1描述的同一个事,一句文本,一张图经过一顿操作后,得到了两个维度相等的向量,然后我们期望是什么呢?

  1. T 1 T_1 T1 I 1 I_1 I1,这两个向量是相等,最大化相等,也就是相似度最大,值为1。
  2. 同时,期望图像 I 1 I_1 I1和其他的文本,不要相似,相似度值为0;
  3. 还有,期望文本 T 1 T_1 T1和其他图像,也不要相似,相似度值为0。

这样,根据上面的3条件,就可以去计算梯度了。

接下来看一下, 红色框和绿色框做点积运算,得到相似度矩阵,也就是上图中的橙色矩形框;论文中给出的伪代码,对Text Encoder和Image Encoder输出的向量,先做了归一化,再做点积求相似度, 整个过程也就是余弦相似度。

在橙色矩形框中,它就是N个文本和N张图像,两两的做相似度计算,什么意思呢?

  1. 按行计算loss的时候, 也就是拿一张图像,去和N个文本做相似度计算,找到相似度最大的,也就是期望蓝色小块,相似度值接近1,同时,其他的白色小块相似度值接近0。
  2. 按列计算loss的时候,也就是拿一条文本,去和N张图像做相似度计算,找到相似度最大的,也就是期望蓝色小块,相似度值接近1,同时,其他的白色小块相似度值接近0。

结合上面说的3个期望条件,我们希望一个训练CLIP模型(Text Encoder和Image Encoder),让他输出的橙色矩形框:

  1. 蓝色小块的值接近1
  2. 白色小块的值接近0

调试代码
在这里插入图片描述
similarity就是橙色矩形框,也就是相似度矩阵,维度是(128,128)。

往下看计算loss,本来思路很清晰,看到这里,迷糊了:

labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0) 
loss_t = cross_entropy_loss(logits, labels, axis=1)

受分类loss的影响,绕不过来,是有n类嘛,可是这里没有分类的概念啊!
想了半天,原来这里的labels,不是类别标签, 而是制作GT标签,

labels = np.arange(n),做了one-hot后,对应GT标签,也就是橙色矩形框的GT标签类似这样

1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 0 1 

1为蓝色小块,0为白色小块,作为GT标签,不要往分类标签去想,和分类没半毛钱关系。
GT标签和预测值,按行,按列做交叉熵损失,相加求均值,就可以得到梯度反馈了。

下面是辅助理解的代码:
例子1:
矩阵乘法,也就是点积运算

import numpy as np
import torch

# numpy 矩阵乘法为 A@B 或 np.dot(A,B)
A = np.array([
    [1,2],
    [3,4]
])

B = np.array([
    [1,2],
    [3,4]
])

C1 = A @ B
C2 = np.dot(A,B)
print(C1)
print('---------')
print(C2)

# pytoch 矩阵乘法为 A@B 或 torch.matmul(A,B)
PA = torch.tensor(A)
PB = torch.tensor(B)
PC1 = PA @ PB
PC2 = torch.matmul(PA, PB)

print(PC1)
print('---------')
print(PC2)

例子2:
两个向量,做点积运算,

# A simple Example

batch_size = 4
dim = 256
embeddings = torch.randn(batch_size, dim)
out = embeddings @ embeddings.T
print(out)
print(F.softmax(out, dim=-1))

output:

tensor([[278.7493, -25.9693,  14.6406,   9.5813],
        [-25.9693, 237.4993,  25.0445,  -1.2630],
        [ 14.6406,  25.0445, 314.3572, -20.8825],
        [  9.5813,  -1.2630, -20.8825, 261.9082]])
tensor(
		[[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]])

最后,拓展一下,你会发现什么问题?
假设在一个batch里面,出现2个相似的样本,loss收敛就会有问题,所以,一个batch里面的样本,最好是什么状态呢? 最好是都不相关的样本,两两之间不要相似,这样我们的loss梯度,working效果最好。

LOSS的计算,到这里就结束了。

推理阶段

  • 对一张图,给出预设文本提示(任意n个),预设答案n个
    • 预设的文本提示很重要,影响特征值对比
    • 文本的预测是模糊预测的,比如:一只猪 或 有一头猪,和之前的VGG,resnet直接输出label值不同;
    • 以前咱们是直接预测是猫或是狗,CLIP说 我们不这样干,不做精准的文本预测,我们考虑做相关性预测
  • 计算图像数据的特征
  • 计算图像特征和文本特征的相似度,相似度最高的就是答案

在这里插入图片描述

代码测试

Hugging Face

代码复现

Flickr30k图像标注数据集下载及使用方法

参考阅读

交流群

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/283e2cf1d2bd474da10cda7dce21c879.jpeg

在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且漫CN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值