CLIP论文中关键信息记录

由于clip论文过长,一直无法完整的阅读该论文,故而抽取论文中的关键信息进行记录。主要记录clip是如何实现的的(提出背景、训练数据、设计模式、训练超参数、prompt的作用),clip的能力(clip的模型版本、clip的泛化能力)。

提出背景

1、text-to-text的训练方式彻底改变了NLP,其倡导使用任务不相干的数据训练模型,是的模型在计算量、数据规模、模型精度上不断提升。大数据下训练的模型具备极强的zero-shot能力

2、ImageNet是图像领域的基础大数据,其表明在大规模数据集训练后模型具备极强可扩展能力。NLP也可以采用这种模式进行研究

3、目前使用自然语言监督进行图像表示学习仍然很少,该类方法的精度远低于若干年前的计算机视觉方法

训练数据

构建了一个新的数据集,其中包括4亿对(图像,文本),这些数据集从互联网上的各种公开来源中收集起来。为了尽可能广泛地覆盖一组视觉概念,我们搜索(图像、文本)对作为构建过程的一部分,其文本包含50万个查询中的一个。我们大概通过每个查询包含多达20,000对(图像、文本)来平衡结果。所得到的数据集与用于训练GPT-2的WebText数据集具有相似的总字数。我们将这个数据集称为“智慧的网络图像文本”。

在论文附录的表9中提供了多个公开数据集的数量量与类别数,可以做一个额外知识了解一下。
在这里插入图片描述

clip模式设计的由来

现有的图像分类模型只能预测1000个ImageNet类时,从自然语言中学习一组开放的视觉概念的任务似乎很艰巨。在我们的努力过程中,我们发现训练效率是成功扩展自然语言监督的关键,因此我们基于这个指标选择了最终的训练方法。

论文最初的方法,类似于VirTex,从头开始联合训练了一个图像CNN和文本Transformer来预测一个图像的标题。这里可以表明基于Transformer 语义模型根据图片预测词汇效率不高然而,我们在有效地扩展这种方法时遇到了困难。在图2中,我们展示了一个6300万参数Transformer语言模型,它已经使用了其ResNet-50图像编码器的两倍计算,学习识别ImageNet类比一个更简单的基线预测相同文本的模型通用的图像分类模型慢三倍。

最终表明,基于对比度的学习效率是最高的。
在这里插入图片描述
CLIP方法与图像分类方法都有一个关键的相似之处。他们试图预测每张图片附带的文本的确切文字。这是一项困难的任务,因为有各种各样的描述、评论和相关的文本与图像共存。最近在图像的对比表示学习方面的工作发现,对比目标比其等效的预测目标可以学习更好的表示。们探索了训练一个系统来解决潜在的更容易的代理任务,即只预测哪个文本整体与哪个图像配对,而不是该文本的确切单词。从相同的单词袋编码基线开始,我们将预测目标替换为图2中的一个对比目标,并观察到转移到ImageNet的零镜头转移率的效率进一步提高了4倍。

clip的训练与使用流程

具体训练流程如下:

给定一批N(图像,文本)对,CLIP被训练来预测一批中可能发生的N×N(图像,文本)配对。CLIP将学习一个多模态编码空间通过联合训练图像编码器和文本编码器,以最大化批中N个实对的图像和文本嵌入的余弦相似度,同时最小化N2−N个错误对嵌入的余弦相似度。我们优化了这些相似性分数上的对称交叉熵损失。具体伪代码如下所示:
在这里插入图片描述
具体使用流程:
1、对图像组与词汇组进行编码(分别由图像编码器与图像编码器实现)
2、计算图片特征与词汇特征的相似度
3、
在这里插入图片描述

模型版本

clip一共有resnet、vit两个系列,其中5个resnet和3个视觉Transformer。对于ResNets,我们训练一个ResNet-50,一个ResNet-101,然后再训练3个ResNet,它们遵循高效的net式模型缩放,使用大约ResNet-50计算的4倍、16倍和64倍。它们分别记为RN50x4、RN50x16和RN50x64。对于视觉Transformer,我们训练了ViT-B/32、ViT-B/16和ViT-L/14。
在这里插入图片描述
基于论文中的图标,可以发现VIT系列的模型在同等gflop下,acc比ResNet模型高2~3个点,这里博主觉得ViT-B/16模型是性价比最好的。
在这里插入图片描述
论文中的图12也表明,与在ImageNet上预先训练的模型相比,CLIP的特性对任务转移更健壮。对于这两个数据集分割,在CLIP模型表示上训练的线性探针的迁移分数都高于其他具有类似ImageNet性能的模型。这表明,在ImageNet上训练的模型的表示在某种程度上过于适合它们的任务
在这里插入图片描述
在论文附录中,各模型版本在27个数据集上的zero-shot性能,可以发现分辨率从224提升到336后,模型精度提升比较明显。
在这里插入图片描述

