OVMR:华为北大联手,基于多模态融合的SOTA开放词汇识别 | CVPR 2024

news2024/11/13 12:19:13

即插即用的方法OVMR将新类别的多模态线索嵌入到VLM中,以增强其在开放词汇识别中的能力。它最初利用多模态分类器生成模块将示例图像嵌入到视觉标记中,然后通过推断它们与语言编码器的上下文关系来自适应地融合多模态线索。为了减轻低质量模态的负面影响,通过一个无参数融合模块根据每个类别对这些分类器的特定偏好,动态地将多模态分类器与两个单模分类器集成

来源:晓飞的算法工程笔记 公众号

论文: OVMR: Open-Vocabulary Recognition with Multi-Modal References

  • 论文地址:https://arxiv.org/abs/2406.04675
  • 论文代码:https://github.com/Zehong-Ma/OVMR

Introduction


  开放词汇识别旨在识别训练集之外的未见过的对象,这是一项具有挑战性的任务,因为模型对测试集中的新类别一无所知。除了尽量预训练具有较强泛化能力的模型外,最近的研究还通过将新颖类别线索嵌入预训练主干模型来开发更轻量级的策略。在这些工作中,一种流行的策略是在小规模任务特定数据集上微调一个通用模型。这种少样本微调策略能够有效优化任务特定参数,但耗时、缺乏灵活性,并且降低了泛化能力。

  另一方面的研究是利用视觉-语言模型(VLMs)强大的泛化能力,通过提供图像或文本描述作为新类别线索。一些研究使用从文本描述中提取的文本嵌入作为新类别的分类器,但文本描述可能含糊不清,并且缺乏对视觉线索的详细描述,降低该分类器的区分能力。例如,bat这个词既可以指体育器材,也可以指动物。收集示例图像可能是另一个提供类别线索的选项,但图像样本可能表现出多样化质量,容易受到域差异、混乱背景等问题影响。

  论文从不同的角度解决开放词汇识别问题,参考由文本描述和示例图像组成的多模态线索。换句话说,通过将文本描述和示例图像同时输入VLM,挖掘文本和图像的互补线索,从而学习更强大的新类别分类器。如图1所示,在此过程中,期望文本模态提供可泛化的语义线索,而示例图像则被分析以提取视觉细节,这对生成分类器的区分能力至关重要。为了缓解低质量文本或图像示例的负面影响,论文还评估了这些单模态和多模态分类器的性能,以自适应生成最终分类器。论文将提出的方法命名为OVMR

  如图1所示,OVMR以文本描述和描绘新类别的多个示例图像作为输入,包括两个模块来生成最终的分类器:

  1. 第一个模块动态地融合视觉示例和文本描述以生成多模态分类器,该模块一共包含两个单模态分类器和一个多模态分类器。首先利用轻量级视觉标记生成器从给定的示例中提取视觉标记,随后语言编码器通过推断它们之间的上下文关系来自适应地融合视觉和文本标记。这个多模态分类器生成模块由于其轻量级结构而非常高效,不需要训练特定于类别的参数,确保其良好的泛化性能和对各种类别可扩展性。
  2. 第二个模块通过基于偏好的融合将上述三个分类器生成最终的分类器。为了缓解低质量分类器的负面影响,论文提出了一种通过评估性能来进行动态融合的策略。由于有多个示例图像,将它们作为验证集来测试每个分类器的性能,最后作为学习融合权重的线索。如图1所示,这个过程通过利用示例图像作为测试集来模拟测试阶段,可以有效地保证最终融合分类器的稳健性。

  论文进行了大量实验来测试OVMR的性能,在11个图像分类数据集和LVIS目标检测数据集上均明显优于最近的开放词汇方法,也优于那些仅简单应用普通平均融合和文本引导融合来生成新分类器的相关工作。

  论文的贡献可以总结为三个方面:

  1. 提出了一个灵活的即插即用模块,将新类别的线索嵌入VLMs中,以增强它们在开放词汇识别任务中的能力。补充多模态线索相对于仅依赖视觉或文本线索带来了显著优势。
  2. OVMR提出了一种从双模态输入生成稳健分类器的新型流程。它自适应地融合文本和视觉线索生成多模态分类器,并进一步提出了一个无需参数的融合模块,以缓解低质量模态的负面影响。
  3. 广泛的实验表明,OVMR在开放词汇分类和检测任务中表现出优越性能,展示了其在开放词汇识别中的潜力。

