【论文阅读笔记】VLP: A Survey on Vision-language Pre-training

目录

  • 前言
  • 2 特征提取(Feature extraction)
    • 2.1.1 图象特征提取
      • OD-based Region feature / RoI
      • Freeze the pre-trained object detectors
      • Grid features(网格特征)
      • CNN-GFs
      • End-to-End Training(端到端训练)
      • ViT-PFs
    • 2.1.2 视频特征提取
      • ResNet (残差神经网络)
      • I3D(Inflated 3D ConvNets)
      • fully-connected (FC) layer (全连接层)
    • 2.1.3 文本特征提取
    • 2.2 特征表示
      • uni-model (单模态)
      • the standard transformer encoder (标准transformer编码器)
      • Self-Attention Mechanism(自注意力机制)
      • Feedforward Neural Network(前馈神经网络)
  • 3 模型结构
    • 3.1 Single-stream versus Dual-stream
      • single-stream architecture(单流结构)
      • Dual-stream (双流结构)
    • 3.2 Encoder-only versus Encoder-decoder
      • Encoder (编码器)
      • Decoder (解码器)
  • 4 训练目标
    • 4.1 Masked language modeling (MLM 掩码语言模型)
    • 4.2 Prefix language modeling (PrefixLM 前缀语言建模)
      • sequence-to-sequence framework (seq2seq)
      • PrefixLM
    • 4.3 Masked vision modeling (MVM 掩码视觉模型)
      • Masked features regression (掩码特征回归)
      • Masked feature classification(掩码特征分类)
        • hard label (硬标签)
        • soft label (软标签)
          • Kullback-Leibler 散度
        • Faster R-CNN
    • 4.4 Vision-language matching(视觉语言匹配 VLM)
      • single-stream && dual-stream(单流架构和双流架构)
      • 正负样本对
    • 4.5 Vision-language contrastive learning(视觉语言对比学习 VLC)
    • 4.6 Word-region alignment (单词-区域对齐 WRA)
      • WRA基本原理
      • 最优传输 (Optimal Transport, OT)
        • 边缘分布
        • 传输成本
        • 最优传输距离
        • 计算方法
      • IPOT算法
    • 4.7 Frame order modeling (框架顺序建模 FOM)
    • 4.8 Particular pre-training objects (特定的预训练对象)

前言

  最近也是加入了学长学姐的课题组,没时间慢慢学CNN了,所以:
  让我们看论文~

  这个专栏主要用于记录一个新手看论文过程中遇到的不懂的名词。
  由于不确定能不能直接把原文贴出来,这里就不放原文链接了。

2 特征提取(Feature extraction)

2.1.1 图象特征提取

OD-based Region feature / RoI

在这里插入图片描述
  已有的模型会提取图象中的特征框,并算出特征向量,而VLP会将特征框的位置信息(左下角和右上角)嵌入到特征向量中,得到OD-RFs。这个过程被称为视觉几何嵌入(visual geometry embedding)。

Freeze the pre-trained object detectors

  这一操作是冻结预训练的目标检测器,即在预训练过程中保持目标检测器的参数不变,而去改变其他模块的参数。
  这样做可以减少提取区域特征的耗时,但限制了VLP模型的能力(不确定capacity应该翻译为容量还是能力)。

Grid features(网格特征)

在这里插入图片描述

CNN-GFs

在这里插入图片描述

End-to-End Training(端到端训练)

在这里插入图片描述

ViT-PFs

在这里插入图片描述

2.1.2 视频特征提取

ResNet (残差神经网络)

在这里插入图片描述

I3D(Inflated 3D ConvNets)

在这里插入图片描述

fully-connected (FC) layer (全连接层)

  就是最普通的计算 y = w x + b y=wx+b y=wx+b的层,最小化损失函数。