训练超参数

这里可以发现clip训练时的batchsize是3w多,词汇表接近5w(这表明clip支持对5w多个词汇的编码),训练epoch为32。

我们训练了所有的模型32个epoch。我们使用Adam优化器(Kingma & Ba,2014)和解耦的权重衰减正则化(Loshchilov & Hutter,2017),应用于所有非增益或偏差的权重,并使用余弦调度来衰减学习率(Loshchilov & Hutter,2016)。初始超参数是在训练1个epoch,使用网格搜索,随机搜索和对基线ResNet-50模型进行手动调整的组合来设置的。然后,由于计算约束,超参数被启发式地适用于更大的模型。可学习温度参数τ初始化为(Wu et al.,2018)的0.07,并进行裁剪以防止缩放到100以上,我们发现这是防止训练不稳定性所必要的。我们使用一个非常大的小批量,32768。混合精度(Micikevicius et al.,2017)用于加速训练和保存记忆。为了节省额外的内存,梯度检查点(格里ewank&Walther,2000;陈等人,2016)、半精度Adam(Dhariwal等人,2020)和半精度的文本编码器权重。嵌入相似性的计算也被分割了,因为单个gpu只计算其局部批嵌入所需的成对相似性的子集。最大的ResNet型号,RN50x64,在592个V100gpu上训练花了18天,而最大的视觉Transformer在256个V100gpu上训练花了12天。对于ViT-L/14,我们还以更高的336像素分辨率进行了一个额外的epoch的预训练,以提高类似于FixRes的性能(Touvron等人,2019年)。我们将这个模型表示为ViT-L/14@336px。除非另有说明,本文中报告的“CLIP”结果都使用我们认为表现最好的模型。
在这里插入图片描述

prompt工程对训练的影响

大多数图像分类数据集都是以事后编码的方式对信息进行描述,只用标签的一个类别id来标注图像,并将类别id映射到特定的字符名称上事后编码。一些数据集,如Flowers102和GTSRB,在他们发布的版本中似乎根本没有包含这个类别映射,不利于零样本迁移。对于许多的数据集,我们观察到他们的标签选择有些随意,只依赖任务的标签编码进行迁移,而在训练中不考虑zero-shot转移相关的问题。图像数据集以map的决定了与自然语言的关联,没有考虑到类别信息的迁移性

一个常见的问题是ploysemy。当一个类的名称是提供给CLIP的文本编码器的唯一信息时,由于缺乏上下文,它无法区分这意味着哪个词的意义。在某些情况下,同一个单词的多个含义可能会作为不同的类包含在同一个数据集中。这发生在ImageNet中,它包括建筑起重机和飞行的起重机。另一个例子是在Oxford-IIIT宠物数据集的类别中,从上下文来看,boxer显然指的是一种狗,但缺乏上下文的文本编码器同样可能指一种运动员。图像数据集的信息标签与语境相关,存在多义词。如cranes、boxer

我们遇到的另一个问题是,在我们的训练前的数据集中,与图像配对的文本只是一个单词是相对罕见的。通常文本是一个完整的句子,以某种方式描述图像。为了帮助弥合这种分布差距,我们发现使用prompt模板“A photo of a {label}.”。作为一个帮助指定文本的默认值,是关于图像的内容。这通常可以提高在仅使用标签文本的基准之上的性能。例如,仅使用这个提示符就可以使ImageNet的准确率提高1.3%。通过prompt模板将label构造为完整的自然语言,将精度在ImageNet上的精度提升了1.3%

类似于关于GPT-3的“prompt engineering”讨论(Brown等人,2020年;Gao等人,2020年),我们还观察到,通过为每个任务定制提示文本,可以显著提高zero-shot性能。下面是几个非详尽的例子。我们在几个细粒度的图像分类数据集上发现,它有助于指定类别。例如,在Oxford-IIIT宠物上,使用“A photo of a {label}, a type of pet.” 为了帮助提供上下文,工作效果很好。同样,在食物101上指定一种食物,在FGVC飞机上一种飞机也有帮助。对于OCR数据集,我们发现在需要识别的文本或数字周围添加引号可以提高性能。最后,我们发现,在卫星图像分类数据集上,它有助于指定图像是这种形式的,我们使用了f “a satellite photo of a {label}.”. 通过更多的语义背景信息融入label的prompt模板,更有利于提升zero-shot性能。具体如类别背景、数据领域