Related Work


Open-Vocabulary Classification

  现有的开放词汇分类方法可以总结为三类,即预训练、提示学习和少样本适应方法。

  • Pre-training Methods

  许多预训练工作都致力于增强VLM在开放词汇分类中的能力,包括大型策划数据集和增强的训练策略。它们需要从头开始重新训练模型,这需要相当多的时间、样本和注释。

  • Prompt Learning Methods

  为了有效地增强VLM在分类中的能力,业界提出了各种prompt学习方法(编码文本和待分类图片,文本产生类别数个的输出与图片编码计算相似度,取最大的文本)。CoOp从少样本数据集中学习静态上下文标记,但倾向于过拟合训练类别,在未见类别上性能下降。为了缓解这一问题,CoCoOp从输入图像中获取动态的实例特定标记,旨在改善未见类别的分类。MaPLe致力于跨不同层次学习视觉和语言分支的多模式提示标记。这些方法需要在每个下游数据集上进行微调,而且倾向于过拟合已见类别,并且缺乏VLM中的泛化能力。

  • Few-shot Adaptation Methods

Few-shot分类包括一个训练阶段,在这个阶段,模型在一个相对大的数据集上学习,以及一个适应阶段,在这个阶段,调整学习的模型以适应之前未见任务的有限标记样本。在这个框架下,可以粗略地分为两种方法:元学习方法和非元学习方法。最近的一项工作揭示了少样本图像分类中的训练和适应阶段是完全解耦的。此外,它还表明,使用CLIP的训练算法预训练的视觉主干比以前的少样本训练算法表现更优秀。

  在论文的工作中,将CLIP的预训练视觉主干作为基础模型,并评估不同的适应方法。这些适应方法包括无需训练的MatchingNetNearest Centroid ClassifierPN)以及需要训练的MAML、逻辑回归、余弦分类器、URLCEPA

Open-Vocabulary Detection

  最近的许多工作旨在将VLM的开放词汇能力转移到目标检测领域。包括知识蒸馏和prompt优化在内的技术已被用来训练一个使用预训练VLM的开放词汇检测器。弱标记和伪框方法也被提出,以增强VLM的对象级别识别能力。此外,一些工作在VLMSAM的预训练视觉主干顶部添加了新的检测头,无论是保持主干冻结还是可微调。最近,为开放词汇检测预训练视觉-语言模型是一个新方向。GLIPDetCLIP在检测、定位和字幕数据的组合上进行训练,以学习单词-区域对齐。RO-ViT提出了预训练区域感知位置嵌入,以增强VLM在密集预测任务中的能力。

  此外,最近的MM-OVODMQ-Det引入示例图像以增强用于开放词汇检测的文本分类器。然而,MM-OVOD同等对待两种模态,并直接计算新学习的基于视觉的分类器与现有文本分类器在VLMs中的算术平均值,以获得多模态分类器。MQ-Det使用文本特征作为查询,从示例图像中提取信息,并利用交叉注意机制优化原始文本分类器。这是基于文本模态更重要的假设。然而,受示例和文本质量的影响,对两种模态的偏好应在不同类别之间动态变化。

Differences with Previous Works