2.1.3 文本特征提取

  VLP借鉴了BERT、RoBERTa、AlBERT和XLNet的方法,具体步骤如下:
  (1)分词:输入的句子首先被分割成一系列子词(subwords)。这些子词可以是单词的一部分,也可以是完整的单词。分词的目的是处理词汇表中未出现的单词(OOV问题)。
  (2)添加特殊标记:在生成的子词序列的开头和结尾分别插入一个开始标记(start-of-sequence token,通常表示为[CLS])和一个结束标记(end-of-sequence token,通常表示为[SEP])。
  (3)生成输入表示:每个子词会被转换为一个嵌入向量,这个嵌入向量是通过以下三种嵌入的和来计算的:
    (i)词嵌入(Word Embedding):表示子词的语义信息。
    (ii)位置嵌入(Position Embedding):表示子词在序列中的位置信息。位置嵌入可以是固定的(如正弦/余弦函数)或学习的。
    (iii)类型嵌入(Type Embedding):表示子词所属的模态(例如,文本或视觉)。在多模态任务中,类型嵌入用于区分不同模态的输入。

2.2 特征表示

uni-model (单模态)

  只处理一种类型的数据的模型。

the standard transformer encoder (标准transformer编码器)

  标准的Transformer编码器(standard transformer encoder)是指在Transformer模型中用于处理输入数据的编码部分。它由多个编码器层组成,每个编码器层包含自注意力(self-attention)机制和前馈神经网络(feed-forward neural network)。自注意力机制允许模型在处理每个输入元素时,考虑输入序列中的所有其他元素,从而捕捉输入序列中的依赖关系。前馈神经网络则用于对每个输入元素进行非线性变换。

Self-Attention Mechanism(自注意力机制)

  自注意力机制(Self-Attention Mechanism)是Transformer模型中的一个核心组件,用于处理输入序列中的每个元素时,能够考虑输入序列中的所有其他元素。具体来说,自注意力机制通过计算输入序列中每个元素与其他所有元素之间的相关性(或相似性),生成一个加权表示,这些权重反映了每个元素对当前元素的重要性。

  在自注意力机制中,每个输入元素首先被转换为三个向量:查询向量(Query Vector)、键向量(Key Vector)和值向量(Value Vector)。这些向量通过线性变换从输入向量得到。然后,通过计算查询向量和键向量之间的点积,得到一个注意力分数,这些分数经过归一化(通常使用softmax函数)后,作为权重应用于值向量,生成最终的加权表示

  自注意力机制的主要优点是它能够捕捉输入序列中的长距离依赖关系,而不需要像RNN那样逐个处理序列元素。这使得Transformer模型在处理长序列时更加高效和有效。

Feedforward Neural Network(前馈神经网络)

  就是最简单的神经网络结构,信息从输入层经过隐藏层(如果有的话)流向输出层,而不会从输出层反馈到任何前面的层。

3 模型结构

3.1 Single-stream versus Dual-stream

single-stream architecture(单流结构)

  将多个模态的数据连接在一起,然后输入到单一的变换器块中。单流结构利用合并注意力(merged attention)来融合多模态输入。这种架构更加参数高效,因为同一组参数被用于处理两种模态的数据。

Dual-stream (双流结构)

  是指在多模态融合视角下,文本和视觉特征不被拼接在一起,而是分别输入到两个独立的变换器块中。这两个变换器块不共享参数。为了实现更高的性能,双流架构使用交叉注意力(cross-attention)机制来实现跨模态的交互。

在这里插入图片描述

3.2 Encoder-only versus Encoder-decoder

Encoder (编码器)

  编码器(Encoder)是Transformer模型中的一个核心组件,主要用于将输入数据(如文本或图像特征)转换为高维特征表示。在视觉-语言预训练(VLP)模型中,编码器通常用于处理单模态数据,例如纯文本或纯视觉特征。
   encoder-only结构:通常更加高效,计算开销较低,适合资源有限的环境。推理速度更快,适用于对实时性要求较高的任务。

Decoder (解码器)

  用来转化出最终的输出。
  这一层不是必须的,没有decoder的结构称为encoder-only结构;反之为encoder-decoder结构。
  encoder-decoder结构:虽然计算开销较高,但能够处理更复杂的生成任务,适用于需要高质量生成输出的场景。

4 训练目标

4.1 Masked language modeling (MLM 掩码语言模型)

  在 VLP 模型中,MLM 的目标是通过掩码部分文本 token 并根据剩余的文本 token 和视觉 token 来预测这些被掩码的 token。
在这里插入图片描述
在这里插入图片描述
  损失函数定义为:
在这里插入图片描述
在这里插入图片描述

4.2 Prefix language modeling (PrefixLM 前缀语言建模)