我们还尝试了集成多个zero-shot分类器作为另一种提高性能的方法。这些分类器是通过使用不同的上下文提示来计算的,比如“A photo of a big {label}”和“A photo of a small {label}”。我们在嵌入空间而不是概率空间上构造集合。这允许我们缓存一组平均文本嵌入,以便当在许多预测上摊销时,集成的计算成本与使用单个分类器相同。我们已经观察到对许多生成的zero-shot分类器的集成,以可靠地提高性能,并将其用于大多数数据集。在ImageNet上,我们集成了80个不同的上下文提示,这比上面讨论的单个默认提示额外提高了3.5%的性能。综合考虑,快速工程和集成将ImageNet精度提高近5%。在图4中,我们可视化了与Li等人(2017)中所述的无上下文基线方法相比,快速工程和集成如何改变一组CLIP模型的性能。针对图像数据中的目标成像特性,对一个数据集生成差异化的prompt更有利于提升精度,如尺度信息、目标背景信息等,通过该手段集成了80个不同的上下文提示,将ImageNet精度提高近5%。

在这里插入图片描述

clip的泛化性

在这里插入图片描述

CLIP在27个数据集中,有16个获胜。查看单个数据集可以发现一些有趣的行为。在细粒度的分类任务上,我们观察到它在性能上的广泛分布。在其中两个数据集上,Stanford Cars和Food101,zero-shot CLIP在ResNet-50特性上的表现超过逻辑回归超过20%,而在flowers102和FGVC飞机上,zero-shot CLIP的表现落后超过10%。在Oxfordpets和Birdsnap上,表现更接近。我们怀疑这些差异主要是由于WIT和ImageNet之间每个任务监督数量不同。在“一般”对象分类数据集上,如ImageNet、CIFAR10/100、STL10和PascalVOC2007的性能相对相似,在所有情况下,zero-shot CLIP都有轻微的优势。在STL10上,CLIP总体上达到了99.3%,这似乎是一种新的技术状态,尽管没有使用任何训练示例。Zero-shot CLIP在两个测量视频动作识别的数据集上显著优于ResNet-50。在Kinetics700上,CLIP的性能比ResNet-50高出14.5%。Zero-shot CLIP在UCF101上的性能也比ResNet-50的功能高出7.7%。我们推测,这是由于自然语言与ImageNet中以名词为中心的宾语监督相比,为涉及动词的视觉概念提供了更广泛的监督。对于泛意义上的图像数据进行迁移zero-shot CLIP都能表现出较优的性能

zero-shot CLIP的表现局部明显不佳,我们看到,零镜头CLIP 在一些专门的、复杂的或抽象的任务,如卫星图像分类(EuroSAT和RESISC45),淋巴结肿瘤检测(PatchCamelyon),计数对象(CLEVRCounts),自动驾驶相关的任务,如德国交通标志识别(GTSRB),识别到最近的汽车的距离(KITTIDistance)。这些结果突出了零镜头CLIP 在更复杂的任务上的能力较差。相比之下,非专家的人类可以稳健地执行其中的一些任务,如计数、卫星图像分类和交通标志识别,这表明有很大的改进空间。然而,我们需要注意的是,目前还不清楚测量zero-shot转移,而不是少射击转移,是否能对学习者之前没有经验的困难任务进行有意义的评估,比如几乎所有人类的淋巴结肿瘤的淋巴结肿瘤分类。在专业领域的图像数据上进行迁移zero-shot CLIP都能表现出较优的性能

当将zero-shot性能与完全监督模型进行比较时,CLIP的任务学习能力,与少射击方法相比是一个更直接的比较,因为zero-shot是它的极限。在图6中,我们可视化了zero-shot CLIP与许多图像模型特征的对比,包括最佳公开的ImageNet模型、自监督学习方法和CLIP本身。虽然可以直观地期望零镜头低于one-shot,但我们发现zero-shot CLIP在相同特征空间上与4次逻辑回归后模型的性能。这可能是由于zero-shot和少射方法之间的重要区别。首先,CLIP的零镜头分类器是通过自然语言生成的,它允许视觉概念被直接指定(“沟通”)。
在这里插入图片描述
相比之下,“正常的”监督学习必须从训练的例子中间接地推断出概念。无上下文的基于示例的学习的缺点是,许多不同的假设可以与数据保持一致,特别是在一次性的情况下。单个图像通常包含许多不同的视觉概念。虽然一个有能力的学习者能够利用视觉线索和启发式,设定被演示的概念是图像中的主要对象,但这并不能是所有的图像都如此。当图像目标不是类别标签的主体是,监督学习的信息错误率更高,而prompt一定程度上降低信息错误率

