《Visual Tree Convolutional Neural Network in Image Classification》阅读笔记

news2024/11/17 17:50:46

论文标题

《Visual Tree Convolutional Neural Network in Image Classification》

图像分类中的视觉树卷积神经网络

作者

Yuntao Liu、Yong Dou、Ruochun Jin 和 Peng Qiao

来自国防科技大学并行和分布式处理国家实验室

初读

摘要

  • 问题

    在图像分类领域,随着深度学习的快速发展,卷积神经网络(CNN)模型已经取得了高性能。然而,在图像数据集中,有些类别比其他类别更难区分。提高这些混淆类别的分类准确率对整体性能是有益的。

  • 方法

    在本文中,我们基于混淆的语义层次信息构建了一个混淆视觉树(Confusion Visual Tree,CVT),以识别这些混淆的类别。利用 CVT 提供的信息,我们可以引导 CNN 训练过程更多地关注这些混淆类别。因此,我们提出了基于我们 CVT 嵌入的原始深度 CNN 的可视化树卷积神经网络(VT-CNN)。

  • 性能

    我们在基准数据集 CIFAR-10 和 CIFAR-100 上评估了我们的 VT-CNN 模型。在我们的实验中,我们构建了 3 种不同的 VT-CNN 模型,它们相对于它们基于的 CNN 模型分别获得了 1.36 % 1.36\% 1.36% 0.89 % 0.89\% 0.89% 0.64 % 0.64\% 0.64% 的准确率提升。

结论

  • 在本文中,我们提出了一种可视化树卷积神经网络(Visual Tree Convolution Neural Network,VT-CNN),它将原始的 CNN 模型与视觉树连接起来。与原始 CNN 模型相比,VT-CNN 模型能够利用粗粒度类别分类中的先验信息来提升最终细粒度类别分类的性能
  • 我们还介绍了一种构建混淆视觉树(Confusion Visual Tree,CVT)的方法,为 VT-CNN 模型提供了一个更合理的树状结构。实验结果证实了我们的 VT-CNN 模型结合 CVT 相对于原始 CNN 模型的优势。
  • 未来的工作应该探讨对最终细粒度分类层的改进,例如将全类别 FC-softmax 层拆分为多个细粒度类别集的 FC-softmax 层。

再读