sequence-to-sequence framework (seq2seq)

  即将一个序列转化为另一个序列的深度学习架构,一般由编码器(encoder)、解码器(decoder)和注意力机制(Attention Mechanism)组成。

PrefixLM

  前缀语言模型(Prefix Language Model, PrefixLM)是一种特殊的语言模型,它不仅预测下一个词,还可以在给定前缀的情况下生成后续的文本。PrefixLM通常用于生成任务,如文本生成、对话系统等。
  
  损失函数定义是:
在这里插入图片描述

4.3 Masked vision modeling (MVM 掩码视觉模型)

   类似MLM的思路,MVM的主要目的是通过遮掩部分视觉特征,然后根据未被遮掩的视觉特征和文本特征来重建这些被遮掩的视觉特征。
  针对视觉特征是连续且高维的问题,VLP提出MVM的两种变体(回归与分类):

Masked features regression (掩码特征回归)

  它将模型输出的被遮掩特征转换为与原始视觉特征相同维度的向量,然后应用L2回归,解决了高维连续特征的处理问题。
在这里插入图片描述
在这里插入图片描述
  其中, h ( v m i ) h(v_{m}^{i}) h(vmi)表示模型预测的视觉特征, O ( v m i ) O(v_{m}^{i}) O(vmi)表示原本的视觉特征。

Masked feature classification(掩码特征分类)

  VLP模型首先将被屏蔽特征的输出输入FC层(全连接层),预测对象类的分数,再通过softmax函数转换为预测归一化分布。
  与一般的分类任务不同,这里没有ground-truth label,即训练模型时使用的真实标签,解决的方法有两个方向:

hard label (硬标签)

  VLP 模型从对象检测模型(例如Faster R-CNN)中获取最可能的对象类别,并将其作为硬标签(概率为 0 或 1)。这意味着模型假设对象检测模型检测到的对象类别就是被遮掩特征的真实标签。
  模型使用交叉熵损失(cross-entropy loss)来最小化预测结果和伪类(pseudo-class)之间的差距。这里的伪类是指对象检测模型预测的类别,而不是真正的标签。
  简单来说,这种方法通过将对象检测模型的输出作为监督信号,来训练 VLP 模型对被遮掩特征进行分类。交叉熵损失用于衡量模型预测的类别分布与对象检测模型提供的类别分布之间的差异,并通过最小化这个差异来优化模型。

soft label (软标签)

  检测器生成每个对象类别的概率分布
  VLP采用最小化预测分布和检测器生成的分布之间的Kullback-Leibler (KL)散度来训练模型。

Kullback-Leibler 散度

  Kullback-Leibler 散度是一种衡量两个概率分布之间差异的统计量,也称为相对熵
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Faster R-CNN

  VLP用Faster R-CNN 检测目标输出,并将检测到的目标类别作为被屏蔽区域的标签。
在这里插入图片描述
  其中 g 1 ( v m i ) g_{1}(v_{m}^{i}) g1(vmi)是检测到的对象类别,即模型预测的被遮掩的视觉特征; c ( v m i ) c(v_{m}^{i}) c(vmi)是原始的视觉特征; K K K是视觉区域的数量。
   C E CE CE指的是交叉熵损失。

  原文中

We avoid this assumption by using a soft label as a
supervision signal

  提到的assumption指的是在硬标签中,假设检测到的对象类别就是掩码特征的地面真实标签,具体的:
在这里插入图片描述
  这种方法假设检测模型的输出是完全准确的,但实际上检测模型可能会有误检或漏检的情况。因此,使用硬标签可能会引入噪声和错误,影响模型的训练效果。

  为了避免这个假设,文中提出使用软标签(soft label)作为监督信号,即使用检测模型输出的原始概率分布:
在这里插入图片描述

  相应的,使用软标签后,损失函数写为:
在这里插入图片描述
在这里插入图片描述

4.4 Vision-language matching(视觉语言匹配 VLM)

  VLM的目的是将视觉和语言投射到同一空间。