zero-shot和少镜头性能之间的差异的一个潜在解决方案是使用CLIP的零镜头分类器作为少射击分类器的权重的先验。虽然对生成的权值添加L2惩罚是这个想法的一个简单实现,但我们发现超参数优化通常会选择这个正则化器的如此之大的值,以至于产生的少镜头分类器“只是”零镜头分类器。研究将zero-shot转移的强度与few-shot学习的灵活性相结合的更好的方法,是未来工作的一个很有前途的方向。基于zero-shot生产的few-shot模型利用了zero-shot先验,这使得研究者需要设置正则化来平衡先验与新数据适配

当在其他模型的特征上比较zero-shot CLIP和少镜头逻辑回归时,zero-shot CLIP大致与我们的评估套件中表现最好的16-shot分类器的性能相匹配,该套件使用了在ImageNet-21K上训练的BiT-M ResNet-152x2的特征。我们确信,在JFT-300M上训练的BiT-L模型会表现得更好,但这些模型还没有公开发布。BiT-M ResNet-152x2在16-shot设置中表现最好有些令人惊讶,因为正如第3.2节所分析的,在27个数据集上,Noisy Student EfficientNet-l2在完全监督设置中平均表现出近5%。

除了研究零镜头CLIP和少镜头逻辑回归的平均性能外,我们还检查了在单个数据集上的性能。在图7中,我们展示了在同一特征空间上的逻辑回归分类器需要匹配零镜头CLIP性能的每个类的标记示例数量的估计值。由于零镜头CLIP也是一个线性分类器,这估计了在这种设置下零镜头传输的有效数据效率。为了避免训练成千上万的线性分类器,我们基于1、2、4、8、16样本训练(如果可能的话)的性能和在每个数据集上训练一个完全监督的线性分类器来估计有效的数据效率。我们发现zero-shot转移对每个数据集的效率有很大的变化,从每个类少于1个标记的示例到184个。两个数据集,Flowers102 and EuroSAT表现不足的一次性模型。一半的数据集每个类需要的例子少于5个例子,中位数为5.4。然而,平均估计的数据效率是每个类的20.8个例子。这是由于在20%的数据集中,监督分类器需要每个类有许多标记的示例来匹配性能。在ImageNet上,零镜头CLIP与在相同特征空间上训练的16样本-shot线性分类器的性能相匹配。
在这里插入图片描述
如果我们假设评估数据集足够大,在它们上训练的线性分类器的参数可以很好地估计,那么,因为CLIP的零镜头分类器也是一个线性分类器,完全监督分类器的性能大致为零镜头传输设定了一个上界。在图8中,我们比较了CLIP的zero-shot性能与跨数据集的完全监督线性分类器。虚线,y = x线表示一个“最优”零镜头分类器,匹配其完全监督等价的性能。对于大多数数据集,zero-shot分类器的性能仍然比完全监督分类器低10%到25%,这表明在提高CLIP的任务学习和zero-shot转移能力方面仍有很大的净空间。
在这里插入图片描述
zero-shot性能与完全监督性能之间的正相关关系为0.82(p值<10−6),这表明CLIP在连接潜在的表征和任务学习与zero-shot转移方面是相对一致的。然而,零镜头CLIP只能在5个数据集上接近完全监督的性能: STL10, CIFAR10, Food101, OxfordPets, and Caltech101。在所有5个数据集上,zero-shot精度和完全监督精度均超过90%。这表明,对于那些高质量的任务,CLIP在zero-shot转移中可能更有效。预测zero-shot性能作为完全监督性能函数的预测的线性回归模型的斜率估计,完全监督性能每提高1%,zero-shot性能就会提高1.28%。然而,95百分位的置信区间仍然包括小于1(0.93-1.79)的值。