Section Ⅰ Introduction

  • 问题:易混淆的细粒度类别难以识别

    CNN 模型在图像分类任务中被广泛应用,其性能优于任何其他传统方法。尽管最先进的模型的分类准确率已经超过了人类,但 CNN 模型在区分视觉相似性高的类别方面仍面临挑战。我们知道,来自不同类别的某些实例很难区分。这些类别实例之间的误分类贡献了 CNN 模型的很大一部分错误率。以 ImageNet 数据集中的类别为例。我们考虑了一个粗粒度的类别集合“狗”,以及包含 120 种不同狗种的细粒度类别,如“巴仙吉犬”、“彭布罗克犬”和“柯基犬”。与粗粒度类别集合相比,每个集合中的细粒度类别存在强烈的视觉混淆。我们可以轻易区分两个粗粒度类别集合,比如“狗”和“战车”,但在“狗”集合中区分 120 种细粒度类别却很困难。

  • 这个问题有两个原因

    • 一个是 CNN 模型的结构可能是性能的局限,因结构可能不够深而无法达到更高的性能。
    • 另一个原因是指导 CNN 模型训练的策略并不适合图像分类任务中的细粒度类别分类
      • 在本文中,我们试图解决由后者原因造成的问题。
      • 原始的 CNN 模型会一次性输出数据集中所有类别的预测,这意味着模型实际上平等对待这些类别。因此,上述提到的混淆的细粒度类别使得原始 CNN 模型的区分能力遇到了瓶颈。
  • 现有解决方案:树结构

    • 一些基于树结构的传统方法被提出来解决由混淆类别引起的问题。这些传统方法将粗粒度类别放置在树结构的低层,而将细粒度类别放置在高层。
    • 一方面,这样做的好处是粗粒度类别容易区分,因此树分类器可以快速有效地完成这一分类任务。
    • 另一方面,树分类器主要关注不同的细粒度类别集合,这是分类任务中最困难的部分。
  • 改进或融合:

    • 受到树分类器方法的启发,我们也可以将 CNN 模型与树结构结合起来,以解决图像类别数量不平衡的问题。
    • 我们的想法是通过将基于数据集中类别构建的视觉树嵌入到原始 CNN 模型中来构建新的 CNN 模型。我们利用这个视觉树来指导 CNN 模型的训练。
    • 我们希望在进行细粒度类别分类时,CNN 模型主要关注一个样本的类别及其混淆类别。需要注意的是,我们可以从视觉树的高层细粒度类别中获取混淆的类别。
    • 与树分类器不同,我们的 CNN 模型应该输出数据集中所有类别的预测,而不是部分类别,这意味着我们的模型在关注一个样本的混淆类别的同时抑制其他类别。因此,我们可以利用视觉树中低层的粗粒度类别分类的输出来实现这一点。
  • 本文方法简介

    • 考虑到上述问题,

      • 我们首先应该构建一个视觉树结构,以便为 CNN 模型提供粗粒度类别和细粒度类别的分离。
      • 然后,我们应该调整原始 CNN 模型的结构,以适应图像分类任务中的细粒度混淆类别分类。
    • 在本文中,我们提出了一种新颖的方案,将视觉树结构与 CNN 模型结合起来,我们称之为可视化树卷积神经网络(Visual Tree Convolutional Neural Network,VT-CNN)

    • VT-CNN 模型的架构如图1(a)所示。

      在这里插入图片描述

      • 图片注解:四级混淆视觉树,其类别取自 CIFAR-100 数据集。
    • 构建 VT-CNN 模型包含两个主要步骤:

      • 第一步是为图像类别构建视觉树。
        • 受到CNN模型中混淆图概念的启发[3],我们提出使用社区层次检测算法来构建视觉树,称为混淆视觉树(Confusion Visual Tree,CVT)
        • 通过这种方法,我们可以自动构建视觉树结构,并充分利用 CNN 模型输出的信息。
      • 然后我们将这个树结构嵌入到 CNN 模型中。
        • 借鉴自[6]的思想,我们将 VT-CNN 模型的结构分为两部分:基础层分支层
          • 分支层包含多个分支,每个分支包含一系列层,如卷积层和全连接(FC)层。
          • 所有这些分支共享基础层。
          • 分支层的数量等于树模型中层级的数量减去根层,这意味着每个分支对应于一个层级细粒度类别的分类。
        • 通过使用[7]中提出的逐步训练方法,粗粒度类别分支会比细粒度类别分支更早进行训练,这可以在一定程度上防止梯度消失问题的影响,并提升 VT-CNN 模型的性能。