OVMR方法与先前的开放词汇分类和检测方法有几个不同之处:

  1. 与传统的需要大量资源的预训练方法不同,OVMR使用在较小数据集上预训练的轻量级视觉令牌生成器。这使得能够在不完全重新训练模型的情况下,高效地将新的类别线索集成到模型中。
  2. OVMR有效地避免了提示学习方法中固有的过拟合问题,因为它不学习类别特定的参数。此外,插拔属性使其能够在预训练后无缝地转移到各种任务中。
  3. OVMR利用语言模型的强大泛化能力,自适应地融合多模态线索。与像MM-OVODMQ-Det这样同等对待模态或优先考虑文本的方法不同,OVMR通过评估它们的性能进一步动态地集成单模态分类器和多模态分类器。这种两阶段的分类器生成流程对于具有低质量示例或文本描述的场景更加稳健,使得OVMR在各种任务中表现更好。

Methodology


  如图2所示,OVMR由两个主要模块组成。第一个是多模态分类器生成模块,利用可通用的语言编码器动态地集成文本和视觉示例。它还包括一个新预训练的视觉标记生成器,将示例图像嵌入到语言空间中。第二个模块是测试时用的基于偏好的融合模块,不引入任何可训练参数。

Multi-modal Classifier Generation

  多模态分类器生成模块旨在通过自适应地融合视觉示例和文本描述来生成多模态分类器。对于感兴趣的新类别 C i C_i Ci ,将其视觉示例、目标图像和文本标记分别表示为 E i ∈ R M × H × W × 3 E_i\in \mathbb{R}^{M\times H \times W \times 3} EiRM×H×W×3 V i ∈ R N × H × W × 3 V_i\in \mathbb{R}^{N\times H \times W \times 3} ViRN×H×W×3 t i ∈ R L i × d t_i\in \mathbb{R}^{L_i\times d} tiRLi×d ,其中 M M M 是示例图像数量, N N N 是目标图像数量, L i L_i Li 是属于 C i C_i Ci 类别的文本标记长度, d d d 是标记嵌入的隐藏维度。此外,视觉示例 E i E_i Ei 和目标图像 V i V_i Vi 通过CLIP图像编码器 Φ C L I P − V \Phi_{CLIP-V} ΦCLIPV 编码为示例特征 e i e_i ei 和视觉特征 v i v_i vi

  为了利用语言编码器生成一个良好的多模态分类器,一个关键的先决条件是从视觉示例中提取出语言编码器能够理解的稳健的视觉标记,这些视觉标记需要准确地表示具有类别判别性的视觉细节。视觉标记生成器由 P P P 个与类别无关的可学习查询 q ∈ R P × d q \in \mathbb{R}^{P\times d} qRP×d 和四层全局自注意力Transformer块组成。通过利用可学习查询和示例特征之间的自注意力交互,可学习查询 q q q 自适应地从示例特征 e i e_i ei 中提取出属于 C i C_i Ci 类别的视觉标记。这个过程可以形式化为:

voken i = Φ VOK ( [ q , e i ] ) , \begin{equation} \text{voken}_i=\Phi_\text{VOK} ([q, e_i]), \end{equation} vokeni=ΦVOK([q,ei]),

  其中 [ ⋅ ] [\cdot] [] 表示单词级别的串联, voken i ∈ R P × d \text{voken}_i\in \mathbb{R}^{P\times d} vokeniRP×d 是查询标记 q q q 的相应输出。

  然后,使用语言编码器分析视觉和文本标记之间的关系,并自适应地生成 C i C_i Ci 类别的多模态分类器的权重 w V T i w_{VT}^i wVTi ,其计算方式为:

KaTeX parse error: Undefined control sequence: \label at position 19: …egin{equation} \̲l̲a̲b̲e̲l̲{eq:w_gen} w_\t…

  因此,多模态分类器 Φ C L S V T \Phi_{CLS}^{VT} ΦCLSVT 可以表示为(与权重计算相似度后的归一化输出):

KaTeX parse error: Undefined control sequence: \label at position 19: …egin{equation} \̲l̲a̲b̲e̲l̲{eq:cls_gen} \P…

  这里, sim ( ⋅ , ⋅ ) \text{sim}(\cdot, \cdot) sim(,) 表示余弦相似度, τ t \tau_t τt 是温度参数。

  • Pre-training of the Visual Token Generator

  视觉标记生成器是OVMR中唯一可训练的组件,从示例图像中提取类别判别性的视觉信息,并影响多模态分类器的性能。因此,确保视觉标记尽可能包含类别判别性的视觉细节非常重要。将视觉标记分别输入语言编码器以生成基于视觉的分类器 Φ C L S V \Phi_{CLS}^V ΦCLSV ,然后将基于视觉的分类器与多模态分类器一起进行优化。目标图像 v v v 在基于视觉和多模态分类器上的预测概率计算为:

