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

news2024/11/25 13:36:50

目录

  • 前言
  • 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.coloradmin.cn/o/2228632.html

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

相关文章

【科研绘图】3DMAX管状图表生成插件TubeChart使用方法

3DMAX管状图表生成插件TubeChart,一款用于制作3D管状图表的工具。可以自定义切片的数量以及随机或指定切片颜色。 【版本要求】 3dMax 2008及更高版本 【安装方法】 TubeChart插件无需安装,使用时直接拖动插件脚本文件到3dMax视口中打开即可&#xff0…

CSS浮雕效果

效果图&#xff1a; HTML源码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Documen…

英飞凌TRAVEO-II MCU能做什么?

概述 英飞凌TRAVEO™T2G微控制器基于ArmCortex-M4(单核)/M7(单核/双核)内核,提供高性能、增强的人机界面、高安全性和先进的网络协议,专为电气化、车身控制模块、网关和信息娱乐应用等广泛的汽车应用量身定制。基于单核和双核操作的强大ArmCortexM系列内核,它提供了最先…

Ant-Dseign-Pro如何去国际化及删除oneapi.json后出现程序直接结束问题的解决方案

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 移除国际化 什么是国际化 在AntDesignPro当中&#xff0c;国际化就是如果你初始默认使用中文&#xff0c;想要切换英文&#xff0c;我们可以切换到英文模式。同时&#x…

UOS中读取 bitlocker加密的U盘

目前安装的1079专业版本&#xff0c;apt 安装的dislocker版本太低&#xff0c;要安个高点的 git clone https://github.com/Aorimn/dislocker sudo apt install gcc cmake make libfuse-dev libmbedtls-dev ruby-dev cd dislocker cmake . make sudo make install 这时运等l…

RHCE笔记-DNS服务器

一.DNS简介 DNS&#xff08;域名系统&#xff09;是一种互联网服务&#xff0c;负责将我们熟悉的域名&#xff08;比如 www.example.com&#xff09;转换为计算机能理解的IP地址&#xff08;比如 192.0.2.1&#xff09;。这样&#xff0c;当你在浏览器中输入网址时&#xff0c;…

自研小程序-心情追忆

在近期从繁忙的工作中暂时抽身之后&#xff0c;我决定利用这段宝贵的时间来保持我的Java技能不致生疏&#xff0c;并通过一个个人项目来探索人工智能的魅力。 我在Hugging Face&#xff08;国内镜像站点&#xff1a;HF-Mirror&#xff09;上发现了一个关于情感分析的练习项目&…

Admin.NET源码学习(5:swagger使用浅析)

直接启动Admin.NET.Web.Entry项目&#xff0c;会弹出swagger登录验证框&#xff0c;虽然采用Furion简化了项目加载过程及配置&#xff0c;但是学习源码过程就比较恼火&#xff0c;很多设置及功能搞不清楚到低是怎么启用的&#xff0c;本文记录学习Admin.NET项目中swagger的设置…

Pytorch学习--神经网络--线性层及其他层

一、正则化层 torch.nn.BatchNorm2d torch.nn.BatchNorm2d(num_features, eps1e-05, momentum0.1, affineTrue, track_running_statsTrue, deviceNone, dtypeNone)正则化的意义&#xff1a; 加速训练收敛&#xff1a;在每一层网络的输入上执行批量归一化可以保持数据的分布稳…

SSH免密钥登录

1: 用 ssh-key-gen 在本地主机上创建公钥和密钥 winr cmd 打开控制台 ssh-keygen -t rsa 一直按enter 2: 用 ssh-copy-id 把公钥复制到远程主机上 user 是用户名 remote_host是远程主机 ssh-copy-id -i ~/.ssh/id_rsa.pub userremote_host 3: 直接登录远程主机&#xf…

推荐一款优秀的pdf编辑器:Ashampoo PDF Pro

Ashampoo PDF Pro是管理和编辑 PDF 文档的完整解决方案。程序拥有您创建、转换、编辑和保护文档所需的一切功能。根据需要可以创建特定大小的文档&#xff0c;跨设备可读&#xff0c;还可以保护文件。现在您还能像编辑Word文档一样编辑PDF! 软件特点 轻松处理文字 如 Microso…

使用C语言实现经典贪吃蛇游戏

一、项目概述 我们的目标是创建一个基本的贪吃蛇游戏&#xff0c;它具有以下功能&#xff1a; 蛇能够根据玩家的键盘输入改变方向。 当蛇吃到食物时&#xff0c;蛇的长度增加&#xff0c;同时分数增加。 蛇可以在窗口边缘“穿墙”移动。 游戏界面包括一个蛇和一个随机出现…

Spring Boot Configuration和AutoConfiguration加载逻辑和加载顺序调整

在spring中&#xff0c; AutoConfiguration也是一个种Configuration&#xff0c;只是AutoConfiguration是不能使用proxy的。 而且spring对于两者的加载顺序也不是一视同仁&#xff0c;是有顺序的。spring会先加载SpringBootApplication可达的且标注了Configuration的类&#x…

算法速刷(LeetCode)(160.相交链表)

个人思路&#xff1a; 笨蛋做法&#xff0c;但是好用 代码如下 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution …

面试记录(1)

java中的抽象类和接口的区别&#xff1a; 相同点 (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 (4) 派生类必须实现未实现的方法 不同点 1.关键字不同&#xff1a; ​ ① 继承抽象类的关键字是extends&#xff0c;而实现接口的关键字是implements&#xff1b;…

MATLAB下的四个模型的IMM例程(CV、CT左转、CT右转、CA四个模型),附源代码可复制

文章目录 基于IMM算法的目标跟踪概述源代码运行结果代码结构与功能1. 初始化2. 仿真参数设置3. 模型参数设置4. 生成量测数据5. IMM算法初始化6. IMM迭代7. 绘图8. 辅助函数总结基于IMM算法的目标跟踪 概述 该MATLAB代码实现了基于交互式多模型(IMM)算法的目标跟踪,旨在估…

Jmeter实际应用

环境准备 JDK1.8Jmeter 5.6.3 下载地址Jmeter 插件 下载地址 放到lib/ext下 常用命令 # 启动 sh jmeter# 集群模式下启动节点&#xff0c;不启动用不了集群 sh jmeter-server#生成ssl需要的证书, 这里会要求输入个密码&#xff0c;是要在jmeter中用的 keytool -import -ali…

使用 Flask 实现简单的登录注册功能

目录 1. 引言 2. 环境准备 3. 数据库设置 4. Flask 应用基本配置 5. 实现用户注册 6. 实现用户登录 7. 路由配置 8. 创建前端页面 9. 结论 1. 引言 在这篇文章中&#xff0c;我们将使用 Flask 框架创建一个简单的登录和注册系统。Flask 是一个轻量级的 Python Web 框架…

SystemC学习(3)— APB_SRAM的建模与测试

SystemC学习&#xff08;3&#xff09;— APB_SRAM的建模与测试 一、前言 二、APB_SRAM建模 编写APB_SRAM模型文件apb_sram.h文件如下所示&#xff1a; #ifndef __APB_SRAM_H #define __APB_SRAM_H#include "systemc.h"const int ADDR_SIZE 32; const int DATA_…

新兴斗篷cloak技术,你了解吗?

随着互联网技术的飞速发展&#xff0c;网络营销领域也经历了翻天覆地的变革。 从最早的网络横幅广告到如今主流的搜索引擎和社交媒体营销&#xff0c;广告形式变得越来越多样。 其中&#xff0c;搜索引擎广告一直以其精准投放而备受青睐&#xff0c;但近年来&#xff0c;一项名…