Section II RELATED WORK

  • 树模型构建的相关工作

    大量的研究工作集中在树模型的构建上:

    • 一些先前的研究利用语义本体(分类体系)来层次化地组织大量的图像类别。
    • 一些研究学习标签树和概率标签树,以便直接从大量数据集中学习视觉层次结构。
    • 同时,其他研究者提出了视觉树学习算法来层次化地组织大量图像类别,并使用层次化的多任务稀疏度量学习算法来学习增强的视觉树结构。
      • 这些方法使用了各种算法,如支持向量机(SVM)、聚类、混淆矩阵等。
      • 但这些算法的计算量很大,它们的性能在很大程度上依赖于它们所使用的算法底层的相似性特征描述能力。
  • 本文工作:

    • 与这些方法不同,我们的工作直接从 CNN 模型的输出中学习树结构
    • 在[3]中,通过使用深度模型中最后一层全连接(FC)层的输出来构建混淆图。首先,它将数据集中每张图像由最后一层 FC 层计算出的前 N 个得分添加到一个完整的图中。然后,在这个图上应用社区检测算法来生成该数据集的混淆图。
    • 受到这项工作的启发,我们将这个算法扩展为层次化的社区检测算法,以便我们可以直接从 CNN 模型的输出构建混淆视觉树(CVT)。
  • CNN + 树状结构的相关工作:

    CNN 模型已成功应用于许多计算机视觉任务,如图像分类。最近,有一些工作专注于将 CNN 模型的结构与树模型的结构联系起来。

    • 最早的尝试之一在[15]中报告,但其主要目标是在类别之间传递知识,以改善训练样本不足的类别的结果。
    • 在[16]中,提出的 HD-CNN 模型将类别层次结构嵌入到 CNN 模型中,使得模型使用粗粒度类别分类器分离简单类别,同时使用细粒度类别分类器区分困难类别。
      • **缺点:**然而,HD-CNN 模型需要对共享层进行预训练,并在细粒度类别组件上多次微调预训练模型,这非常复杂,
    • 在[6]中提出的分支卷积神经网络(B-CNN)模型,沿着对应于目标类别层次结构的连接卷积层输出从粗粒度到细粒度的多个预测,这可以被视为对输出的一种先验知识。
      • **缺点:**而且在 B-CNN 模型中,除了损失权重之外,粗粒度类别分支和细粒度类别分支之间没有紧密的联系。
  • 本文工作:

    • 与 HD-CNN 模型相比,我们的 VT-CNN 模型拥有更简单的网络结构,因此我们可以在不进行预训练模型微调的情况下训练 VT-CNN。
    • 为了紧密连接所有分支,我们在细粒度类别分支中使用了一种新的损失函数

Section III METHOD

A. Establish a Confusion Visual Tree

建立混淆视觉树

  • 构建 CVT 的总体步骤:

    本阶段的目标是为 VT-CNN 模型构建视觉树。VT-CNN 模型中的树结构 CVT 是通过以下三个步骤建立的:

    • 首先,使用混淆图生成算法计算混淆图及其权重
    • 其次,应用社区层次检测算法在混淆图中生成社区
    • 最后,利用第二步的结果来构建 CVT
  • 构建 CVT 的细节:

    • 我们对数据集 D D D 应用混淆图生成算法,为 CNN 模型 M M M 得到混淆图 G G G
    • 然后我们对 G G G 应用社区层次检测算法,得到社区集合 C C C
      • 请注意, C C C 有两个维度。一个维度指的是算法所有迭代输出的索引,另一个维度指的是每个输出中的社区。
      • 至于树 T = ( V , E , L ) T=(V,E,L) T=(V,E,L)
        • V V V 表示树中的节点,叶子代表类别,其他节点代表社区的符号,
        • E E E 表示连接 C C C 中较高层节点到较低层节点的边,
        • 其中前者节点( V V V)属于后者节点( E E E)所代表的社区集合,
        • L L L 是每个节点的标签集合,这些标签可以通过节点对应的社区集合生成。
  • 我们特别针对 CIFAR-10 数据集详细阐述了 CVT 的构建过程,如图2所示。左侧展示了混淆图及其内部的社区,右侧则是 CVT。

    在这里插入图片描述

    • 左侧分为四个步骤:初始步骤和迭代步骤1至3。
    • 我们使用混淆图生成函数在初始步骤生成一个混淆图。
      • 图中的每个顶点代表数据集中的一个类别,每条边的权重量化了两个相连类别之间的混淆程度。
    • 然后我们对混淆图应用社区层次检测函数,在该函数的每次迭代中我们都会得到一个社区图。
      • 例如,在迭代步骤1中,我们得到了五个细粒度社区,我们在“level3”的树中设置了五个节点,这些节点一一对应于这些社区。每个社区的成员代表一个特定的类别。然后我们将叶子节点链接到 level3 的节点。例如,我们将节点 “cat” 和节点 “dog” 链接到 level3 的 “Small-mammals” 节点。我们重复这个过程,直到 level2 的节点链接到 level1 的根节点,然后完成构建过程。

B. VT-CNN Architecture

VT-CNN 架构