single-stream && dual-stream(单流架构和双流架构)

  在单流架构中,先将视觉特征和文本特征拼接在一起,再输入到一个单一的 Transformer 模型中进行联合编码。它将特殊标记 [ C L S ] [CLS] [CLS]插入输入序列的开头,用于表示整个输入序列的综合语义信息,捕获全局特征。
   [ C L S ] [CLS] [CLS] 的初始嵌入通常是随机初始化的,但随着模型的训练,它会逐渐学习到如何捕捉输入序列的全局信息。例如,通过自注意力机制,它允许每个 token 在编码过程中与其他 token 进行交互。CLS token 也不例外,它会与输入序列中的每个 token 进行交互,从而捕捉到全局信息。

  双流模型中,文本和视觉序列分别插入特殊标记 [ C L S T ] [CLS_{T}] [CLST] [ C L S V ] [CLS_{V}] [CLSV]。然后将两个模态融合起来(拼接、交叉注意力机制等),得到原文中的fused representation,再送入FC层,通过Sigmoid函数获得一个分数。

正负样本对

  正样本对:指的是视觉和文本匹配的样本对,例如一张图片和描述该图片的正确文本。
  负样本对:指的是视觉和文本不匹配的样本对,例如一张图片和描述另一张图片的文本。负样本对是通过将配对样本中的视觉部分或文本部分替换为从其他样本中随机选择的部分来创建的。

4.5 Vision-language contrastive learning(视觉语言对比学习 VLC)

  VLC也旨在使视觉和语言保持一致,它通过计算softmax标准化视觉(图像或视频)到文本的相似性和文本到视觉的相似性,并利用视觉到文本和文本到视觉相似性的交叉熵损失来更新自己。
  相似性通常用点积来实现,用以下损失函数来量化:

L V L C = 1 2 E ( I , T ) ∼ D [ C E ( y v 2 t , p v 2 t ( I ) ) + C E ( y t 2 v , p t 2 v ( T ) ) ] L_{VLC}=\frac{1}{2}E_{(I,T)\sim D}[CE(y^{v2t},p^{v2t}(I))+CE(y^{t2v},p^{t2v}(T))] LVLC=21E(I,T)D[CE(yv2t,pv2t(I))+CE(yt2v,pt2v(T))]

I I I 是图像的表示
T T T 表示文本的表示
E ( I , T ) ∼ D E_{(I,T)\sim D} E(I,T)D 表示从数据分布 D 中采样的图像-文本对。
y v 2 t y^{v2t} yv2t 表示图像到文本检索的标签(即图像和文本是否匹配的标签)
y t 2 v y^{t2v} yt2v 表示文本到图像检索的标签(即文本和图像是否匹配的标签)
p v 2 t ( I ) p^{v2t}(I) pv2t(I) 表示模型预测的图像到文本匹配的概率分布
p t 2 v ( T ) p^{t2v}(T) pt2v(T) 表示模型预测的文本到图像匹配的概率分布。
C E CE CE 表示交叉熵损失函数

p m v 2 t ( I ) = e x p ( s ( I , T m ) / τ ) ∑ m = 1 M e x p ( s ( I , T m ) / τ ) p^{v2t}_{m}(I)=\frac{exp(s(I,T_{m})/\tau )}{\sum _{m=1}^{M}exp(s(I,T_{m})/\tau)} pmv2t(I)=m=1Mexp(s(I,Tm)/τ)exp(s(I,Tm)/τ)

p m t 2 v ( T ) = e x p ( s ( T , I m ) / τ ) ∑ m = 1 M e x p ( s ( T , I m ) / τ ) p^{t2v}_{m}(T)=\frac{exp(s(T,I_{m})/\tau )}{\sum _{m=1}^{M}exp(s(T,I_{m})/\tau)} pmt2v(T)=m=1Mexp(s(T,Im)/τ)exp(s(T,Im)/τ)

以上面的式子为例:
p m v 2 t ( I ) p^{v2t}_{m}(I) pmv2t(I)表示图象 I I I与第 m m m个文本 T m T_{m} Tm的匹配概率
s ( I , T m ) s(I,T_{m}) s(I,Tm)表示图象 I I I与文本 T m T_{m} Tm之间的相似度函数,通常用点积实现
τ \tau τ是温度系数,用于控制相似度分数的分布
M M M表示在一批数据中,与图象 I I I匹配的文本总数
  
整个公式的作用是通过 softmax 函数将相似度分数归一化为概率分布,从而得到图像 I I I与每个文本 T m T_{m} Tm之间的匹配概率。

