万字长文解读深度学习——ViT、ViLT、DiT

news2024/11/14 20:39:21

文章目录

  • 🌺深度学习面试八股汇总🌺
  • ViT
    • 1. ViT的基本概念
    • 2. ViT的结构与工作流程
      • 1. 图像分块(Image Patch Tokenization)
      • 2. 位置编码(Positional Encoding)
      • 3. Transformer 编码器(Transformer Encoder)
      • 4. 分类标记(Classification Token)
    • 3. ViT的关键组件
      • 1. 图像块(Patch Embedding)
      • 2. 多头自注意力机制(Multi-Head Self-Attention)
      • 3. 位置编码(Positional Encoding)
    • 4. ViT与CNN的对比
    • 5. ViT的优势和挑战
      • 优势
      • 挑战
    • 6. ViT的应用
    • ViT 与 CNN 的混合模型 Hybrid ViT
  • ViLT
    • 1. ViLT 的工作流程
      • 1. 图像和语言的输入处理
      • 2. 图像和语言的融合
      • 3. 自注意力机制
      • 4. 输出处理
    • 2. ViLT 的主要创新点
      • 1. 无卷积特征提取器
      • 2. 视觉和语言的早期融合
        • 什么时候用 CLIP,什么时候用 ViLT?
      • 3. 简化的架构
    • 3. ViLT 的优缺点
      • 优点
      • 缺点
  • DiT
    • 1. DiT 的核心思想
    • 2. DiT 的组成元件
        • (1)图像块嵌入(Patch Embedding)
        • (2)位置编码(Positional Encoding)
        • (3)Transformer 编码器(Transformer Encoder)
        • (4)[CLS] 标记
        • (5)分类头或任务特定头部(Task-Specific Heads)
    • 3. DiT 的工作流程
    • 4. DiT 的优缺点
        • 优点
        • 缺点
    • 5. DiT 的典型应用场景
      • 与 OCR 结合的文档分析
    • 总结
  • ViT、ViLT、DiT区别和联系
    • 设计目标、输入类型、模型结构、适用任务对比

🌺深度学习面试八股汇总🌺

ViT

ViT(Vision Transformer) 是一种将 Transformer 模型用于计算机视觉任务中的创新架构。ViT 只使用了 Transformer 的编码器 部分进行特征提取和表征学习

1. ViT的基本概念

ViT 的核心思想是将传统的(CNN)的卷积操作替换为 Transformer 的注意力机制,借鉴 Transformer 模型在自然语言处理(NLP)中的成功经验,用于图像分类任务

2. ViT的结构与工作流程

ViT 模型的工作流程如下:

1. 图像分块(Image Patch Tokenization)

ViT 将输入的图像划分为固定大小的图像块(patches),并将这些图像块展开为一维向量,类似于将图像分成许多小的"单词"。然后,将每个图像块转换为一个嵌入向量,这些嵌入向量类似于 NLP 中的词嵌入(Word Embedding)。

  • 假设输入图像的尺寸是 224 × 224 224 \times 224 224×224,将其划分为尺寸为 16 × 16 16 \times 16 16×16 的小块。这将产生 14 × 14 = 196 14 \times 14 = 196 14×14=196 个图像块。
  • 每个图像块的像素值被展平成一维向量,并通过线性映射(全连接层)转换为固定维度的嵌入向量。

2. 位置编码(Positional Encoding)

因为 Transformer 的注意力机制不依赖于输入的顺序,而图像中的空间信息是重要的,因此需要给每个图像块添加位置编码(Positional Encoding),以保留图像块的位置信息。这样,Transformer 可以理解图像块之间的相对位置关系。

  • 位置编码的方式与 NLP 中的 Transformer 类似,使用正弦和余弦函数来编码图像块的位置。

3. Transformer 编码器(Transformer Encoder)

图像块和位置编码结合后,作为输入送入 Transformer 编码器。Transformer 编码器的每一层由多头自注意力机制(Multi-Head Self-Attention)前馈神经网络(Feed-Forward Network, FFN)组成,并通过残差连接和层归一化来保持梯度稳定性。

  • 多头自注意力机制:每个图像块与其他所有图像块之间的相似性通过自注意力机制计算,模型通过这种机制捕捉全局的特征表示
  • 前馈神经网络(FFN):每个图像块的特征表示通过前馈网络进一步提炼。