在本节中,我们将 CVT 嵌入到原始 CNN 模型中构建 VT-CNN 模型。

  • 架构图

    • 以 CIFAR-100 上的分类任务为例,VT-CNN 模型的架构如图1(a) 所示,CIFAR-100 的 4 级 CVT 如图1(b) 所示。

      在这里插入图片描述

    • VT-CNN 模型的目标是区分树结构叶子上呈现的细粒度类别,这些是分类任务的最终目标。

    • 对于树结构,我们使用 level-n 来指代视觉树的第 n 层。我们定义 level-1 为根节点,而 level-N 指的是有 N 层的树的叶子。

  • 基于CNN 构建 VT-CNN

    • VT-CNN 模型基于现有的 CNN 模型构建。它有两个重要的组成部分。一个是主干层,我们称之为基础架构。另一个是分支层,我们称之为分支架构。
      • 基础架构实际上是从原始 CNN 模型如 AlexNet 模型和 VGG-Verydeep16(VGG16)模型借用的,其中的所有层都被所有分支共享。
      • 分支架构与视觉树的不同层级相关。每个分支的架构包含两个卷积网络(ConvNets)和两个全连接(FC)层,每个分支与其在树架构中相关层级的区别任务相关联。分支架构中的层数等于视觉树中层级的数量减去根层。
    • 遵循[6],CNN 模型中的低层通常捕捉图像的低级特征,如基本形状,而高层则更有可能提取高级特征,如狗的脸部。
    • 类似地,树架构中的粗粒度类别与上述低级特征相关联,而叶子上的细粒度类别与高级特征相关联。因此,从 CNN 模型的低层延伸出的分支层与树架构的低层相关联,而高层与树架构的高层相关联
  • VT-CNN 的特点

    • VT-CNN 模型的树状结构为高层的最后分支中的细粒度类别分类提供了低层分支中包含的先验信息。这种好处来自于这样一个概念:树结构叶子上的关键信息,即细粒度分类的关键,实际上包含在它们的祖先节点中,这些祖先节点负责粗粒度分类。
    • 因此,我们的 VT-CNN 模型专注于同一社区中的细粒度类别,而不是像原始 CNN 模型那样平等对待所有类别。这是与原始 CNN 模型的不同之处。

C. VT-CNN Training

我们的 VT-CNN 模型的理念是:粗粒度类别分类的先验信息应用于细粒度类别的分类。因此,我们将 VT-CNN 的训练分为三个步骤:建立CVT、训练粗粒度分支和训练细粒度分支

  1. 为特定 CNN 模型建立混淆视觉树(CVT):我们首先为用作 VT-CNN 模型基础的 CNN 模型建立 CVT。

    • 首先,我们在特定数据集上训练原始 CNN 模型,得到其对数据集中每类图像的输出分数。
    • 然后,我们使用第三节A部分中的算法,基于这些输出来建立 CVT。
  2. 训练数据:为了训练VT-CNN模型,原始数据集需要进行一些修改。

  • 每张图片应该有几个标签,这些标签应与基于第三节C1中构建的CVT的粗粒度和细粒度类别划分保持一致。标签的数量等于VT-CNN模型中的分支数量。以 CIFAR-10 数据集中标签为“狗”的图片为例,根据上述规则,该图片应有三个标签:“动物”、“小型哺乳动物”和“狗”。
  1. 训练粗粒度分支:除了与细粒度类别分类相关的最后一个分支之外,所有分支都在这一步进行训练。我们直接给出损失函数。VT-CNN 模型训练中的损失函数包含了所有粗粒度分支的损失函数。损失函数定义为:
    L C = − 1 n ∑ i = 1 n ∑ k = 1 K − 1 W k log ⁡ ( e c y i k ∑ j e c j k ) L_C=-\frac{1}{n}\sum^n_{i=1}\sum^{K-1}_{k=1}W_k\log\left(\frac{e^{c^k_{y_i}}}{\sum_je^{c^k_j}}\right) LC=n1i=1nk=1K1Wklog(jecjkecyik)
  • 参数字典:
    • i i i 表示小批量中的第 i i i 个样本,
    • K K K 是 VT-CNN 模型中所有分支的数量,
    • W k W_k Wk 是第 k k k 个分支对损失函数的贡献权重,
    • c j c_j cj 表示类别得分向量 c c c 的第 j j j 个元素。