KaTeX parse error: Undefined control sequence: \label at position 19: …egin{equation} \̲l̲a̲b̲e̲l̲{equation:logit…

  视觉标记生成器的整体预训练目标可以表示为:

L = CE ( p V , T ) + CE ( p VT , T ) , \begin{equation} \mathcal{L} = \text{CE}(p_\text{V}, \mathcal{T})+\text{CE}(p_\text{VT}, \mathcal{T}), \end{equation} L=CE(pV,T)+CE(pVT,T),

  其中,$ {\tt CE} (\cdot) 表示交叉熵损失, 表示交叉熵损失, 表示交叉熵损失, \mathcal{T}$是目标图像的真实标签。

  为了确保视觉标记生成器的泛化能力,论文设计了一种有效的预训练策略。在每个训练迭代中,从ImageNet21k-OVR中随机抽取每个类别的K张图像,这是ImageNet21k的一个子集。从这些图像中,随机选择 M M M 张图像作为每个类别的视觉示例,并将剩下的 N N N = K K K - M M M 张图像用作目标图像。示例数目 M M M 在范围 [ K / 4 , 3 K / 4 ] [K/4, 3K/4] [K/4,3K/4] 内随机变化,以模拟实际应用中遇到的多样情况。重要的是要确保示例和目标图像之间没有重叠,这可以引导模型学习具有类别区分性特征而不是实例特定细节。此外,在视觉标记生成器的注意力层和每个Transformer块中,还采用了诸如注意力路径随机dropup和通道级别dropup等技术来进一步增强其泛化能力。

Preference-Based Fusion

  基于偏好的融合旨在模拟对示例图像进行测试时的验证结果,以衡量基于文本、基于视觉和多模态分类器的偏好。因此,它根据预测的偏好生成了一个更强大的融合分类器。基于文本的分类器 Φ CLS T \Phi_{\text{CLS}}^{\text{T}} ΦCLST,可以通过将文本标记输入语言编码器来直接地获取。

  基于偏好的融合过程从对示例图像上不同分类器的验证开始。类似于公式4,通过将示例特征 e e e (含多个示例图像)输入到各种分类器中,可以获得示例图像在不同分类器上的预测概率 p ^ VT \hat{p}_{\text{VT}} p^VT p ^ V \hat{p}_{\text{V}} p^V p ^ T \hat{p}_{\text{T}} p^T ,分别对应于多模态、基于视觉和基于文本的分类器。然后,基于这些预测概率,可以得到每个类别对不同分类器的偏好:

α T = Ω ( p ^ T , T E ) , α V = Ω ( p ^ V , T E ) , α VT = Ω ( p ^ VT , T E ) , \begin{equation} \begin{aligned} &\alpha_\text{T}=\Omega(\hat{p}_\text{T}, \mathcal{T}_E), \\ &\alpha_\text{V}=\Omega(\hat{p}_\text{V}, \mathcal{T}_E), \\ &\alpha_\text{VT}=\Omega(\hat{p}_\text{VT}, \mathcal{T}_E), \end{aligned} \end{equation} αT=Ω(p^T,TE),αV=Ω(p^V,TE),αVT=Ω(p^VT,TE),

  其中, α T \alpha_{\text{T}} αT α V \alpha_{\text{V}} αV α VT ∈ R ∣ C ∣ × 1 \alpha_{\text{VT}} \in \mathbb{R}^{|C|\times 1} αVTRC×1 分别表示基于文本、基于视觉和多模态分类器的偏好。 T E \mathcal{T}_E TE 是示例图像的真实标签。 Ω \Omega Ω 表示选择的评估指标,这里是开放词汇分类任务中的F1分数,可以通过全面考虑精确度和召回率稳定地反映了分类器的质量。对不同分类器的偏好可以表示为:

[ α ^ V , α ^ VT , α ^ T ] = σ ( τ p [ α V , α VT , α T ] ) , \begin{equation} [\hat{\alpha}_\text{V}, \hat{\alpha}_\text{VT}, \hat{\alpha}_\text{T}] = \sigma(\tau_p[\alpha_\text{V}, \alpha_\text{VT}, \alpha_\text{T}]), \end{equation} [α^V,α^VT,α^T]=σ(τp[αV,αVT,αT]),

  其中, σ \sigma σ 表示softmax函数, τ p \tau_p τp 是用于生成偏好的温度参数, [ ⋅ ] [\cdot] [] 表示在最后一个维度上的连接。

  那么,多模态分类器和单模态分类器的融合分类器可以表示为(仅融合分类器中类别对应的权重):

Φ CLS F = α ^ V ⋅ Φ CLS V + α ^ VT ⋅ Φ CLS VT + α ^ T ⋅ Φ CLS T . \begin{equation} \Phi_\text{CLS}^F = \hat{\alpha}_\text{V}\cdot \Phi_\text{CLS}^\text{V}+ \hat{\alpha}_\text{VT}\cdot \Phi_\text{CLS}^\text{VT}+ \hat{\alpha}_\text{T} \cdot \Phi_\text{CLS}^\text{T}. \end{equation} ΦCLSF=α^VΦCLSV+α^VTΦCLSVT+α^TΦCLST.

  因此,可以得到目标图像在融合分类器上的最终预测概率 p p p ,如下所示:

p = Φ CLS F ( v ) . \begin{equation} p = \Phi_\text{CLS}^F(v). \end{equation} p=ΦCLSF(v).

  基于偏好的融合有效地利用示例图像来提升VLM的识别能力,而不引入任何可训练的参数。

Adaptation to Open-Vocabulary Detection

  论文的方法不仅局限于开放词汇分类,也可以灵活地适应其他开放词汇识别任务,如检测。在这项工作中,使用基于CenterNet2的多阶段检测器,就像DeticMM-OVOD中所做的那样。为简单起见,使用该分类器的两阶段变体。用 { b j , p j } j = 1 H \left\{{b}_j, p^j\right\}^{H}_{j=1} {bj,pj}j=1H 表示其输出, H H H 为提议的数量,可以表示为

KaTeX parse error: Undefined control sequence: \label at position 48: …\}^{H}_{j=1} = \̲l̲a̲b̲e̲l̲{eq:a} \Phi_\te…

  每个输入图像 I I I 首先被一系列操作依次处理:一个可训练的图像编码器 ( Φ enc ) \left(\Phi_{\text{enc}}\right) (Φenc) ,一个提议生成器 ( Φ pg ) \left(\Phi_{\text{pg}}\right) (Φpg) ,一个感兴趣区域(RoI)特征池化模块 ( Φ roi ) \left(\Phi_{\text{roi}}\right) (Φroi) ,最终得到一组RoI特征 { r j } j = 1 H \left\{r_j\right\}^{H}_{j=1} {rj}j=1HRoI特征经过边界框模块处理 ( Φ bbox ) \left(\Phi_{\text{bbox}}\right) (Φbbox) 以推断物体位置,得到 { b j } j = 1 H \left \{{b}_j \right \}^{H}_{j=1} {bj}j=1H

  此外,RoI特征经过分类模块处理,包括线性投影 ( Φ proj ) \left(\Phi_{\text{proj}}\right) (Φproj) 和多模态分类器 ( Φ CLS ∈ { Φ CLS VT , Φ CLS V , Φ CLS T } ) \left(\Phi_{\text{CLS}} \in \{\Phi_{\text{CLS}}^{\text{VT}}, \Phi_{\text{CLS}}^{\text{V}}, \Phi_{\text{CLS}}^{\text{T}}\}\right) (ΦCLS{ΦCLSVT,ΦCLSV,ΦCLST}) ,得到RoI特征的预测概率 { p j } j = 1 H \left\{p^j\right\}^{H}_{j=1} {pj}j=1H ,其中 p j ∈ { p VT j , p V j , p T j } p^j \in \{p^j_{\text{VT}}, p^j_{\text{V}}, p^j_{\text{T}}\} pj{pVTj,pVj,pTj}

  在训练过程中,多模态、基于视觉和基于文本的分类器保持冻结,而检测器中的其他组件是可训练的,通过为每个分类器引入了一个sigmoid交叉熵损失反向传播。在基于偏好的融合中,检测器以及多模态分类器用于识别每个示例图像的GT标签中最准确的伪框。随后,使用这些伪注释计算每个类别的平均精度(AP),这有助于计算不同分类器的偏好。