在过去的几年中,深度学习系统的实证研究已经证明,性能可以作为一个重要的量来预测的函数,如训练计算和数据集大小(Hestness等,2017;Kaplan等,2020年)。到目前为止,GPT系列的模型已经在1000倍的训练计算增长中证明了zero-shot性能的持续改进。在图9中,我们检查了CLIP的zero-shot性能是否遵循类似的缩放模式。我们绘制了对36个不同数据集的39个ResNet CLIP模型的平均错误率,发现在模型计算增加44倍时,CLIP存在类似的对数-对数线性缩放趋势。虽然总体趋势是平稳的,但我们发现,个人评估的表现可能要嘈杂得多。这是由于在子任务上的个体训练运行之间的高度差异(如D‘Amour等人(2020))掩盖了稳步改善的趋势,或者作为某些任务的计算函数,性能实际上是非单调的。
在这里插入图片描述

一个理想的鲁棒模型(虚线)在ImageNet分布和其他自然图像分布上表现得同样良好。零镜头CLIP模型将这种“鲁棒性差距”缩小了高达75%。对logit转换值的线性拟合显示与自举估计的95%置信区间。(右)可视化香蕉的分布转移,一个类在7个自然分布转移数据集中的5个中共享。将最佳零镜头CLIP模型ViT-L/14@336px的性能与在ImageNet验证集ResNet-101上具有相同性能的模型进行了比较
在这里插入图片描述
基于论文中表5的数据可以发现,在human分类任务中,zero-shot的clip模型比线性分类程序精度更高,同时也可以发现few-shot的clip相比于zero-shot精度提升并不明显。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

感知器神经网络

1、原理 感知器是一种前馈人工神经网络&#xff0c;是人工神经网络中的一种典型结构。感知器具有分层结构&#xff0c;信息从输入层进入网络&#xff0c;逐层向前传递至输出层。根据感知器神经元变换函数、隐层数以及权值调整规则的不同&#xff0c;可以形成具有各种功能特点的…

学习笔记 韩顺平 零基础30天学会Java(2024.9.15)

P557 泛型应用实例 P558 泛型使用细节1 P560 泛型使用细节2 P560 泛型课堂练习 代码见Exceise P561 自定义泛型类 对于第二点&#xff0c;因为不知道类型&#xff0c;所以不知道开辟多少空间&#xff0c;因此不能初始化 第三点&#xff0c;静态方法与类相关的&#xff0c;在类…

LeetCode[中等] 189.轮转数组

给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 思路 创建一个新数组&#xff0c;存储原数组旋转后的元素&#xff0c;然后将新数组中的元素复制回原数组。 public class Solution {public void Rotate(int[] nums, int k)…

【docker】阿里云使用docker,2024各种采坑

▒ 目录 ▒ &#x1f6eb; 导读需求开发环境 1️⃣ dial tcp: lookup on 8.8.8.8:53: no such host失败属于DNS问题 2️⃣ docker镜像配置配置最新镜像源 3️⃣ 【重点】阿里云专用获取自己的镜像加速器地址配置镜像地址 &#x1f6ec; 文章小结&#x1f4d6; 参考资料 &#x…

一款强大的吉他乐谱编辑软件GuitarPro 8.2中文解锁版

GuitarPro 8.2中文解锁版是一款强大的吉他乐谱编辑软件&#xff0c;适合新手和专业乐手。它提供详尽教程和实用工具&#xff0c;助力初学者掌握吉他技巧&#xff1b;对于专业乐手&#xff0c;它精准记录音符和节奏&#xff0c;提供丰富编辑功能和音效处理。此外&#xff0c;软件…

虽难必学系列:Netty

Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架&#xff0c;广泛用于构建各类网络应用&#xff0c;尤其是在高并发、低延迟场景下表现出色。作为一个开源项目&#xff0c;Netty 提供了丰富的功能&#xff0c;使得开发者可以轻松构建协议服务器和客户端应用程序。…

图像生成领域老牌的GAN模型简要回顾

&#x1f367;背景 这篇文章内容很浅&#xff0c;只是个基础概念介绍&#xff0c;无深度分析。 生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;简称GAN&#xff09;是一种深度学习模型&#xff0c;由Ian Goodfellow等人在2014年提出&#xff0c;没错&…

【路径规划】全局路径规划算法,基于RRT算法家族的改进

摘要 本项目对经典的 RRT* 算法进行了改进&#xff0c;开发了 Informed-RRT* 算法&#xff0c;用于高效的全局路径规划。Informed-RRT* 通过引入启发式搜索和路径优化策略&#xff0c;在经典 RRT* 的基础上显著提高了路径质量和搜索效率。该算法特别适用于复杂环境中的高维路径…

信号的产生,保存与处理