请注意,在这一部分我们不需要考虑最后一个分支,所以分支的数量是从 k = 1 k=1 k=1 k = K − 1 k=K-1 k=K1。这个损失函数 L C L_C LC 计算了这些分支上的 softmax 交叉熵,并将它们相加。

  1. 训练细粒度分支:在粗粒度分支得到适当训练后,我们开始训练细粒度分支,这也是 VT-CNN 模型的最后一个分支。在概率平均层,我们改变了最终预测,将其变为一个加权平均预测,该预测是从 ( K − 1 ) (K-1) (K1) 层粗粒度分支计算得出的,如下所示:
    f i = c t ( i ) K − 1 f i K ∑ j c t ( j ) K − 1 f j K f_i=\frac{c^{K-1}_{t(i)}f_i^K}{\sum_jc^{K-1}_{t(j)}f_j^K} fi=jct(j)K1fjKct(i)K1fiK

    • 参数字典:
      • t t t 是细粒度类别到 ( K − 1 ) (K-1) (K1) 层粗粒度类别集合的映射,
      • t ( i ) t(i) t(i) 表示细粒度类别i相关的粗粒度类别。

    细粒度分支的损失函数定义为:
    L F = − 1 n ∑ i = 1 n W K log ⁡ ( e f y i ∑ j e f j ) L_F=-\frac{1}{n}\sum^n_{i=1}W_K\log\left(\frac{e^{f_{y_i}}}{\sum_je^{f_j}}\right) LF=n1i=1nWKlog(jefjefyi)
    在训练过程中,我们改变权重 W k W_k Wk 来控制将要训练的分支。在我们的训练策略中,我们首先希望训练粗粒度分支,所以我们首先设置 ∑ K − 1 k = 1 W k = 1 ∑^{k=1}_{K-1}W_k=1 K1k=1Wk=1 W K = 0 W_K = 0 WK=0。然后我们训练细粒度分支,并设置 ∑ K − 1 k = 1 W k = 0 ∑^{k=1}_{K-1}W_k=0 K1k=1Wk=0 W K = 1 W_K = 1 WK=1。最后,我们完成训练过程。

Section IV EXPERIMENT

A. Datasets and Experiment Settings

数据集和实验设置

  • 为了全面评估我们提出的方法,我们在实验中使用了以下两个图像数据集: CIFAR-10 和 CIFAR-100
    • CIFAR-10 是一个用于通用物体识别的数据集,包含10个类别。每张图片都是 32 × 32 32\times32 32×32 像素的自然 RGB 图像,数据集总共有 60,000 张图片,其中 50,000 张用于训练,10,000 张用于测试。
    • CIFAR-100 数据集包含 60,000 张图片和 100 个类别。每张图片也是 32×32 像素的自然 RGB 图像,每个类别有 600 张图片,其中 500 张用于训练,100 张用于评估。我们在这两个数据集上的实验遵循它们的这种划分。
  • 我们使用 Top-1 平均准确率(%)作为评估所有这些方法性能的标准。所有实验都是在配备有 Intel Core i7 处理器、32GB 内存和 NVIDIA GeForce GTX 1080 Ti 显卡的个人电脑上进行的。

B. CIFAR-10