Experiments


Datasets

  • Classification

  遵循prompt学习方法,使用了11个图像分类数据集,涵盖了多样的识别任务。具体来说,基准包括ImageNetCaltech101用于一般对象分类;OxfordPetsStanfordCarsCars)、Flowers102Food101FGVCAircraftAircraft)用于细粒度分类;SUN397用于场景识别;UCF101用于动作识别;DTD用于纹理分类;最后EuroSAT用于卫星图像识别。

  • Detection

  在开放词汇检测中,遵循以往的研究使用了包含1,203个类别的100,000张图像的LVIS数据集。这些类别根据训练图像数量分为三组,即频繁、常见和稀有。将337个稀有类别视为新颖类别,并使用频繁和常见类别作为基础类别进行训练。当使用图像分类数据作为额外的弱监督时,使用与LVIS词汇重叠的ImageNet21k中的一部分类别子集,并将其表示为IN-L(如Detic)。

  • Pre-training Set

  根据ImageNet21k构建了预训练数据集。为了防止数据泄漏,从ImageNet21k中删除了在11个分类数据集和LVIS数据集中都存在的任何重叠类别。此外,限制每个类别的图像数量为64,以提高预训练效率。因此,论文创建了一个名为ImageNet21k-OVR64-shot ImageNet21k子集。该子集包含18,631个类别,总共包含110万张图像,远小于VLM预训练使用的数据集规模。