4.6 Word-region alignment (单词-区域对齐 WRA)

  Word-region alignment (WRA) 是一种无监督的预训练目标,旨在对齐视觉区域(视觉块)和单词。视觉语言预训练模型(VLP 模型)利用最优传输(optimal transport)来学习视觉和语言之间的对齐。由于精确的最小化计算上不可行,VLP 模型通常使用 IPOT 算法来近似最优传输距离。
  求解最小化问题后,最优传输距离作为 WRA 损失来训练 VLP 模型。

WRA基本原理

  (1)输入数据:WRA 通常使用图像-文本对作为输入,其中文本描述了图像的内容。
  (2)区域提取:对于图像,使用区域提议网络(Region Proposal Network, RPN)或其他方法来提取图像中的多个视觉区域。
  (3)单词分割:对于文本,将其分割成单词或短语。
  (4)对齐学习:通过某种机制(如注意力机制、最优传输等)学习每个视觉区域与文本中的单词之间的对齐关系

最优传输 (Optimal Transport, OT)

  最优传输(Optimal Transport, OT)是一种数学理论,广泛应用于概率分布之间的比较和转换。最优传输问题的核心是将一个概率分布 μ \mu μ转换为另一个概率分布 ν \nu ν,同时最小化传输成本。
  具体来说,假设我们有两个概率分布 μ \mu μ ν \nu ν,定义在同一个空间 X X X上。我们希望找到一个传输计划(transport plan) π \pi π,它是一个定义在 X × X X\times X X×X上的联合概率分布,使得 π \pi π 的边缘分布分别是 μ \mu μ ν \nu ν
  在 VLP 模型中,使用最优传输理论来学习视觉和语言之间的对齐。

边缘分布

  边缘分布(Marginal Distribution)是概率论和统计学中的一个重要概念,它描述了多维随机变量中某个特定变量的分布,而不考虑其他变量的影响。边缘分布可以看作是从联合分布中“边缘化”(即积分或求和)掉其他变量后得到的分布。

传输成本

  传输成本通常由一个成本函数 c : X × X → R c:X×X→R c:X×XR 定义,表示将一个单位质量从点 x x x传输到点 y y y的成本。

min ⁡ π ∈ ∏ ( μ , ν ) ∫ X × X c ( x , y ) d π ( x , y ) \min _{\pi \in {\textstyle \prod(\mu,\nu)}} \int_{X \times X}^{} c(x,y)d\pi(x,y) minπ(μ,ν)X×Xc(x,y)dπ(x,y)

其中 ∏ ( μ , ν ) \textstyle \prod(\mu,\nu) (μ,ν)是所有边缘分布分别为 μ \mu μ ν \nu ν的联合概率分布的集合

最优传输距离

  最优传输问题的解通常被称为最优传输距离(Optimal Transport Distance),也称为 Wasserstein 距离。对于 p − W a s s e r s t e i n p-Wasserstein pWasserstein距离,定义为:

W p ( μ , ν ) = min ⁡ π ∈ ∏ ( μ , ν ) ( ∫ X × X c ( x , y ) p d π ( x , y ) ) 1 / p W_{p}(\mu,\nu)=\min _{\pi \in {\textstyle \prod(\mu,\nu)}} (\int_{X \times X}^{} c(x,y)^{p}d\pi(x,y))^{1/p} Wp(μ,ν)=minπ(μ,ν)(X×Xc(x,y)pdπ(x,y))1/p

  当 p = 1 p=1 p=1时,称为Earth Mover’s Distance (EMD)。

计算方法

  只是了解了一下,没有细看。
在这里插入图片描述

IPOT算法

  IPOT(Iterative Proportional Fitting Procedure)算法,也称为 Iterative Bregman Projections (IBP) 算法,是一种用于求解最优传输(Optimal Transport, OT)问题的有效方法。IPOT 算法通过迭代地调整传输计划,使其逐渐逼近最优解。这个算法特别适合处理带有熵正则化的最优传输问题,可以显著提高计算效率

  
  综上内容,使用原文的符号表示,VLP的损失函数定义为:

L W R A = min ⁡ T ∈ ∏ ( a , b ) ∑ i = 1 T ∑ j = 1 K T i j ⋅ c ( ω i , ν j ) L_{WRA}=\min _{T \in \prod (a,b)} \sum_{i=1}^{T}\sum_{j=1}^{K}T_{ij} \cdot c(\omega _{i},\nu_{j}) LWRA=minT(a,b)i=1Tj=1KTijc(ωi,νj)