在 CIFAR-10 数据集上进行的实验将 VT-CNN 模型与基本模型和 B-CNN 模型进行了比较。

  • 基线模型:我们构建了两个基线模型。

    • Base A 模型实际上是 AlexNet 模型,它们之间的微小区别在于 Base A 模型中第一和第二卷积层的滤波器大小被调整为 5 × 5 5\times5 5×5
    • Base B 模型是 VGG16 模型,但没有最后的池化层,因为 CIFAR 数据集中的图像非常小。
  • 具体配置:然后我们基于这些基线模型构建了 VT-CNN 模型。在 CIFAR-10 数据集中,我们的 CVT 模型有 4 个层次,因此在 VT-CNN 模型中有 3 个分支。具体的配置如表I所示:

    在这里插入图片描述

  • 参数设置:我们在 CIFAR-10 数据集上评估了我们的 VT-CNN 模型、它们的基线模型以及 B-CNN 模型。请注意,B-CNN 模型的树结构与我们的 VT-CNN 模型相同。

    • 对于模型A,两种模型的学习率都初始化为 0.003,在 40 个周期后降至 0.0005,在 50 个周期后降至 0.0001。
    • 对于模型 B,我们在 ImageNet 数据集上对预训练的 VGG16 模型进行微调,学习率的配置与模型 A 相同。在粗粒度分支的训练步骤中,我们设置了相同的损失权重。
  • 结果

    结果如表 II 所示

    在这里插入图片描述

    • 基线模型 A 的准确率为 82.94%,B-CNN模型达到了84.70%。我们的 VT-CNN 模型以 85.07% 的准确率超过了 B-CNN 模型。
    • 基线模型B的准确率为 87.15%,而 B-CNN 模型达到了 88.23%。我们的 VT-CNN 模型达到了 89.51%。
    • 这种提升是显而易见的,表明我们的 VT-CNN 模型在 CIFAR-10 数据集上的性能优于原始 CNN 模型和 B-CNN模型。

C. CIFAR-100

在本节中,我们在 CIFAR-100 数据集上评估我们的 VT-CNN 模型。实验分为两部分。一部分是将 VT-CNN 模型与基于这3个原始 CNN 模型的基线模型以及基于这些基线模型的 B-CNN 模型进行比较。另一部分是对比构建在不同视觉树结构上的 VT-CNN 模型。

  • 基线模型

    • 首先,我们介绍了3个原始的 CNN 模型,分别是 AlexNet、VGG16 和 ResNet-56。

      • 在 CIFAR-100 数据集上,AlexNet 模型和 VGG16 模型的配置与第四节B部分中的 Base A 模型和 Base B 模型相同。
      • ResNet-56 是一个深度为 56 的残差学习网络,使用 2个卷积层的残差块构建。
    • 我们基于这些基线模型构建了 VT-CNN 模型。

      • 它们的分支架构配置与第四节B部分中的配置相似,因为 VT-CNN 模型的主要思想是分支应该连接到基础层的不同位置。
      • 有一点不同的是,我们在 CIFAR-100 数据集上的 CVT有5层,因此在VT-CNN模型中有4个分支。
  • 参数设置:这 3 个基线模型及其衍生的 B-CNN 和 VT-CNN 模型在 80 个周期内进行训练,并在不同周期使用不同的学习率。学习率初始化为0.001,在第55个周期后降至0.0002,在第70个周期后降至0.00005。

  • 结果

    • 完整的实验结果在表III中给出

      在这里插入图片描述

    • 在每种情况下,我们的 VT-CNN 模型都比相应的基线模型和衍生的 B-CNN 模型达到了最高的准确率。

      • 在 AlexNet 的情况下,与基线模型相比相对提升为 1.36%,
      • 与 B-CNN 模型相比为 0.46%。
      • 我们使用 VGG16 模型作为基线模型来训练 VT-CNN 模型。VGG16 模型给出 71.15%的准确率,衍生的 B-CNN 模型给出71.23%,而我们达到了72.04%。
      • 最后,我们考虑了最先进的技术 ResNet 作为基线模型,并使用了 ResNet-56 模型。我们基于 ResNet-56 模型构建的 VT-CNN 模型取得了 74.13% 的准确率,这是本次实验中的最佳结果,而 ResNet-56 模型达到了 73.49%,B-CNN 模型达到了 73.86%。我们发现,与原始 CNN 模型及其衍生的 B-CNN 模型相比,我们的 VT-CNN 模型在 CIFAR-100 数据集上的分类任务中取得了最佳性能。
  • 不同视觉树结构对比

    • 然后我们进行了基于不同视觉树结构构建的 VT-CNN 模型的比较实验。选择以下竞争树结构进行比较:语义本体、标签树、视觉树以及最先进的技术增强视觉树。

    • 基于这些结构的所有 VT-CNN 模型的分类性能在表IV中报告

      在这里插入图片描述

    • 结果:

      • 观察表IV,我们发现语义本体的性能最差,因为它的树结构是基于语义空间构建的,而图像分类过程是基于特征空间。
      • 对于另外四种基于特征空间的方法,标签树的性能较差,因为它使用 OvR 分类器构建其树结构,这受到样本不平衡和分类器性能的限制。
      • 至于视觉树,它直接从数据集中提取平均特征。增强视觉树采用了谱聚类方法,更好地反映了类别的多样性,因此其性能优于视觉树。我们的CVT基于神经网络的混淆构建树结构,尽可能使兄弟节点与父节点尽可能接近。因此,CVT 的结构更为合适,我们在视觉树和增强视觉树上取得了显著的提升,分别提高了4.65%和1.99%。

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

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

