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

文章目录

  • 🌺深度学习面试八股汇总🌺
  • 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. 适用任务和应用场景适合图像分类、目标检测、图像分割等计算机视觉任务适合视觉问答、图文匹配、图文检索等视觉-语言多模态任务适合文档分类、表格检测、版面分析等文档图像理解任务

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MQ集群

目录 MQ集群 集群分类 普通集群 集群结构和特征 集群的部署 获取cookie 准备集群配置 启动集群 镜像模式 镜像模式的特征 镜像模式的配置 exactly模式 仲裁队列 集群特征仲裁队列:仲裁队列是3.8版本以后才有的新功能,用来替代镜像队列&#…

零基础Java第十七期:内部类

目录 一、Object类 1.1. 获取对象信息 1.2. 对象比较equals方法 1.3. hashCode方法 ​编辑 二、内部类 一、Object类 1.1. 获取对象信息 Object是Java默认提供的一个类。Java里面除了Object类,所有的类都是存在继承关系的。默认会继承Object父 类。即所有…

Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…

GitCode光引计划有奖征文大赛

一、活动介绍 GitCode平台汇聚了众多杰出的G-Star项目,它们犹如璀璨星辰,用各自的故事和成就,为后来者照亮前行的道路。我们诚邀广大开发者、项目维护者及爱好者,共同撰写并分享项目在GitCode平台上托管的体验,挖掘平…

什么是CRM系统?

越来越多的企业意识到:如何有效管理与客户的关系、提升客户满意度,并通过这些提升推动销售增长,已经成为许多公司亟待解决的问题。为此,客户关系管理(Customer Relationship Management,简称CRM&#xff09…

ctfshow DSBCTF web部分wp

ctfshow 单身杯 web部分wp web 签到好玩的PHP 源码&#xff1a; <?php error_reporting(0); highlight_file(__FILE__);class ctfshow {private $d ;private $s ;private $b ;private $ctf ;public function __destruct() {$this->d (string)$this->d;$this…

不一样的CSS(一)

目录 前言&#xff1a; 一、规则图形 1.介绍&#xff1a; 2.正方形与长方形&#xff08;实心与空心&#xff09; 2.1正方形&#xff1a; 2.2长方形 3.圆形与椭圆形&#xff08;空心与实心&#xff09; 3.1圆形与椭圆形 4.不同方向的三角形 4.1原理 4.2边框属性 5.四…

VUE实现点击导航栏进行切换右边内容

首先看看效果&#xff0c;左边导航栏进行切换&#xff0c;右边内容进行切换 代码如下 <div><el-tabs :tab-position"tabPosition" style"height: 800px;"><el-tab-pane label"通知通告">通知通告</el-tab-pane><el-t…

微信小程序——实现二维码扫描功能(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

OpenGL ES 文字渲染进阶--渲染中文字体

旧文 OpenGL ES 文字渲染方式有几种? 一文中分别介绍了 OpenGL 利用 Canvas 和 FreeType 绘制文字的方法。 无论采用哪种方式进行渲染,本质上原理都是纹理贴图:将带有文字的图像上传到纹理,然后进行贴图。 渲染中文字体 利用 Canvas 绘制中文字体和绘制其他字体在操作方式上…

redis实现消息队列的几种方式

一、了解 众所周知&#xff0c;redis是我们日常开发过程中使用最多的非关系型数据库&#xff0c;也是消息中间件。实际上除了常用的rabbitmq、rocketmq、kafka消息队列&#xff08;大家自己下去研究吧~模式都是通用的&#xff09;&#xff0c;我们也能使用redis实现消息队列。…

WLAN消失或者已连接但是访问不了互联网

目录 1、WLAN已连接但是访问不了互联网 2、WLAN图标消失 今晚电脑突然连不上网了&#xff0c;重启试了好多种办法都没有用。 1、WLAN已连接但是访问不了互联网 这个的问题很多&#xff0c;建议直接网络重置&#xff0c;即将网络驱动全部删除&#xff0c;然后重新安装。 首先…

Hadoop生态圈框架部署(六)- HBase完全分布式部署

文章目录 前言一、Hbase完全分布式部署&#xff08;手动部署&#xff09;1. 下载Hbase2. 上传安装包3. 解压HBase安装包4. 配置HBase配置文件4.1 修改hbase-env.sh配置文件4.2 修改hbase-site.xml配置文件4.3 修改regionservers配置文件4.4 删除hbase中slf4j-reload4j-1.7.33.j…

【微服务】Docker 容器化

一、初识Docker 1. 为什么需要 Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会遇到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性的问题开发、测试、生产环境有差异 Docker 如何解决依赖的兼容问题 将应用的Libs&#xff08;…

「Py」Python基础篇 之 Python都可以做哪些自动化?

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「Py」Python程序设计&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定…

无插件H5播放器EasyPlayer.js网页web无插件播放器vue和react详细介绍

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

什么是量化交易

课程大纲 内容初级初识量化&#xff0c;理解量化 初识量化 传统量化和AI量化的区别 量化思想挖掘 量化思想的挖掘及积累技巧 量化代码基础&#xff1a; python、pandas、SQL基础语法 金融数据分析 常用金融分析方式 常用因子分析方式 数据分析实战练习 回测及交易引擎 交易引擎…

Ajax 获取进度和中断请求

HTML加入一些内容方便看效果和做交互&#xff1a; <div><p>当前传输进度&#xff1a;<span id"progress">0%</span></p><button id"send">发送</button><button id"btn">中断</button> …

MCU移植LVGL

一.准备 1.1. 任意一个屏幕可以正常显示的GD32工程,stm32等其它mcu都一样&#xff1a; 1.2. LVGL源码 下载最新版源文件:https://github.com/lvgl/lvgl/tree/release/v8.3 我们会得到一个压缩文件&#xff0c;然后解压出来备用&#xff0c;现在准备好了一个GD32 Keil工程和一…

❤React-JSX语法认识和使用

1、JSX基本使用​ JSX是React的核心 JSX是ES的扩展 jsx语法 -> 普通的JavaScript代码 -> babel React可以使用JSX的前提和原因&#xff1a; React生态系统支持&#xff1a; 脚手架通常用于构建React应用程序&#xff0c;而JSX是React框架的核心语法之一。因此&#xf…