T i j T_{ij} Tij是传输矩阵 T T T的元素,表示第 i i i个单词 ω i \omega_{i} ωi和第 j j j个视觉区域 ν j \nu_{j} νj的对齐程度
c ( ω i , ν j ) c(\omega_{i},\nu_{j}) c(ωi,νj)是成本函数,用于评估第 i i i个单词和第 j j j个视觉区域的距离或不匹配度,可以是任何度量,如欧氏距离、余弦相似度等。
∏ ( a , b ) \prod (a,b) (a,b)是传输矩阵 T T T的取值集合(或约束集合),通常约束包括:
  行和约束:每个视觉区域的总对齐权重等于某个常数 a a a
  列和约束:每个单词的总对齐权重等于某个常数 b b b

4.7 Frame order modeling (框架顺序建模 FOM)

  Frame order modeling (FOM) 是一种用于更好地建模视频时间信息的技术。在视觉-语言预训练模型(VLP 模型)中,FOM 通过随机打乱输入帧的顺序,然后预测每个帧的实际位置来实现。具体来说,FOM 被建模为一个分类任务。

  FOM 有助于模型学习和理解视频中的时序信息

4.8 Particular pre-training objects (特定的预训练对象)

  为了让VLP模型更好地适应下游任务,通常会使用一些下游任务的目标当做预训练目标,包括:
  (1)视觉问答(Visual Question Answering, VQA):VLP 模型通过回答与图像相关的问题来学习视觉和语言之间的关系。
  (2)视觉描述(Visual Captioning, VC):VLP 模型通过生成描述图像的句子来学习如何将视觉信息转化为语言描述。

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

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

相关文章

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统:Windows 11 下载 官网:https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next,next Browse&#xf…

Mac OS 搭建MySQL开发环境

Mac OS 搭建MySQL开发环境 文章目录 Mac OS 搭建MySQL开发环境一、安装Mysql:二、配置环境变量三、安装Navicat 本地环境: Mac OS Sequoia15.0.1(M3 Max) 目标状态: 下载安装Mysql,配置相关环境。 一、安装Mysql&…

docker Desktop开启远程访问端口

文章目录 问题解决方法1.首先开启docker Desktop的访问端口2.将本地端口绑定远程访问ip 验证 问题 Windows上部署的docker,没办法通过远程的ip进行访问,实现远程代码的部署。 解决方法 1.首先开启docker Desktop的访问端口 通过开启docker访问端口&am…

Linux文件系统学习(未完)

1. Linux文件系统的特点与类别 1.1 特点 Linux系统中,文件组织在一个统一的树形目录结构中,整个文件系统有一个根“/”(文件夹),然后以每个目录(文件夹)作为分叉,叶子节点作为文件…

Three.js 快速入门构建你的第一个 3D 应用

