CLIP学习笔记

CLIP是一个神经网络,它使用自然语言来监督视觉训练,可以将它运用到任何视觉分类任务,具体的就是将类别的名字用自然语言进行描述,然后和图片一起进行混合编码,可以0样本学习(zero-shot learning)。值得注意的是,该神经网络并没有使用到标签,是自监督学习。

背景

SimCLR

自监督学习会涉及到对比学习的概念,SimCLR [1](A Simple Framework for Contrastive Learning of Visual Representations)是一种对比学习网络,可以对含有少量标签的数据集进行训练推理,它包含无监督学习和有监督学习两个部分。

在第一阶段先进行无监督学习,对输入图像进行两次随机图像增强,即由一幅图像得到两个随机处理过后的图像,依次放入网络进行训练,计算损失并更新梯度。如图所示,将小狗进行了两次随机图像变换,再经过残差网络,进行图片编码,使用一个MLP(多层感知机)做预测或者投影到另外一个空间,进行横向比较,从同一个图像生成的结果相近,与猫对比,则相差较远,损失函数目的就是使得两个正样本距离更近([latex] z_{ \theta } [/latex],[latex] z_{\theta}^{0} [/latex]),与负样本之间的距离更远([latex] z_{ \theta } {1} [/latex])。第二阶段,加载第一阶段的特征提取层训练参数,用少量带标签样本进行有监督学习(只训练全连接层)。这一阶段损失函数为交叉熵损失函数CrossEntropyLoss[2]

BYOL

再进一步发展,提出了一种新的自监督学习方法,BYOL(Bootstrap Your Own Latent)[3][4],和以往需要大量负样本的对比学习方法不同(SimCLR),BYOL不依赖于负样本对。

BYOL使用online和target两个神经网络来学习,online网络由一组权重定义并由三个阶段组成:encoder 、projector(投影到同一个空间) 、predictor 。target与online架构相同,但使用不同的参数。target提供了用于训练online的回归目标,其参数是online参数的指数移动平均值。学习loss的梯度只会反向传播给online网络,不会反向传播给target网络,类似于MoCo[5],target网络使用动量更新,相当于target模拟给online提供了一个负样本。(补充:为什么使用指数移动平均值,整体网络的不确定性很大,target和online同时学习,很快就会收敛,收敛到online和target结果一致,也就是模式崩塌,loss为0,然而并不希望出现这样的结果,通过降低学习的效率来避免这样的情况,也就是target不进行学习,target通过历史online进行慢慢的更新,online预测结果和target进行对比,计算损失,更新迭代)

CLIP

CLIP模型由图像编码器和文本编码器两个部分组成,图像编码器负责将图像转换为特征向量,可以是卷积神经网络或Transformer模型(ViT)[7],文本编码器负责将文本转换为特征向量,通常是一个transformer模型,通过共享一个向量空间来实现跨模态的信息交互。

模型的输入是一个图片和文字的配对,图片输入到图片编码器,得到一个特征向量,文本会通过一个文本编码器,从而得到对应文本的特征向量。CLIP会在这些特征上做对比学习,配对的图片文本对就是正样本,在矩阵中对角线上的即正样本,有N个正样本,[latex]N^{2}-N[/latex]个负样本。

clip中没有分类头,进行预测的话,这里做了一个处理,就是将数据集中的类别描述成一个句子,以 ImageNet 为例,CLIP 先把 ImageNet 这1000个类(如图中"plane", “car”, “dog”, …, “brid”)变成一个句子,也就是将这些类别去替代 “A photo of a {object}” 中的 “{object}” ,以 “plane” 类为例,它就变成"A photo of a plane",那么 ImageNet 里的1000个类别就都在这里生成了1000个句子,然后通过先前预训练好的 Text Encoder 就会得到1000个文本的特征。

在推理时,只要把这张图片扔给 Image Encoder,得到图像特征后,就拿这个图片特征去跟所有的文本特征去做 cosine similarity(余弦相似度)计算相似度,看这张图片与哪个文本最相似,就把这个文本特征所对应的句子挑出来,从而完成分类任务。

参考

[1]SimCLR图像分类——pytorch复现_simclr pytorch-优快云博客

[2]Pytorch CrossEntropyLoss() 原理和用法详解-优快云博客

[3]BYOL(NeurIPS 2020)原理解读-优快云博客

[4]深度学习(自监督:BYOL)——Bootstrap Your Own Latent A New Approach to Self-Supervised Learning_byol, bootstrap your own latent-优快云博客

[5]深度学习(自监督:MoCo)——Momentum Contrast for Unsupervised Visual Representation Learning-优快云博客

[6]CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibili

[7]深入浅出一文图解Vision in Transformer(ViT)

[8]【CLIP】多模态预训练模型CLIP论文详解-优快云博客

### 关于DVWA靶场搭建过程中出现404错误的解决方案 在DVWA靶场搭建的过程中,如果遇到404错误,通常是因为服务器无法找到目标页面或资源。以下是可能的原因及其解决方法: #### 1. **检查文件路径** 确保DVWA解压后的文件夹已正确放置到PHPStudy的网页根目录下。对于PHPStudy,默认的网页根目录通常是`C:\phpstudy_pro\WWW`[^2]。确认DVWA文件夹名称是否与访问URL一致。例如,如果文件夹名为`DVWA-master`,则应通过`http://127.0.0.1/DVWA-master`访问。 #### 2. **验证Apache服务状态** 确保Apache服务已经成功启动。可以通过PHPStudy控制面板查看并启动Apache服务。如果服务未正常运行,则可能导致请求的目标页面不可达[^4]。 #### 3. **配置Apache虚拟主机** 有时需要手动调整Apache的配置文件来支持自定义路径。打开`httpd.conf`文件(位于`C:\phpstudy_pro\Extensions\Apache\conf`),查找以下两行内容并取消注释: ```apache LoadModule rewrite_module modules/mod_rewrite.so <Directory "C:/phpstudy_pro/WWW"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All </Directory> ``` 保存更改后重启Apache服务[^4]。 #### 4. **检查权限设置** 确保DVWA所在的目录具有足够的读取和执行权限。可以在命令提示符中运行以下命令赋予相应权限: ```bash icacls C:\phpstudy_pro\WWW\DVWA-master /grant Everyone:F /T ``` #### 5. **浏览器缓存清理** 有时候浏览器会因为缓存问题而返回旧的结果。尝试清除浏览器缓存或者更换不同的浏览器重新访问网站[^3]。 #### 6. **数据库初始化** 即使能够加载初始界面,但如果某些功能模块依赖的数据表尚未创建也可能引发类似的错误表现形式之一即表现为部分链接指向不存在的内容从而触发HTTP Status Code 404响应消息;因此建议按照官方文档指引完成必要的SQL脚本导入操作以便建立起完整的后台支撑结构体系[^1]。 --- ### 示例代码片段 当修改配置文件时,请注意以下示例中的语法准确性: ```php <?php $_DVWA['db_server'] = '127.0.0.1'; $_DVWA['db_user'] = 'root'; $_DVWA['db_password'] = ''; // 如果设置了密码,请填写实际值 ?> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lumos~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值