Implementation Details

  • Open-Vocabulary Classification

  根据prompt学习方法,选择了CLIPViT-B/16作为基础模型,并预训练了一个即插即用的视觉标记生成器,以增强其识别能力。每个类别的样本数 K K K 设置为8,每批次随机选取192个类别,总批次大小为1536。在单个3090 GPU上使用ImageNet21k-OVR对视觉标记生成器进行30轮预训练,在12小时内完成。采用Adam优化器和余弦学习率调度程序,其中学习率设置为0.0002。视觉标记数量 P P P 设定为2。偏好融合中的 τ p \tau_p τp 设定为10

  • Open-Vocabulary Detection

  该架构和训练方法几乎与DeticMM-OVOD中的相同,使用了CenterNet2模型,其主干网络为在ImageNet21k-P上预训练的ResNet-50Swin-B。值得注意的是,论文重新实现了Detic的内存高效版本,限制每个图像中实际边界框的最大数量为10个,从而能够在四个24GB 3090 GPU上复现Detic在实验中的结果。基于内存高效版本,用论文提出的多模态分类器替换了原始分类器,并进一步引入了基于偏好的融合。此外,为了公平比较,按照以前的工作,在LVIS基础类别上为CLIPViT-B/32预先训练一个新的视觉标记生成器,并使用ImageNet21k-OVR进行训练。在系统级实现中,采用Swin-B作为主干网络,并遵循Detic使用额外带标签图像数据(IN-L)对检测器进行训练。

  • Training and Test Setups

  在开放词汇分类中,选择分类数据集中的前半部分类别作为基础类别,并对基础类别进行比较,以公平地与现有方法进行比较。在prompt学习设置中,先前方法在推理期间需要利用使用的相同16张训练图像作为示例图像。prompt学习方法需要使用这些16张训练图像对每个下游数据集进行微调,而OVMR不需要任何额外的训练。测试集也与prompt学习方法保持一致。在传统的少样本设置中,遵循最近的工作,在相同的16张示例图像设置下使用CLIP的视觉编码器作为基础模型,并评估不同的少样本适应算法,就像prompt学习方法一样。在开放词汇检测方面,示例图像与MM-OVOD中相同,即为每个类别提供5张示例图像。主要评估指标是在“稀有”类别上平均计算得到的mask AP(平均精度),表示为mask AP r _r r

