【论文阅读笔记】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.xdnf.cn/news/1870.html

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

相关文章

U盘插入电脑不显示?别急,这里有解决方案!

随着科技的飞速发展,U盘已成为我们日常生活和工作中不可或缺的数据存储工具。然而,你是否遇到过这样的情况:满心欢喜地将U盘插入电脑,却发现电脑竟然“视而不见”,U盘图标迟迟不出现?别急,这种情…

如何使用Web-Check和cpolar实现安全的远程网站监测与管理

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 本期给大家分享一个网站检测工具Web-Check,能帮你全面了解网…

【第一个qt项目的实现和介绍以及程序分析】【正点原子】嵌入式Qt5 C++开发视频

qt项目的实现和介绍 1.第一个qt项目  (1).创建qt工程    [1].创建一个存放qt的目录    [2].新建一个qt工程    [3].编译第一个工程    发生错误时的解决方式 二.QT文件介绍  (1).工程中文件简单介绍  (2).项目文件代码流程介绍    [1].添…

【Linux】命令行参数 | 环境变量

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 前几天在搞硬件&…

【数据结构与算法】第7课—数据结构之队列

文章目录 1. 队列1.1 什么是队列1.2 队列的结构1.3 队列初始化1.4 队列入栈1.5 出队列1.6 查找队列有效元素个数1.7 取队头和队尾数据1.8 销毁链表 2. 用两个队列实现栈3. 用两个栈实现队列4. 循环队列 1. 队列 注:文中Queue是队列,Quene是错误写法 1.1 …

数据结构 ——— 向上/向下调整算法将数组调整为升/降序

目录 向上调整算法(默认小堆) 向下调整算法(默认小堆) 利用向上调整算法对现有数组直接建堆 利用向下调整算法对以建成的小堆数组排降序 举一反三: 那么如何将数组 a 排成升序呢? 向上调整算法&…

一种基于GPU的归并排序并行实现

0️⃣归并排序流程 分割过程:将待排序数组等分为左右子数组,再对左右子数组递归式等分,直至不可分割合并过程:将所有子数组两两递归合并,逐步得到较大有序数组,直到得到完整有序数组 1️⃣传统的并行归并 …

【MySQL】数据类型

目录 一、常见数据类型汇总 二、数值类型 2.1 tinyint 2.2 bit 2.3 float 2.4 decimal 三、字符串类型 3.1 char 3.2 varchar 四、日期和时间类型 五、枚举和集合 5.1 enum枚举 5.2 set集合 一、常见数据类型汇总 分类数据类型说明数值类型BIT(M)二进制位。M指定…

《探索 HarmonyOS NEXT (5.0):开启构建模块化项目架构奇幻之旅 —— 动态路由 ZRouter:引领高效模块通信的智慧中枢》

ZRouter简介:是一款轻量级的动态路由框架,基于Navigation系统路由表和Hvigor插件实现的方案,可以解决多个业务模块(HAR/HSP)之间解耦和通信问题,从而实现业务复用和功能扩展。 ZRouter出处ZRouter&#xff…

网络原理(数据链路层)->以太网帧格式解

前言 大家好我是小帅,今天我们来了解以太网帧格式 个人主页 文章目录 1.数据链路层1.1 认识以太⽹1.2 MAC地址(⽹卡的硬件地址)1.2.1 对⽐理解MAC地址和IP地址 1.3 认识MTU1.4 MTU对IP协议的影响1. 5 MTU对UDP协议的影响1.6 MTU对于TCP协议的…

银行金融知识竞赛活动策划方案

根据《中国人民银行**市中心支行“创新金融服务,支持经济发展”业务竟赛活动实施方案》安排,中支决定于9月28日举办**市人民银行系统“创新金融服务,支持经济发展”现场业务竞赛,为确保业务竞赛组织工作顺利开展,特制定…

渗透测试练习题解析 7 (CTF web)

一、[红明谷CTF 2021]write_shell 1 考点: 1、PHP 短标签 2、 符号的使用 通过代码可知 check 是一个过滤函数,利用正则的方式过滤掉 空格、php、eval 等一些关键字或符号,$dir 是路径,这个值可以通过 actionpwd 获取到&#…

VBA中类的解读及应用第十七讲:类,让文本框在激活时改变颜色(下)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

如何下载安装TestLink?

一、下载TestLink、XAMPP TestLink 下载 |SourceForge.net 备用:GitHub - TestLinkOpenSourceTRMS/testlink-code: TestLink开源测试和需求管理系统 下载XAMPP: Download XAMPP 注意:TestLink与PHP版本有关系,所以XA…

基于SpringBoot+微信小程序+协同过滤算法+二维码订单位置跟踪的农产品销售平台-新

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: “农产品商城”小程序…

实现旺店通到金蝶云星空的数据集成:技术详解

旺店通旗舰版数据集成到金蝶云星空案例分享:入库瞬时成本-生产入库单-1 在企业日常运营中,数据的高效流转和准确对接是确保业务顺利进行的关键。本文将聚焦于一个具体的系统对接集成案例——如何将旺店通旗舰版的数据集成到金蝶云星空,以实现…

selinux与防火墙

一.selinux (1).什么是selinux SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linu。 SELinux是对程序、文件等权限设置依据的一个内核模块。由于启动网络服务的也是程序,因此刚好也 是能够控制网络服务能否访问系统资源的一道关卡。 (2)…

【论文精读】LPT: Long-tailed prompt tuning for image classification

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀论文精读_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 摘要 2. …

链表详解(三)

目录 链表功能实现链表的查找SLNode* SLFind(SLNode* phead, SLNDataType x)代码 链表任意位置前插入void SLInsert(SLNode**pphead,SLNode* pos, SLNDataType x)代码 链表任意位置前删除void SLErase(SLNode**pphead,SLNode* pos)代码 链表任意位置后插…

有php转go项目经验者优先?

新的一周又来了,今天分享的是上海某公司的一面面经,内容主要就是go、mysql和项目,职位要求如下: 发现一个很有意思的点—有php转go项目经验者优先。想不到还有这种好事,本人就是php转go,跟我有相同经历的朋…