这个过程类似于传统的 Transformer 中对词的处理,只不过这里处理的是图像块

4. 分类标记(Classification Token)

ViT 模型在输入图像块之前,通常会添加一个分类标记([CLS] Token)。这个分类标记类似于 BERT 模型中的 [CLS] 标记,用来代表整个图像的全局特征。最终,经过 Transformer 编码器的处理后,CLS 标记的输出被用于进行图像分类

  • CLS 标记的输出经过一个全连接层,将其映射到目标类别空间中,得到最终的分类结果。CLS 是 “classification” 的缩写,表示分类。它是一个附加到图像块序列之前的向量,类似于 BERT 模型中处理文本任务时添加的 [CLS] 标记。CLS 标记没有直接对应于任何特定的图像块,它只是一个特殊的向量,用于捕获整个图像的全局信息

[0.9, 0.05, 0.05]
表示 90% 的概率是“猫”,5% 的概率是“狗”,5% 的概率是其他类别。

在这里插入图片描述

3. ViT的关键组件

1. 图像块(Patch Embedding)

ViT 将图像划分为固定大小的图像块,并将其展平为一维向量。这与传统 CNN 的卷积操作不同,CNN 的卷积操作是基于局部感受野,而 ViT 直接处理全局特征

2. 多头自注意力机制(Multi-Head Self-Attention)

ViT 的核心是使用多头自注意力机制来计算每个图像块与其他图像块之间的关系。与 CNN 通过层级卷积提取特征不同,ViT 通过全局的自注意力机制捕捉图像的特征表示。

3. 位置编码(Positional Encoding)

ViT 通过位置编码来为每个图像块提供位置信息,这在视觉任务中是非常重要的,因为图像块的相对位置对分类任务有重要影响。

4. ViT与CNN的对比