Comparison with Recent Works

Ablation Study

Analysis of Exemplar Images



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

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

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

相关文章

[DICOM活久见] 序列内部的RescaleIntercept不同导致的问题

本文由Markdown语法编辑器编辑完成. 1. 背景: 本文记录在工作中遇到的一些比较罕见的dicom图像. 这对于在未来工作中, 处理图像时, 需要考虑方案的完整性, 会有很大的帮助. 本文介绍的, 是目前我工作10年来, 头一次见到的一个CT序列, 它的序列内的RescaleIntercept值, 不是完…

Ubuntu解压7z压缩包方法

0 Preface/Foreword 1 解压缩指令 1.1 环境安装和检查 环境:检测ubuntu环境是否装有7z工具,如果没有,需要手动安装,安装方法如下: sudo apt-update sudo apt-get install p7zip-full 检测工具是否安装成功&#xff…

qmt量化交易策略小白学习笔记第56期【qmt编程之期权数据--获取历史期权列表--原生Python】

qmt编程之获取期权数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 获取历史期权列表 函数能帮助用户获取历史期权列表, 包括某日历史在上交所上市的认购合约和认沽合约, 也包括已经退市的…

PTA单词首字母大写

作者 颜晖 单位 浙大城市学院 本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式…

Css:属性选择器、关系选择器及伪元素

css的属性选择器&#xff1a; 注&#xff1a;属性值只能由数字&#xff0c;字母&#xff0c;下划线&#xff0c;中划线组成&#xff0c;并且不能以数字开头。 1、[属性] 选择含有指定属性的元素&#xff0c;用[]中括号表示。 <style> /*注意大小写区分 注意前后顺序 样…

电脑技巧:如何在Win11电脑上调整设置,让屏幕更加护眼?

目录 一、调整屏幕亮度 二、启用夜间模式 三、调整色彩设置 四、使用第三方护眼软件 五、保持良好的用眼习惯 总结 随着长时间使用电脑的人越来越多,护眼问题也变得越来越重要。Win11作为更新的操作系统,提供了更多的设置选项来帮助我们保护眼睛。本文将详细介绍如何在…

针对实验试服务器的使用问题【安装anaconda+Vscode连接+jupyther远程连接】

目录 一、Xshell连接 1-创建连接 2-安装anaconda 3-创建conda环境 4-修改下载镜像源 5-安装torch 二、VScoda连接服务器 1-下载插件Remote-ssh 用于远程连接服务器 2-配置文件 三、jupyther远程连接 四、师兄推荐的入门资料 1-python基础 2-机器学习 五、参考资料…

网络安全:键盘记录器

目录 什么是键盘记录器&#xff1f; 键盘记录器的类型 键盘记录器的工作原理 键盘记录器的有害影响 如何防止键盘记录器攻击&#xff1f; 在网络攻击的世界中&#xff0c;存在着许多形式的威胁&#xff0c;如前所述。 在本章中&#xff0c;我们将讨论网络攻击中的主要恶意…

基于mediamtx+ffmpeg实现视频推流,基于python-deffcode实现视频拉流

软件依赖&#xff1a;mediamtx、ffmpeg python包依赖&#xff1a;deffcode mediamtx下载地址&#xff1a;https://github.com/bluenviron/mediamtx/releases ffmeg下载地址&#xff1a;https://ffmpeg.org/download.html deffcode安装命令&#xff1a;pip install deffcode 1、…