相关文章

1.25号c++

1.引用 引用就是给变量起别名 格式: 数据类型 &引用名 同类型的变量名 (& 引用符号) eg: int a 10; int &b a; //b引用a,或者给a变量取个别名叫b int *p; //指针可以先定义 后指向 p &a; //int &a…

谷歌推出 AutoRT 机器人代理大规模编排的具体基础模型,远程操作和收集 77,000 个机器人事件

演示 AutoRT 向多个建筑物中的20多个机器人提出指令,并通过远程操作和自主机器人策略收集77,000个真实的机器人事件。实验表明,AutoRT 收集的此类“野外”数据明显更加多样化,并且 AutoRT 使用 LLMs 允许遵循能够符合人类偏好的数据收集机器人…

Jenkins全局工具配置

目录 Jenkins全局工具全局工具配置Settings 文件配置Maven配置JDK配置Git配置 Jenkins全局工具 我们在安装了Jenkins之后,就可以开始使用Jenkins来进行一些自动化构建发布工作,但是开始之前我们还需要进行全局工具的配置,Jenkins全局工具配置…

QT入门篇---无门槛学习

1.1 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的…

【深度学习】【注意力机制】【自然语言处理】【图像识别】深度学习中的注意力机制详解、self-attention

1、深度学习的输入 无论是我们的语言处理、还是图像处理等,我们的输入都可以看作是一个向量。通过Model最终输出结果。这里,我们的vector大小是不会改变的。 然而,我们有可能会遇到这样的情况: 输入的sequence的长度是不定的怎…

Idea上操作Git回退本地版本,怎么样保留已修改的文件,回退本地版本的四种方式代表什么?

Git的基本概念:Git是一个版本控制系统,用于管理代码的变更历史记录。核心概念包括仓库、分支、提交和合并。 1、可以帮助开发者合并开发的代码 2、如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突 3、代码文件版本管理 问题描述 当我们使用git提交代码…

Hive3.1.3基础学习

文章目录 一、Hive入门与安装1、Hive入门1.1 简介1.2 Hive架构原理 2、Hive安装2.1 安装地址2.2 Hive最小化安装(测试用)2.3 MySQL安装2.4 配置Hive元数据存储到MySQL2.5 Hive服务部署2.6 Hive服务启动脚本(了解) 3、Hive使用技巧3.1 Hive常用交互命令3.2 Hive参数配置方式3.3 …

蓝桥杯(C++ 左移右移 买二增一 松散子序列 填充 有奖问答 更小的数 )

目录 左移右移 思路: 代码: 买二增一 思路: 代码: 松散子序列 思路: 代码: 填充 思路: 代码 : 有奖问答 思路: 代码: 更小的数 思路&#…

【快影】怎么制作卡拉OK字幕

您好,您添加了字幕之后可以添加动画,选择卡拉OK,其中 卡拉OK1是支持修改颜色的,卡拉OK2只支持修改文字的底色。

OpenCV使用基础、技巧