![ 开发领域:前端开发 | AI 应用 | Web3D | 元宇宙 技术栈:JavaScript、React、Three.js、WebGL、Go 经验经验:6年 前端开发经验,专注于图形渲染和AI技术 开源项目:github 晓智元宇宙、数字孪生引擎、前端面试题 大家好…

排序算法汇总

一、二分查找 public static int binarySearch(int[] nums,int target){int l 0, r nums.length-1;while(l < r){int mid l (r-l)/2;if(nums[mid] target){return mid;}else if(nums[mid] < target){r mid - 1;}else{l mid 1;}}return -1;} 对于防止溢出的 mid …

类和对象(2)

1.类的默认成员函数 默认成员函数就是⽤⼾没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类&#xff0c;我们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前4个&#xff0c;最后两个取地址重载不…

AcWing 1303:斐波那契前 n 项和 ← 矩阵快速幂加速递推

【题目来源】https://www.acwing.com/problem/content/1305/http://poj.org/problem?id3070【题目描述】 大家都知道 数列吧&#xff0c;。现在问题很简单&#xff0c;输入 和 &#xff0c;求 的前 项和 。【输入格式】 共一行&#xff0c;包含两个整数 和 。【输出格式】…

ElasticSearch备考 -- Index rollover

一、题目 给索引my-index-000001&#xff0c;创建别名my-index&#xff0c;并设置rollover&#xff0c;满足以下三个条件的 The index was created 7 or more days ago.The index contains 5 or more documents.The index’s largest primary shard is 1GB or larger. 二、思考…

zabbix 6.0 监控clickhouse(单机)

zabbix 6.0 LTS已经包含了clickhouse的监控模板&#xff0c;所以我们可以直接使用自带的模板来监控clickhouse了。 0.前置条件 clickhouse 已经安装&#xff0c;我安装的是24.3.5.47zabbix-agent 已经安装并配置。系统是ubuntu 2204 server 1. 新建监控用户 使用xml的方式为…

Jmeter自动化实战

一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…

提升网站速度与性能优化的有效策略与实践

内容概要 在数字化快速发展的今天&#xff0c;网站速度与性能优化显得尤为重要&#xff0c;它直接影响用户的浏览体验。用户在访问网站时&#xff0c;往往希望能够迅速获取信息&#xff0c;若加载时间过长&#xff0c;轻易可能导致他们转向其他更为流畅的网站。因此&#xff0…

OpenCV视觉分析之目标跟踪(6)轻量级目标跟踪器类TrackerNano的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 Nano 跟踪器是一个超轻量级的基于深度神经网络&#xff08;DNN&#xff09;的通用目标跟踪器。 由于特殊的模型结构&#xff0c;Nano 跟踪器速度…

C数组手动输入问题

问题界面 解析 输入数组数据也需要加取地址符吗&#xff1f;数组不就是地址了吗&#xff1f; 理解array[i]和array[i][j]的区别&#xff1a; array[i]是一个指向第i行第一个元素的指针&#xff08;int*类型&#xff0c;指向array[i][0]&#xff09;。 array[i][j]是一个int类…

Hadoop-002-部署并配置HDFS集群

集群规划 Hadoop HDFS的角色包含 NameNode(主节点管理者)、DataNode(从节点工作者)、SeconddaryNameNode(从节点辅助) 节点CPU内存hadoop-11C4Ghadoop-21C2Ghadoop-31C2G 一、下载上传Hadoop包 注意: 登录hadoop-1节点root用户执行 1、官网下载安装包后上传 到hadoop-1服务…

Android 在github网站下载项目:各种很慢怎么办?比如gradle下载慢;访问github慢;依赖下载慢

目录 访问github慢gradle下载慢依赖下载慢 前言 大家好&#xff0c;我是前期后期&#xff0c;在网上冲浪的一名程序员。 为什么要看这篇文章呢&#xff1f;问题是什么&#xff1f; 我们在Github上面看到一些好的项目的时候&#xff0c;想下载下来研究学习一下。但经常遇到各…

信息安全数学基础(35)同态和同构

一、同态 定义&#xff1a; 设(M,)和(S,)是两个群&#xff08;或更一般的代数系统&#xff09;&#xff0c;如果存在一个映射σ:M→S&#xff0c;使得对于M中的任意两个元素a、b&#xff0c;都有σ(ab)σ(a)σ(b)&#xff0c;则称σ为M到S的同态或群映射。 性质&#xff1a; 同…

微信小程序中点击搜素按钮没有反应,可能是样式问题(按钮被其他元素覆盖或遮挡)

文章目录 1. 确认 bindtap 绑定在正确的元素上2. 检查是否有遮挡或重叠元素3. 检查 this 上下文绑定问题4. 清除微信小程序开发者工具的缓存5. 用微信开发者工具查看事件绑定6. 确保 handleSearch 没有拼写错误进一步调试 1、searchResults.wxml2、searchResults.wxss3、search…

实验干货|电流型霍尔传感器采样设计03-信号调理

在前两篇博客中&#xff0c;将霍尔输出的电流信号转换成了有正有负的电压信号&#xff0c;但是DSP需要采集0~3V的电压信号&#xff0c;因此需要对信号缩放并抬升至全部为正的信号。 常见的方法是&#xff0c;通过比例放大(缩小)电路对信号进行放缩&#xff0c;通过加法电路抬升…

SQLI LABS | Less-20 POST-Cookie Injections-Uagent field-error based

关注这个靶场的其它相关笔记&#xff1a;SQLI LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;过关流程 输入下面的链接进入靶场&#xff08;如果你的地址和我不一样&#xff0c;按照你本地的环境来&#xff09;&#xff1a; http://localhost/sqli-labs/Less-20/ 可以看到…