HarmonyOS NEXT仓颉编程语言开发环境搭建(安装DevEco Studio Cangjie Plugin)

仓颉编程语言开发环境搭建主要是两部分&#xff1a; 安装最新版DevEco Studio&#xff1b;在DevEco Studio里面安装仓颉插件&#xff08;DevEco Studio Cangjie Plugin&#xff09;。 本文主要介绍DevEco Studio Cangjie Plugin的使用。 DevEco Studio Cangjie Plugin概述 …

【堆、快速选择排序】探寻TopK问题的解决方案

目录 前言 什么是TopK问题 建堆——优先级队列 快速选择排序QuickSelect 快速选择排序的时间复杂度 前言 TopK问题在面试中常常被问到 —— 比如&#xff0c;在10亿个整数里&#xff0c;找出最大的前100个。在海量数据中查找出重复出现的元素或者去除重复出现的元素也是常…

相亲交友小程序开发功能分析

相亲交友小程序的开发功能分析可以从用户端和管理后台两个主要方面来进行。 用户端功能 注册与登录&#xff1a; 用户可以通过手机号、微信号或其他第三方平台进行注册登录&#xff0c;简化注册流程。 实名认证&#xff1a; 引入实名认证机制&#xff0c;确保用户信息的真实…

统计学习与方法实战——K近邻算法

K近邻算法 K近邻算法备注k近邻模型算法距离度量 k k k值选择分类决策规则构造KDTree k k k近邻查找范围查询 代码结构总结 K近邻算法 备注 kNN是一种基本分类与回归方法. 多数表决规则等价于0-1损失函数下的经验风险最小化&#xff0c;支持多分类&#xff0c; 有别于前面的感…

深度学习——强化学习算法介绍

强化学习算法介绍 强化学习讨论的问题是一个智能体(agent) 怎么在一个复杂不确定的环境(environment)里面去极大化它能获得的奖励。 强化学习和监督学习 强化学习有这个试错探索(trial-and-error exploration)&#xff0c;它需要通过探索环境来获取对环境的理解。强化学习 ag…

嵌入式全栈开发学习笔记---C++(继承和派生)

目录 继承的概念inherit 继承的使用场景 继承的权限 继承对象的模型 继承中的构造和析构 初始化列表的第三个使用场景 场景1&#xff1a;类成员变量被const修饰&#xff1b; 场景2&#xff1a;类对象作为另一个类的成员变量&#xff0c;同时该类没有提供无参构造函数&a…

刷题记录-HOT 100(三)

链表 1、环形链表找环起始结点 使用快慢指针检测环&#xff1a; 初始化两个指针 slow 和 fast&#xff0c;都指向链表的头节点。slow 每次移动一步&#xff0c;fast 每次移动两步。如果 fast 和 slow 相遇&#xff08;即 fast slow&#xff09;&#xff0c;说明链表中存在环。…

探讨马丁格尔策略应用的3问和昂首平台的3答

问&#xff1a;为什么在使用马丁格尔策略时要如此谨慎?毕竟最大的市场波动可能根本不会发生。 答&#xff1a;让我们以一个具体的例子来说明这个问题。假设我们进行交易&#xff0c;计算出一个小于最大预期值的市场动量&#xff0c;比如说这个值为90便士。试想&#xff0c;如…

C#笔记6 网络编程基础,解释端口套接字,代码实例分析DNS,IPAddress等类

一、计算机网络基础 这一点毋庸置疑&#xff0c;想要写一个使用网络接口传输数据的程序&#xff0c;不知道计算机网络的基本知识是很难的。 局域网与广域网 所谓的WAN和LAN其实就是网络的一个范围界定。WAN为广域网&#xff0c;中间会包含更多的互联网设备&#xff0c;由无数…

OpenAI正在努力解决其面临的版权问题

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Web大学生网页作业成品——心理健康教育介绍网页设计与实现(HTML+CSS+JS)(4个页面)

&#x1f389;&#x1f389;&#x1f389; 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…