1.信号的概念&#xff1a; 在生活中的信号&#xff1a;红绿灯&#xff0c;下课铃声&#xff0c;闹钟 红绿灯&#xff0c;你为什么认识红绿灯&#xff1f; 1.能识别红绿灯 2.能理解红灯绿灯黄灯 也就是说信号在还没产生的时候&#xff0c;我们已经认识信号并知道如何去处理…

数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例

时间序列概况在日常生活和专业研究中都很常见。简而言之,时间序列概况是一系列连续的数据点 y(0), y(1), …, y(t) ,其中时间 t 的点依赖于时间 t-1 的前一个点(或更早的时间点)。 在许多应用中,研究者致力于预测时间序列概况的未来行为。存在各种建模方法。这些模型通常基于过…

算法:76.最小覆盖子串

题目 链接&#xff1a;leetcode链接 思路分析&#xff08;滑动窗口&#xff09; 还是老样子&#xff0c;连续问题&#xff0c;滑动窗口哈希表 令t用的hash表为hash1&#xff0c;s用的hash表为hash2 利用hash表统计窗口内的个字符出现的个数&#xff0c;与hash1进行比较 选…

Java数据存储结构——平衡二叉树

文章目录 22.1.3 平衡二叉树22.1.3.1 LL22.1.3.2 LR22.1.3.3 RR22.1.3.4 RL 22.1.3 平衡二叉树 平衡二叉树的特点&#xff1a; 二叉树左右两个子树的高度差不超过1任意节点的左右两个子树都是一颗平衡二叉树 在原来的平衡二叉树中&#xff0c;新增数据会破坏平衡性&#xff…

【CMake】使用CMake在Visual Studio 构建多cpp文件项目

首先&#xff0c;我们在 C m a k e Cmake Cmake文件下写入以下代码&#xff1a; #需求的最低cmake程序版本 cmake_minimum_required(VERSION 3.12)#本工程的名字 project(OpenGL)#支持的C版本 set(CMAKE_CXX_STANDARD 20)#本工程主程序文件及输出程序名称&#xff0c;生成exe …

信奥初赛解析:1.1-计算机概述

目录 前言 知识要点 一、发展史 二、计算机的分类 三、计算机的基本特征 四、计算机的应用 课堂练习 题目列表 定项选择题 不定项选择题 参考答案 定项选择题 不定项选择题 前言 从今天开始&#xff0c;我们要重点讲初赛内容&#xff0c; 预计讲半年&#xff0c;信…

【漏洞复现】金某云星空ERP GetImportOutData .net反序列化漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

★ C++进阶篇 ★ 多态

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C进阶篇第一章----多态 ~ ❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页&#xff1a;椎名澄嵐-CSDN博客 C基础篇专栏&#xff1a;★ C基础篇 ★_椎名澄嵐的博客-CSDN博客 …

make 和 Makefile/makefile

1.概念 make 是一条命令 &#xff0c; Makefile/makefile是一个文件。 【 makefile 是一个 写了如何编译文件&#xff0c;形成可执行程序的文件】 2. 语法 1. 基本语法 依赖关系 // 依赖关系 由 目标名和依赖文件列表组成&#xff0c;语法为 目标名 : 依赖文件列表 【Ta…

Playwright快速入门(TypeScript版)

文章目录 1. 前言1. 系统环境要求2. Playwright介绍3. 安装Playwright4. 运行示例测试5. HTML 测试报告6. 在UI模式下运行测试示例7. 更新Playwright版本 1. 前言 Playwright 相比 Selenium&#xff0c;具有多浏览器支持、现代化 API、更快性能、精细页面控制、自动等待元素、…

医学数据分析实训 项目三 关联规则分析作业--在线购物车分析--痹症方剂用药规律分析

文章目录 项目三 关联规则分析一、实践目的二、实践平台三、实践内容任务一&#xff1a;在线购物车分析&#xff08;一&#xff09;数据读入&#xff08;二&#xff09;数据理解&#xff08;三&#xff09;数据预处理&#xff08;四&#xff09;生成频繁项集&#xff08;五&…

什么是 HTTP/3?下一代 Web 协议

毫无疑问&#xff0c;发展互联网底层的庞大协议基础设施是一项艰巨的任务。 HTTP 的下一个主要版本基于 QUIC 协议构建&#xff0c;并有望提供更好的性能和更高的安全性。 以下是 Web 应用程序开发人员需要了解的内容。 HTTP/3 的前景与风险 HTTP/3 致力于让互联网对每个人…