OpenCV概述与安装 视觉概述 人类的视觉能够很轻易地从图像中识别出内容。但是,计算机视觉不会像人类视觉那样能够对图像进行感知和识别,更不会自动控制焦距和光圈,而是把图像解析为按照栅格状排列的数字。 这些按照栅格状排列的数字包含大量…

Java中Integer(127)==Integer(127)为True,Integer(128)==Integer(128)却为False,这是为什么?

文章目录 1.前言2. 源码解析3.总结 1.前言 相信大家职业生涯中或多或少的碰到过Java比较变态的笔试题,下面这道题目大家应该不陌生: Integer i 127; Integer j 127;Integer m 128; Integer n 128;System.out.println(i j); // 输出为 true System.o…

华为数通方向HCIP-DataCom H12-831题库(判断题:121-140)

第121题 BGP/MPLS IP VPN内层采用MP-BGP分配的标签区分不同的VPN实例,外层可采用多种隧道类型,例如GRE隧道。 正确 错误 答案: 错误 解析: VPN业务的转发需要隧道来承载,隧道类型包括GRE隧道、LSP隧道、TE隧道(即CR-LSP)。 如果网络边缘的PE设备具备MPLS功能,但骨干网核…

Deepin基本环境查看(四)【硬盘/分区、文件系统、硬连接/软连接】

Linux操作系统(Deepin、Ubuntu)操作系统中,硬盘分区的管理与Windows操作系统不同; 在Linux系统中维护着一个统一的文件目录体系,而硬盘和分区是以资源的形式由操作系统挂接和调度;此外Linux系统中连接(硬连…

UE创建数据表格

创建一个数据表格需要行结构 继承自FTableRowBase的一个子类 效果 如何使用它 在蓝图中给C该类型的指针变量选用 UDataTable类型的 FindRow()函数可查询并返回对应行的行结构 FTableRowBase GetAllRows()函数可以获得该数据表的所有行、

全面解析开源大语言模型:BLOOM

大型语言模型 (LLM) 的兴起一直是自然语言处理 (NLP) 领域的一个决定性趋势,导致它们在各种应用程序中的广泛采用。然而,这种进步往往是排他性的,大多数由资源丰富的组织开发的 LLM 仍然无法向公…

手动搭建koa+ts项目框架(apidoc文档篇)

文章目录 一、安装apidoc工具二、使用1、项目根目录新建apidoc.json2、定义接口路由上方注解对应信息3、配置静态文件访问目录4、生成api文档如有启发,可点赞收藏哟~ 一、安装apidoc工具 全局安装 npm i apidoc -g查看是否安装成功 apidoc -v二、使用 1、项目根…

面向社交网络语言隐写分析

论文:Linguistic Steganalysis Toward Social Network 发表在:IEEE Transactions on Information Forensics & Security是网络与信息安全领域的国际两大顶级期刊之一,中国计算机学会(CCF)推荐的A类期刊&#xff0c…

第一篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:从helloworld开始理解鸿蒙开发ArkTS编程思路

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例系列 短博文目录一、前言二、初步解读鸿蒙的helloworld三、进一步深入解读理解 系列短博文目录 鸿蒙开发技术点案例示例系列 短博文目录 一、前言 从掰碎了揉烂了详细注释解读helloworld开始,理解Ark…

matlab appdesigner系列-容器2-选项卡组

所谓容器,就是可以放置常有组件的空间,类似一种画布。默认背景画布就是一张画布,选项卡组,可以同时增加好几个画布空间,以满足不的组件放置需求。 1)将选项卡组拖拽到画布上 2)将选项卡组拉大背…

linux-centos服务器离线安装yapi(包含nodejs、mongodb、yapi、pm2离线安装)

yapi是使用vue框架开发的,借助nodejs 前端直接访问的mongodb数据库,离线安装yapi步骤如下 下载离线安装包 下载地址 https://download.csdn.net/download/qq445829096/88778418 离线安装包先复制到 dev/yapi目录(根据自己习惯自定义目录) node-v12.13.0-linux-x64.tar.xz …