对比维度CNNViT (Vision Transformer)
局部 vs 全局依赖于卷积核的局部感受野,逐层提取局部特征并组合成全局特征通过自注意力机制直接捕捉图像块之间的全局关系
参数规模通常参数较少,适合处理小数据集,具有较好的泛化能力通常拥有更多参数,在小数据集上容易过拟合,但在大规模数据集上效果出色
数据需求在小数据集上表现稳定,具有先验信息(如卷积操作中的平移不变性缺少 CNN 中的先验信息,因此需要大规模数据集进行训练,在小数据集上表现不如 CNN

5. ViT的优势和挑战

优势

  • 全局信息捕捉:ViT 通过自注意力机制能够直接捕捉图像块之间的全局关系,而不依赖于局部的卷积操作。这在处理一些全局依赖性较强的任务时表现出色。
  • 充分利用数据的丰富性:ViT 在大规模数据集上训练时,能够充分利用数据的丰富性,并展示出优越的性能。尤其在超大规模数据集(如 ImageNet21k、JFT-300M)上,ViT 的性能超过了传统 CNN。

挑战

  • 数据需求量大:ViT 模型的参数量较大,因此需要大规模的数据集来训练。如果数据集规模较小,ViT 容易过拟合。
  • 训练复杂:与 CNN 相比,ViT 的训练更复杂,尤其在资源有限的情况下,训练大规模的 ViT 模型会面临内存和计算资源的挑战。

6. ViT的应用

主要用于图像分类任务,但其架构可以扩展到其他计算机视觉任务,如目标检测、图像分割、视觉问答等。由于其全局特征捕捉能力,ViT 在一些需要处理全局上下文的任务中表现尤为出色。

ViT 与 CNN 的混合模型 Hybrid ViT

Hybrid ViT 是一种将 CNN 和 Transformer 结合的架构,它将 CNN 用于特征提取Transformer 用于全局建模。可以补充,这种混合模型可以在一定程度上解决 ViT 在小数据集上的表现问题,并保留 Transformer 全局建模的优点。


ViLT

ViLT(Vision-and-Language Transformer) 是一种使用Transformer 的编码器视觉信息语言信息整合在同一Transformer架构中解决视觉与语言的联合任务的多模态模型

主要特点在于去除了传统视觉-语言模型中的卷积神经网络

ViLT 的主要创新点在于它不依赖卷积神经网络(CNN)来处理图像,而是通过直接将图像块和文本输入给 Transformer 模型,实现视觉和语言的早期融合

传统的视觉-语言模型有显著不同,传统模型通常会先提取,再结合(先通过卷积网络提取视觉特征,再与语言特征结合)。
早期融合和晚期融合指的是进入 Transformer 编码器的顺序,早期融合,在融合后再进入Transformer,CLIP等,是经过Transformer后提取特征进行对比,是晚期融合。

1. ViLT 的工作流程

ViLT 直接通过Transformer对图像和文本进行融合处理,它的工作流程可以概括为以下几个步骤:

1. 图像和语言的输入处理

  • 图像输入:与 ViT(Vision Transformer)类似,ViLT 通过将输入图像划分为固定大小的图像块(patch)。例如,一个 224 × 224 224 \times 224 224×224 的图像可以划分成多个 16 × 16 16 \times 16 16×16 的图像块,展平后形成向量序列。
  • 语言输入文本输入通过词嵌入(Word Embedding)表示为向量。文本的输入与 BERT 模型中的处理类似。

2. 图像和语言的融合

ViLT 的核心是通过单一 Transformer 模型同时处理图像和语言数据。其输入序列是图像块和词嵌入的融合。具体步骤如下:

  • 图像块嵌入+位置编码:每个图像块被展平成一维向量,并与对应的位置编码(Positional Encoding) 结合在一起,类似于 ViT。
  • 文本嵌入+位置编码:文本序列通过嵌入层映射为固定维度的向量,并且每个词也被添加位置编码
  • 联合输入图像块嵌入和文本嵌入会串联在一起,作为 Transformer 的输入序列。
    在这里插入图片描述

图像 patch 嵌入在前,文本 token 嵌入在后。如果需要,也会在前面加上【CLS】

3. 自注意力机制

ViLT 使用自注意力机制来捕捉图像块和文本词之间的相互关系。通过多头自注意力机制,模型可以让每个输入块(无论是图像还是词)与其他块交互,捕捉图像和语言之间的上下文信息。

这种全局的注意力机制能够高效地融合视觉和语言信息,从而使得模型能够处理如图文匹配、视觉问答等跨模态任务。

4. 输出处理

最终,ViLT 的输出经过 Transformer 编码器处理,得到的结果可以用于多种下游任务。具体根据任务的不同,输出会有不同的处理方式:

  • 图文匹配(Image-Text Matching, ITM):模型判断输入的图像和文本是否匹配,这可以用于图像-文本检索任务。
  • 视觉问答(Visual Question Answering, VQA):模型根据图像和问题文本生成答案。
  • 图像描述(Image Captioning):模型根据输入图像生成描述性文本。

2. ViLT 的主要创新点

1. 无卷积特征提取器

与传统的视觉-语言模型(如 LXMERT、UNITER 等)不同,ViLT 不使用卷积神经网络,而是直接将图像切分成小块后,使用 Transformer 模型对图像和文本进行融合处理

  • 优势:减少了模型的计算开销,因为不需要预训练一个大型 CNN 模型来提取视觉特征。
  • 挑战:直接处理图像块可能在细粒度视觉理解任务上存在性能瓶颈,尤其是在需要精细局部信息时。

2. 视觉和语言的早期融合

ViLT 通过早期融合(early fusion)的方式,将图像块和文本词嵌入直接结合在 Transformer 的输入中。

早期融合和晚期融合指的是进入 Transformer编码器的顺序,早期融合,在融合后再进入Transformer,CLIP等,是经过Transformer后提取特征进行对比,是晚期融合。

什么时候用 CLIP,什么时候用 ViLT?
  • 使用 CLIP

    • 当需要进行 图像-文本检索(给定图像或文本检索相关配对)时,CLIP 的对比学习在跨模态检索方面表现优异。
    • 零样本分类任务,CLIP 在没有类别标签的条件下,通过类别描述实现分类,无需对新类别进行微调。
    • 常规的 图像分类 场景中,CLIP 由于有强大的跨模态对比能力,可以使用类别描述进行分类,而不需要针对每个类别进行单独的训练。
  • 使用 ViLT

    • 视觉问答(VQA)图文匹配 任务中,ViLT 的早期融合能捕捉图像和文本间的细粒度关系,适合需要图像-文本联合推理的任务。
    • 细粒度的图文理解 任务中,如果任务需要在图像的局部信息和文本的上下文之间进行交互,ViLT 可以更有效地捕捉图像和文本之间的深层语义关系。

总结:

  • CLIP 适合在 跨模态检索、零样本分类简单图像分类 场景中使用。
  • ViLT 则更适合 视觉问答、图文匹配细粒度图文理解 场景。

3. 简化的架构

通过使用单一的 Transformer 模型处理图像和文本,ViLT 提供了一种简化的架构,避免了传统视觉-语言模型中分别处理图像和文本的复杂性。这种设计大大简化了模型的计算流程,同时在许多视觉-语言任务上仍然保持了很高的性能。

3. ViLT 的优缺点

优点

  • 计算效率高:由于不使用 CNN 或区域提取网络(如 Faster R-CNN),ViLT 相比传统视觉-语言模型具有更少的计算开销,训练和推理速度更快。
  • 模型简洁:单一的 Transformer 模型处理视觉和语言,避免了复杂的多模块设计,架构简单易于扩展。
  • 多模态融合效果好:通过早期融合,ViLT 能够捕捉图像和语言的全局上下文信息,表现出色。

缺点

  • 精细视觉特征提取能力较弱:由于没有使用卷积神经网络进行图像特征提取,ViLT 在处理需要细粒度视觉理解的任务时,可能性能不如传统模型。这是因为 Transformer 对局部信息的提取能力不如 CNN。
  • 对大规模数据集的依赖:和 Vision Transformer 类似,ViLT 在较小数据集上的表现可能不如传统方法,因此需要大规模数据集进行预训练才能发挥最佳性能。

DiT

DiT(Document Image Transformer) 是一种基于 Transformer编码器部分文档图像理解模型,处理复杂的文档图像任务,比如表格检测、文档分类和版面识别等图像理解任务

“文档图像”专指 文档类型的图像,包含文字和结构信息的文档内容,以图像的形式呈现,而非普通的自然图像(如风景图或人像)。例如扫描的文档、PDF 文件、发票、合同、表格、账单、报告等。

DiT 的设计灵感来自 ViT(Vision Transformer),但它针对文档图像特有的复杂布局结构进行了专门优化,以便更好地理解图像中的文字、表格、布局和视觉信息。

1. DiT 的核心思想

DiT 的核心思想是使用 Transformer 模型直接在文档图像上进行端到端特征学习信息抽取。它将文档图像划分成一系列小图像块,并使用 Transformer 结构对这些图像块进行全局建模。通过这种方式,DiT 能够捕捉到文档图像中的复杂布局和层次结构,实现文档级的图像理解

2. DiT 的组成元件

DiT 主要由以下几个关键组成元件构成:

(1)图像块嵌入(Patch Embedding)
  • DiT 首先将输入文档图像划分为固定大小的块(如 16x16 或 32x32 的图像块),然后对每个图像块进行展平处理,并通过一个线性变换层将其映射到固定维度的特征空间。
  • 这一步生成了每个图像块的特征向量,就像文本中的词向量一样。这些特征向量形成了一个序列,将作为 Transformer 编码器的输入。
(2)位置编码(Positional Encoding)
  • 为了使 Transformer 了解每个图像块在文档中的位置,DiT 使用了位置编码来表示图像块的位置。
  • DiT 中采用了类似 ViT 的绝对位置编码,将位置编码添加到每个图像块的嵌入中,从而让模型对文档布局的空间信息有清晰的感知。
(3)Transformer 编码器(Transformer Encoder)
  • DiT 的核心部分是堆叠的 Transformer 编码器层。每一层编码器包括多头自注意力机制和前馈网络,通过逐层提取图像块间的全局关系,DiT 可以学习到文档中不同区域间的长距离依赖关系
  • 由于文档图像往往包含复杂的排版和结构(如文本块、表格、图片等),Transformer 的全局建模能力可以更有效地捕捉这些信息。
(4)[CLS] 标记
  • 类似于 BERT 等语言模型,DiT 在输入序列的最前端添加了一个 [CLS] 标记,作为文档级的特征表示
  • 在 Transformer 编码器的最后一层,模型使用 [CLS] 标记的输出表示整个文档图像的综合信息。这个输出可以用于分类、特征提取或其他文档级任务
(5)分类头或任务特定头部(Task-Specific Heads)
  • 根据任务需求,DiT 会在 [CLS] 标记或每个图像块的输出后接入不同的任务特定头部:
    • 文档分类:基于 [CLS] 标记的输出进行分类。
    • 表格检测:输出每个图像块的特征,用于进一步的边界框预测。
    • 布局识别:结合每个图像块的特征,实现对文档内容的分块和标记。

3. DiT 的工作流程

DiT 的工作流程可以分为以下几个步骤:

  1. 图像预处理:将输入的文档图像划分成若干固定大小的图像块,并将其展平为向量表示。
  2. 图像块嵌入和位置编码:通过线性变换和位置编码,将每个图像块映射到 Transformer 可以处理的特征空间中,并形成输入序列。
  3. Transformer 编码:将图像块嵌入序列输入到 Transformer 编码器中,逐层捕捉图像块间的全局关系和文档的层次结构。
  4. [CLS] 标记和任务特定头部:通过 [CLS] 标记或每个图像块的特征输出执行文档级或块级任务,例如分类、布局分析等。

4. DiT 的优缺点

优点
  • 端到端文档理解:DiT 能够在不依赖 CNN 的情况下直接处理文档图像,实现端到端的文档理解,减少了特征提取的复杂性。
  • 强大的全局建模能力:Transformer 的自注意力机制使 DiT 在长距离依赖建模和复杂布局结构理解上表现出色,适合处理表格、复杂布局等文档元素。
  • 灵活性高:DiT 的输入可以扩展到不同大小和格式的文档图像,同时能够适应多种任务(如文档分类、表格检测、布局识别),具有较高的任务适应性。
缺点
  • 计算复杂度高:由于 Transformer 的自注意力机制,DiT 的计算复杂度为 ( O ( n 2 ) O(n^2) O(n2)),其中 (n) 是图像块的数量。在处理高分辨率文档图像时,可能导致计算和内存负担较大。
  • 对大规模数据依赖强:Transformer 模型通常需要大量数据进行预训练,以实现较好的泛化性能。DiT 在小数据集上的表现可能受到限制。
  • 位置敏感性较弱:虽然使用了位置编码,但 Transformer 本身并不直接感知图像的空间结构,可能在某些需要精确空间关系的任务中不如 CNN 表现优异。

5. DiT 的典型应用场景

  • 文档分类:通过 [CLS] 标记的输出对整个文档图像进行分类,例如文档类型识别。
  • 表格检测与识别:将文档图像中的表格区域检测出来,或进一步识别表格结构。
  • 文档布局分析:识别文档的布局结构,例如标题、段落、表格、图片等不同内容块的位置和类别。

与 OCR 结合的文档分析

在文档图像理解任务中,DiT 可以结合 OCR 提取文字信息,实现更全面的文档理解。面试中可能会考察如何在文档图像分析中结合 OCR,DiT 提取图像布局信息OCR 提取文字内容,两者结合可以进行复杂的文档内容分析。

OCR(Optical Character Recognition),即 光学字符识别,是一种通过识别图像中的文字并将其转化为计算机可编辑、可搜索文本的技术。OCR 在各种应用场景中被广泛使用,如文档数字化、表单处理、车牌识别等。OCR 技术能够从扫描文件、照片、PDF 等图像中提取文字信息,使文字数据易于存储、编辑、搜索和分析。

总结

DiT(Document Image Transformer) 是一个基于 Transformer 的模型,专门设计用于文档图像理解任务。通过直接将图像划分为块并使用 Transformer 进行全局建模,DiT 能够捕捉复杂的布局和层次信息,适合应用在文档分类、表格检测和布局分析等任务上。然而,由于其高计算复杂度和对大规模数据的依赖,DiT 在应用时需要权衡计算资源和模型性能。

ViT、ViLT、DiT区别和联系

ViT(Vision Transformer)ViLT(Vision-and-Language Transformer)DiT(Document Image Transformer) 都是基于 Transformer 的模型,专门针对图像分类图文融合文档图像理解。它们虽然共享一些相似的架构基础,但在设计目标、任务应用和数据输入等方面有显著的区别。以下是它们之间的区别和联系:


设计目标、输入类型、模型结构、适用任务对比

特性ViT (Vision Transformer)ViLT (Vision-and-Language Transformer)DiT (Document Image Transformer)
1. 设计目标适用于通用计算机视觉任务,如图像分类、分割专为 视觉-语言融合任务 设计,如视觉问答和图文检索专注于 文档图像理解,处理文档分类、表格检测、版面分析等
2. 输入类型仅接受 图像 输入,将图像划分为小块(patch)接受 图像-文本对 输入,直接处理视觉和文本信息仅接受 文档图像 输入,将文档图像划分为小块进行处理
3. 模型结构只使用 Transformer 编码器,堆叠多层编码器处理图像块轻量化设计,将图像和文本嵌入输入同一个 Transformer 编码器类似 ViT,只使用 Transformer 编码器,专注文档布局和结构信息
4. 适用任务和应用场景适合图像分类、目标检测、图像分割等计算机视觉任务适合视觉问答、图文匹配、图文检索等视觉-语言多模态任务适合文档分类、表格检测、版面分析等文档图像理解任务

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

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

相关文章

PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸

小编最近有一篇png图片要批量压缩,大小都在5MB之上,在网上找了半天要么就是有广告,要么就是有毒,要么就是功能复杂,整的我心烦意乱。 于是我自己用python写了一个纯净工具,只能压缩png图片,没任…

2.索引:MySQL 索引分类

MySQL中的索引是提高数据查询速度的重要工具,就像一本书的目录,可以帮助我们快速定位到所需的内容。选择适合的索引类型对数据库设计和性能优化至关重要。本文将详细介绍MySQL中常见的索引类型,并重点讲解聚集索引和二级索引的概念及应用。 1…

attention 注意力机制 学习笔记-GPT2

注意力机制 这可能是比较核心的地方了。 gpt2 是一个decoder-only模型,也就是仅仅使用decoder层而没有encoder层。 decoder层中使用了masked-attention 来进行注意力计算。在看代码之前,先了解attention-forward的相关背景知识。 在普通的self-atten…

Elasticsearch 8.16:适用于生产的混合对话搜索和创新的向量数据量化,其性能优于乘积量化 (PQ)

作者:来自 Elastic Ranjana Devaji, Dana Juratoni Elasticsearch 8.16 引入了 BBQ(Better Binary Quantization - 更好的二进制量化)—— 一种压缩向量化数据的创新方法,其性能优于传统方法,例如乘积量化 (Product Qu…

C语言 char 字符串 - C语言零基础入门教程

目录 一.char 字符串简介 二.字符和字符串区别 1.取值范围相同2.字符串由多个字符构成3.字符串和字符使用 printf 函数 三.char 字符串遍历四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.char 字符串简介 在C 语言中,除了前面介绍…

小程序文件如何直接上传到oss?一篇文章搞定!

文件上传到 OSS 的小程序工具函数 此工具函数 uploadOss 用于在微信小程序中将临时文件上传到阿里云 OSS(对象存储服务)。它提供了灵活的参数设置,允许自定义文件路径、文件名前缀和文件目录。 目录 环境依赖函数说明参数使用示例注意事项…

使用Spring AI中的RAG技术,实现私有业务领域的大模型系统

前言 在上一篇文章《使用SpringAI快速实现离线/本地大模型应用》中,记录了如何使用SpringAI来调用我们的本地大模型,如何快速搭建一个本地大模型系统,并演示本地大模型的智能对话、图片理解、文生图等功能。 但在前文中,我们把S…

数据分析-系统认识数据分析

目录 数据分析的全貌 观测 实验 应用 数据分析的全貌 观测 实验 应用

4. 查看并更新langgraph节点

导入必要的库和设置工具 首先,我们需要导入一些必要的库,并设置我们的工具。这些工具将用于在Spotify和Apple Music上播放歌曲。 from langchain_openai import ChatOpenAI from langchain_core.tools import tool from langgraph.graph import Messag…

使用Java绘制图片边框,解决微信小程序map组件中marker与label层级关系问题,label增加外边框后显示不能置与marker上面

今天上线的时候发现系统不同显示好像不一样,苹果手机打开的时候是正常的,但是一旦用安卓手机打开就会出现label不置顶的情况。尝试了很多种办法,也在官方查看了map相关的文档,发现并没有给label设置zIndex的属性,只看到…

【专题】计算机网络之网络层

1. 网络层的几个重要概念 1.1 网络层提供的两种服务 (1) 让网络负责可靠交付 计算机网络模仿电信网络,使用面向连接的通信方式。 通信之前先建立虚电路 VC (Virtual Circuit) (即连接),以保证双方通信所需的一切网络资源。 如果再使用可靠传输的网络…

vTESTstudio系列15--vTESTstudio-Doors的需求和测试用例的管理

最近有朋友在咨询vTESTstudio中怎么去跟Doors里面的需求去做好管理这方面的问题,临时加两篇文章介绍一下,Lets Go!!! 目录 1.Doors的配置: 1.1 安装Doors AddIn for vTESTstudio: 1.2 更新XML脚本: 1.3 导出需求的Trace Item…

波动中的金钥匙:趋势震荡指标——源码公布,仅供学习

趋势与震荡,两者在市场运行中紧密相连,相互影响。趋势往往是震荡累积后的自然延伸,而震荡则常常是趋势形成与调整的前奏。在各类行情与不同时间周期中,当前的震荡不过是更大周期趋势中的一个组成部分;相应的&#xff0…

面试_ABtest原理简介

01 什么是ABtest ABtest来源于假设检验,现有两个随机均匀的有样本组A、B,对其中一个组A做出某种改动,实验结束后分析两组用户行为数据,通过显著性检验,判断这个改动对于我们所关注的核心指标是否有显著的影响&#xf…

‘nodemon‘ 不是内部或外部命令,也不是可运行的程序

解决方法:使用 npx 临时运行 nodemon 如果你不想全局安装 nodemon,你可以使用 npx(npm 5.2 及以上版本自带)来临时运行 nodemon: npx nodemon server.jsnodemon正常配置 要在开发过程中实现每次修改 Node.js 代码后…

计算机网络基础(3)_应用层自定义协议与序列化

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络基础(3)_应用层自定义协议与序列化 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论&a…

E2E、CRC、Checksum、Rollingcounter

文章目录 前言1、E2E2、CRC3、Checksum4、Rollingcounter总结 前言 在专栏文章仿真CAN报文发送的CRC校验算法(附CAPL代码)和同星TSMaster中如何自定义E2E校验算法中分别给出了CRC算法和E2E校验实现,从中也明白了为什么在测试中需要去做这些仿…

嵌入式硬件杂谈(一)-推挽 开漏 高阻态 上拉电阻

引言:对于嵌入式硬件这个庞大的知识体系而言,太多离散的知识点很容易疏漏,因此对于这些容易忘记甚至不明白的知识点做成一个梳理,供大家参考以及学习,本文主要针对推挽、开漏、高阻态、上拉电阻这些知识点的学习。 目…

二叉树面试题(C 语言)

目录 1. 单值二叉树2. 相同的树3. 对称二叉树4. 二叉树的前序遍历5. 二叉树的中序遍历6. 二叉树的后序遍历7. 另一颗树的子树8. 通过前序遍历返回中序遍历 1. 单值二叉树 题目描述: 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有…

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件:若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类,对Excel大…