万字长文解析深度学习中的术语

引言

新手在学习深度学习或者在看深度学习论文的过程中,有不少专业词汇,软件翻译不出来,就算是翻译出来也看不懂,因为不少术语是借用其他学科的概念,这里整理了一些在深度学习中常见的术语,并对一些概念进行解释。

这里先教大家一个查概念的方法,比如我想查Ablation study,这个中文翻译是消融实验,这概念谁能明白呢,咱们可以从根源去查消融实验的含义,打开google,直接搜what is xxx in deep learning,如下面的图所示 

 好,下面开始总结,博主这里按照概念英文首字母进行排序,有部分概念为了方便对比也会放在一起,总结不全或有错误之处,请大家指出并多多包涵,总结不易,也请大家多多点赞收藏。

A--G

Ablation study(消融实验)

消融(ablation)是指去除人工智能系统的一个组件。 消融研究通过删除某些组件来研究人工智能系统的性能,以了解该组件对整个系统的贡献。大白话就是说一个完整的框架去掉某个功能,看看系统还能运行成什么样。

Activation layer/Activation Function(激活层/激活函数)

激活层(Activation Layer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相乘的过程,是线性变化关系,需要激活层对其进行非线性的映射

激活层主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系。卷积网络中通常采用ReLU来充当激活函数(还包括tanh和sigmoid等)ReLU的函数形式如下所示,能够限制小于0的值为0,同时大于等于0的值保持不变。

 

Anchor box(锚框)/先验框(prior bounding box)/gound truth(真值)

(1)Anchor box

锚框是一个很难理解的概念,目标检测算法通常会对输入图像中的大量区域进行采样,确定这些区域是否包含感兴趣的目标,并调整区域的边缘,以便更准确地预测目标的真实边界框。不同的模型可能使用不同的区域采样方法。在这里,介绍一种这样的方法:它生成多个具有不同大小和长宽比的边界框,同时以每个像素为中心。这些边界框称为锚框。上文表明,锚框不过是图像中采样的区域。

(2)prior bounding box

那上面为什么把prior bounding box放到这里呢,在众多经典的目标检测模型中,均有先验框的说法,有的paper(如Faster RCNN)中称之为anchor(锚点),有的paper(如SSD)称之为prior bounding box(先验框),实际上是一个概念,特此说明。

这里提供一个详细的资料:动手学CV-Pytorch

(3)gound truth

那又为什么把gound truth放在这里一起解释呢,因为这几个概念往往一起出现,新手迷迷糊糊就别忽悠瘸了,如下图,我们在训练模型之前,需要先对图片进行标注(label),比如将下图的小狗框出来。 

gound truth翻译为真值还行,翻译为地面真相是真的太蠢了,个人认为(轻喷),忘了是在哪儿看到的,gound truth来源于气象学,本意是指测量到的地面的真实数据,真么看翻译成地面真相也不是不能接受,个人还是愿意翻译为人工标注,这真的是很直观。

AP(Average Precision)

对象检测和定位算法的性能通过称为平均精度 (AP)(和平均精度,mean average precision,mAP)的指标进行评估。,AP 不是不同类别的平均精度,AP是借助其他几个指标来计算的,例如IoU、混淆矩阵(TP、FP、FN)、精度和召回率等,如下图所示。

Attention Mechanism(注意力机制)

注意力机制通过选择性地关注重要的输入元素来增强深度学习模型,提高预测精度和计算效率。 他们优先考虑并强调相关信息,作为提高整体模型性能的焦点。在心理学中,注意力是选择性地集中于一件或几件事情而忽略其他事情的认知过程。神经网络被认为是一种以简化方式模仿人类大脑行为。 注意力机制也是一种尝试,在深度神经网络中实现选择性地关注一些相关事物,而忽略其他事物的相同动作。

Baseline(基线)/Benchmark(基准)

这俩放一起也是为了比较,做个不恰当的比喻,就像修仙,你初期修仙的菜鸟水平就是基线,随着修行提升,相对于基线水平的菜鸟修行就有提升,基准就像是半步飞仙,你在修行的过程中向着这个目标前进并想办法超越半步飞仙这个基准成为飞仙。

(1)Baseline(基线)

基线模型本质上是一个简单的模型,在机器学习项目中充当参考。 其主要功能是将训练模型的结果置于上下文中。基线模型通常缺乏复杂性,并且可能没有什么预测能力。 无论如何,出于多种原因,将它们纳入其中是必要的。

(2)Benchmark(基准)

Benchmark是一种用于比较其他模型性能的模型。 有不同类型的基准。 有时,它是所谓的最先进模型,即给定数据集上针对给定问题的最佳模型。 基准测试的目标是看看我们是否可以创建更好的模型并超越已发布的结果。

Backbone(骨干)

就这翻译谁能看懂,一般来说,术语Backbone是指将输入数据处理成某种特征表示的特征提取网络。 这些特征提取网络通常在更简单的任务上作为独立网络表现良好,因此,我们可以将它们用作更复杂模型中的特征提取部分。

我们可以将许多流行的 CNN 架构用作神经网络的骨干。 其中一些包括:

  • VGGs —— 包括具有 16 层和 19 层的 VGG-16 和 VGG-19 卷积网络。 事实证明,它们在许多任务中都很有效,尤其是在图像分类和目标检测方面。
  • ResNets ——或残差神经网络,由卷积层和池化层块之间的跳跃连接或循环单元组成。 ResNet-50 和 ResNet 101 的一些流行版本常用于对象检测和语义分割任务。
  • Inception v1 —— GoogleNet 是最常用的卷积神经网络之一,作为许多计算机科学应用的支柱,包括视频摘要和动作识别。

以一篇论文是专门介绍backbone的:Backbones-Review: Feature Extraction Networks for Deep Learning and Deep Reinforcement Learning Approaches

论文链接:https://arxiv.org/abs/2206.08016

Batch(批量)/Epoch(批次)

在区分这俩概念之前要先了解一下随机梯度下降的概念

梯度下降更多参考:Gradient Descent For Machine Learning - MachineLearningMastery.com

随机梯度下降,简称 SGD,是一种用于训练机器学习算法的优化算法,尤其是深度学习中使用的人工神经网络。该算法的工作是找到一组内部模型参数,这些参数对于某些性能指标(例如对数损失或均方误差)表现良好。优化是一种搜索过程,您可以将这种搜索视为学习。该优化算法称为“梯度下降”,其中“梯度”是指误差梯度或误差斜率的计算,“下降”是指沿着该斜率向下移动到某个最小误差水平。该算法是迭代的。这意味着搜索过程发生在多个离散步骤中,每个步骤都希望稍微改进模型参数。每个步骤都涉及使用具有当前内部参数集的模型对某些样本进行预测,将预测与真实的预期结果进行比较,计算误差,并使用误差来更新内部模型参数。对于不同的算法,该更新过程是不同的,但在人工神经网络的情况下,使用反向传播更新算法。在我们深入研究批次和批量之前,让我们先看一下样本的含义。

(1)样本(Sample)

样本是单行数据。它包含输入到算法中的输入和用于与预测进行比较并计算误差的输出。训练数据集由许多行数据组成,例如许多样本。样本也可以称为实例、观察、输入向量或特征向量。

现在我们知道什么是样本,让我们定义一个Batch(批量)。

(2)Batch(批量)

批量大小(batch size)是一个超参数,定义在更新内部模型参数之前要处理的样本数量。将批次视为迭代一个或多个样本并进行预测的 for 循环。在批次结束时,将预测与预期输出变量进行比较并计算误差。根据该误差,使用更新算法来改进模型,例如沿着误差梯度向下移动。训练数据集可以分为一批或多批。当所有训练样本都用于创建一批时,该学习算法称为批量梯度下降。当批次大小为一个样本时,学习算法称为随机梯度下降。当批量大小大于一个样本且小于训练数据集的大小时,该学习算法称为小批量梯度下降。

  • 批量梯度下降。批量大小 = 训练集大小
  • 随机梯度下降。批量大小 = 1
  • 小批量梯度下降。1 < 批量大小 < 训练集大小

在小批量梯度下降的情况下,流行的批量大小包括 32、64 和 128 个样本。您可能会在文献和教程的模型中看到这些值。

(3)Epoch(批次)

epoch 的数量是一个超参数,它定义了学习算法在整个训练数据集中工作的次数。一个epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。一个epoch由一个或多个batch组成。例如,如上所述,一个 epoch 具有一个批次,称为批量梯度下降学习算法。可以想象一个针对 epoch 数的 for 循环,其中每个循环都在训练数据集上进行。在这个 for 循环中是另一个嵌套的 for 循环,它迭代每批样本,其中一个批次具有指定的“批量大小”数量的样本。epoch数量传统上很大,通常是数百或数千,允许学习算法运行直到模型的误差被充分最小化。您可能会在文献和教程中看到将 epoch 数量设置为 10、100、500、1000 或更大的示例。通常创建线图,将 x 轴上的历元显示为时间,并在 y 轴上显示模型的误差或技能。这些图有时称为学习曲线。这些图可以帮助诊断模型是否学习过度、学习不足或是否适合训练数据集。

(4)Batch(批量)/Epoch(批次)的区别

  • batch size是模型更新之前处理的样本数量。
  • epochs是完整通过训练数据集的次数。
  • Batch的大小必须大于或等于 1 且小于或等于训练数据集中的样本数。
  • epochs可以设置为 1 到无穷大之间的整数值。 可以根据需要运行算法,甚至可以使用除固定周期数之外的其他标准来停止算法,例如模型误差随时间的变化(或缺乏变化)。
  • 它们都是整数值,并且都是学习算法的超参数,例如 学习过程的参数,而不是学习过程找到的内部模型参数。
  • 必须指定学习算法的批量大小和批次数。
  • 对于如何配置这些参数并没有什么神奇的规则。 必须尝试不同的值,看看什么最适合自己问题。

Cascade(级联)

级联是基于多个分类器串联的集成学习的一种特殊情况,使用从给定分类器的输出中收集的所有信息作为级联中下一个分类器的附加信息。 与投票或堆叠集成(多专家系统)不同,级联是多级系统。级联分类器使用特定对象的数百个“正”样本视图和相同大小的任意“负”图像进行训练。 分类器经过训练后,可以将其应用于图像的某个区域并检测有问题的对象。 要在整个帧中搜索对象,可以在图像上移动搜索窗口并使用分类器检查每个位置。 此过程最常用于对象检测和跟踪的图像处理,主要是面部检测和识别。

Clustering(聚类)/K-means Clustering(k-均值聚类)

Clustering:聚类是在机器学习算法中将相似对象组织成组的行为。 将相关对象分配到集群中对于 AI 模型是有益的。 聚类在数据科学中有很多用途,例如图像处理、数据知识发现、无监督学习以及各种其他应用。 聚类分析或聚类是通过扫描机器学习模型中未标记的数据集并设置特定数据点特征的测量来完成的。 然后,聚类分析将对数据点进行分类并将其放置在具有匹配特征的组中。 一旦数据被分组在一起,它将被分配一个簇ID号以帮助识别簇特征。 使用聚类技术在机器学习模型中分解大型、复杂的数据集可以减轻破译复杂数据时的压力。

K-means Clustering:K-Means 聚类是一种无监督学习算法。 与监督学习不同,此聚类没有标记数据。 K-Means 将对象划分为具有相似性但与属于另一个簇的对象不同的簇。“K”是一个数字。 您需要告诉系统您需要创建多少个集群。 例如,K = 2 表示两个簇。 有一种方法可以找出给定数据的最佳或最佳 K 值。为了更好地理解 k 均值,我们以板球运动为例。 想象一下,您收到了来自世界各地的许多板球运动员的数据,其中提供了有关该运动员得分的信息以及他们在过去十场比赛中取得的三柱门的信息。 根据这些信息,我们需要将数据分为两个集群,即击球手和投球手。

Ensemble model(集成模型)

有时一个模型是不够的。

(1)什么是集成模型

集成模型是一种机器学习方法,在预测过程中结合多个其他模型。 这些模型称为基本估计器。 集成模型提供了一种解决方案来克服构建单个估计器的技术挑战。

(2)集成算法

单一算法可能无法对给定的数据集做出完美的预测。 机器学习算法有其局限性,生成高精度模型具有挑战性。 如果我们构建并组合多个模型,我们就有机会提高整体准确性。 然后,我们通过聚合具有两个目标的每个模型的输出来实现模型的组合:

可以使用不同的技术(有时称为元算法)来实现这种聚合,如下图示例

end to end

在论文中经常能遇到end to end这样的描述,那么到底什么是端到端呢?其实就是给了一个输入,我们就给出一个输出,不管其中的过程多么复杂,但只要给了一个输入,机会对应一个输出。比如分类问题,你输入了一张图片,肯呢个网络有特征提取,全链接分类,概率计算什么的,但是跳出算法问题,单从结果来看,就是给了一张输入,输出了一个预测结果。End-To-End的方案,即输入一张图,输出最终想要的结果,算法细节和学习过程全部丢给了神经网络。

Embedding(嵌入)

深度学习方法都是利用使用线性和非线性转换对复杂的数据进行自动特征抽取,并将特征表示为“向量”(vector),这一过程一般也称为“嵌入”(embedding)

Fine tune(微调)

在深度学习中,Fine tune是一种迁移学习方法,其中预训练模型的权重在新数据上进行训练。 [1] 微调可以在整个神经网络上进行,也可以仅在其层的子集上进行,在这种情况下,未微调的层将被“冻结”(在反向传播步骤期间不会更新)。 模型还可以使用由比原始模型少得多的参数组成的“适配器”进行增强,并通过调整适配器的权重并保持模型的其余权重冻结来以参数有效的方式进行微调。

对于某些架构,例如卷积神经网络,通常会冻结较早的层(最接近输入层的层),因为它们捕获较低级别的特征,而后面的层通常会识别与以下内容更相关的高级特征: 模型训练的任务。

Feature map(特征图)

特征图也称为激活图。

从图像中提取过滤器后。

这些过滤器是图像的小部分,具有不同的特征。

输入上使用的过滤器数量应创建相同数量的特征图。

因此,具有 6 个滤波器的输入图像将具有 6 个特征图。

 Feature and their locations in the input images

在上图中,有 2 个过滤器(红色轮廓和绿色轮廓)用于创建两个特征图。 滤波器通过卷积运算在图像上滑动并生成特征图。 还要注意从同一图像生成的这些特色地图有多么不同。每个特征图捕获同一图像的不同特征。 通过更多数量的过滤器,我们将能够生成更多特征。例如,考虑一个 32 × 32 图像,以 1 的步幅宽度在学习/输入图像上滑动 5 × 5 感受野将产生 28 × 28 输出值的特征图。

32 × 32 ==> 28 × 28 ( 32–5 + 1 × 32–5 + 1 )

或者每个图像 784 个不同的激活。

 Figure 2: Features

特征图(卷积特征)的大小由我们需要在执行卷积步骤之前决定的三个参数控制:

  • 深度(Depth):深度对应于我们用于卷积运算的滤波器的数量。 在图 3 所示的网络中,我们使用三个不同的滤波器对原始船只图像进行卷积,从而生成如图所示的三个不同的特征图。 您可以将这三个特征图视为堆叠的二维矩阵,因此特征图的“深度”将为三。

Figure 3: Feature Map depth parameters

  • 步幅(Stride):步幅是我们在输入矩阵上滑动过滤器矩阵的像素数。 当步长为 1 时,我们一次移动过滤器一个像素。 当步长为 2 时,当我们滑动过滤器时,过滤器一次跳跃 2 个像素。 步幅较大会产生较小的特征图。
  • 零填充(Zero-padding):有时,在边界周围用零填充输入矩阵很方便,这样我们就可以将过滤器应用于输入图像矩阵的边界元素。 零填充的一个很好的功能是它允许我们控制特征图的大小。 添加零填充也称为宽卷积,不使用零填充则称为窄卷积。 这在[2]中已经解释得很清楚了。

FPS

Frames Per Second,每秒帧数,就是帧率

Generative Adversarial Network(GAN,生成对抗网络)

GAN包含有两个模型,一个是生成模型(generative model),一个是判别模型(discriminative model)。生成模型的任务是生成看起来自然真实的、和原始数据相似的实例。判别模型的任务是判断给定的实例看起来是自然真实的还是人为伪造的(真实实例来源于数据集,伪造实例来源于生成模型)。

这可以看做一种零和游戏。生成器(generator)试图欺骗判别器(discriminator),判别器则努力不被生成器欺骗。模型经过交替优化训练,两种模型都能得到提升,但最终我们要得到的是效果提升到很高很好的生成模型,这生成模型所生成的产品能达到真假难分的地步。

在训练过程中,生成网络G的目标是生成尽可能多的真实图像来欺骗网络D,而D的目标是试图将G生成的假图像与真实图像区分开来。这样,G和D构成一个动态的“博弈过程”,最终的均衡点为纳什均衡点。

H--N

Hyperparameter(超参数)

超参数。模型参数是根据数据自动估算的,例如权重。但模型超参数是手动设置的,并且在过程中用于帮助估计模型参数,例如学习率。

Intersection over Union(IoU,交并比)

IoU 量化两个边界框(ground truth and prediction)的接近程度。 它是一个介于 0 和 1 之间的值。如果两个边界框完全重叠,则预测是完美的,因此 IoU 为 1。另一方面,如果两个边界框不重叠,则 IoU 为 0。IoU 通过计算两个连接盒的相交面积与并集面积之比来计算,如下所示。

Learning rate(学习率)

深度学习神经网络使用随机梯度下降优化算法进行训练。学习率是一个超参数,它控制每次更新模型权重时响应估计误差而改变模型的程度。 选择学习率具有挑战性,因为值太小可能会导致训练过程过长并可能陷入困境,而值太大可能会导致过快地学习次优权重集或训练过程不稳定。配置神经网络时,学习率可能是最重要的超参数。 因此,了解如何研究学习率对模型性能的影响并建立关于学习率对模型行为动态的直觉至关重要。

loss function(损失函数)

在数学优化和决策理论中,损失或成本函数(有时也称为误差函数)是将事件或一个或多个变量的值映射到直观地表示与事件相关的某些“成本”的实数的函数。 简单来说,损失函数是一种评估算法对数据集建模效果的方法。 它是机器学习算法参数的数学函数。在简单线性回归中,使用斜率(m)和截距(b)计算预测。 其损失函数是 (Yi – Yihat)^2,即损失函数是斜率和截距的函数。

Multilayer Perceptron(MLP,多层感知机)

不要将“MLP”与“NLP”混淆,“NLP”指的是自然语言处理(natural language processing)。 多层感知机 (MLP) 是一类全连接的前馈人工神经网络 (ANN,artificial neural network)。 MLP 一词的使用含糊不清,有时宽松地表示任何前馈 ANN,有时严格地指由多层感知器(具有阈值激活)组成的网络。 多层感知器有时通俗地称为“普通”神经网络,特别是当它们具有单个隐藏层时。

MLP 至少由三层节点组成:输入层、隐藏层和输出层。 除输入节点外,每个节点都是使用非线性激活函数的神经元。 MLP 利用基于链规则的监督学习技术(称为反向传播或自动微分的反向模式)进行训练。 它的多层和非线性激活将 MLP 与线性感知器区分开来。 它可以区分不可线性分离的数据。

O--T

Off-the-shelf

已有的,现成的

Pipeline(超参数)

Pipeline如果直译是管道或者流水线,这谁能看懂呢。

在机器学习中,Pipeline定义是一种自动化机器学习工作流程的方法,方法是将数据转换并关联到模型中,然后对模型进行分析以实现输出。这种类型的 ML Pipeline使将数据输入 ML 模型的过程完全自动化(这么看流水线还挺形象,个人还是喜欢翻译为通道) 。

另一种类型的机器学习Pipeline是将机器学习工作流程拆分为独立的、可重用的模块化部分的艺术,然后可以将这些部分连接在一起以创建模型。这种类型的机器学习Pipeline使构建模型更加高效和简化,消除了多余的工作。

pooling(池化)

池化是一个深度学习中的操作手段,在程序中对应的就是池化层(pooling layer),卷积神经网络中的池化是一种概括卷积滤波器(convolutional filters)提取的特征并帮助网络识别特征的技术,而与特征在图像中的位置无关。

(1)为什么卷积神经网络中需要池化

卷积层是用于图像识别等计算机视觉应用的卷积神经网络的基本构建块。卷积层在图像上滑动过滤器并提取特征,从而生成特征图,该特征图可以馈送到下一个卷积层以提取更高级别的特征。因此,堆叠多个卷积层使 CNN 能够识别图像中日益复杂的结构和对象。

卷积层的一个主要问题是过滤器生成的特征图是位置相关的。 这意味着在训练过程中,卷积神经网络学习将某个特征的存在与输入图像中的特定位置相关联。 这会严重降低性能。 相反,我们希望特征图和网络具有平移不变性(一种奇特的表达,意味着特征的位置不重要)。

在关于填充和步幅的文章中,我们讨论了卷积运算中更大的步幅如何帮助将图像集中在更高级别的特征上。 专注于更高级别的结构可以使网络更少地依赖于与特征位置相关的粒度细节。 池化是让网络专注于更高级别功能的另一种方法。在卷积神经网络中,池化通常应用于由前面的卷积层和非线性激活函数产生的特征图。

(2)池化是如何进行的

池化的基本过程与卷积运算非常相似。 您选择一个过滤器并将其滑动到前一个卷积层的输出特征图上。 最常用的过滤器大小是 2×2,它使用 2 的步长在输入上滑动。根据您选择的池化操作类型,池化过滤器计算感受野上(过滤器下的特征图部分)的输出。有多种池化方法。 最常用的方法是最大池化和平均池化。

(3)Max Pooling(最大池化)

在最大池化中,滤波器简单地选择感受野中的最大像素值。 例如,如果字段中有 4 个像素,其值为 3、9、0 和 6,则选择 9。

(4)Average Pooling(平均池化)

平均池化的工作原理是计算感受野中像素值的平均值。 给定 4 个像素,值为 3、9、0 和 6,平均池化层将产生 4.5 的输出。 四舍五入到整数后得到 5。

(5)如何理解池化值

您可以将池化层计算和保留的数字视为指示特定特征的存在。 如果神经网络仅依赖于原始特征图,则其检测特征的能力将取决于图中的位置。 例如,如果仅在左上象限中找到数字 9,则网络将学习将连接到数字 9 的特征与左上象限相关联。通过应用池化,我们将该特征提取到一个更小、更通用的地图中,该地图仅指示某个特征是否存在于该特定象限中。 每增加一层,地图都会缩小,只保留有关感兴趣特征的存在的重要信息。 随着地图变小,它变得越来越独立于要素的位置。 只要在原始位置附近检测到该特征,它就应该类似地反映在池化层生成的地图中。

由于它关注极值,最大池化关注感受野中更突出的特征和边缘。 另一方面,平均池化可以创建更平滑的特征图,因为它生成平均值而不是选择极值。 在实践中,最大池化应用得更频繁,因为它通常更擅长识别突出特征。 在实际应用中,平均池化仅用于将特征图折叠到特定大小。由于池化能够折叠特征图,因此还可以帮助对不同大小的图像进行分类。 神经网络中的分类层期望接收相同格式的输入。 因此,我们通常以相同的标准尺寸提供图像。 通过在池化操作期间改变偏移量,我们可以总结不同大小的图像,并且仍然生成相似大小的特征图。一般来说,当您执行图像分类任务时,您只需要检测图像中某个对象是否存在,但不关心它的具体位置,池化尤其有用。事实上,池化滤波器使用比卷积滤波器更大的步长并导致更小的输出,这一事实也支持网络的效率并导致更快的训练。 换句话说,位置不变性可以极大地提高网络的统计效率。

Precision/Recall(精度/召回率)-----Accuracy(准确度)/F1 score(F1得分)

基于 TP、FP 和 FN(这仨指标下文有),对于每个标记类别,我们计算两个参数:精度和召回率(放一起是为了好总结)。

Precision:告诉我们模型的精确度,即在检测到的猫总数中,有多少是真正的猫。 因此,它是模型做出的真阳性与猫预测总数(相当于真阳性和假阳性之和)之间的比率,如下图所示。

Recall:告诉我们模型在从图像中召回类别方面有多好,即在输入图像中的猫总数中模型能够检测到多少只。 因此,它是模型得出的真阳性与地面真猫总数之间的比率(相当于真阳性和假阴性的总和),如下图所示。

从上图可以看出,分类器的预测是准确的。 当它说它是一只猫(狗)时,80%的时间都是正确的。 但是,如果图像中存在猫(狗),则分类器只能在 50% (80%) 的时间内检测到它。 因此,该模型很难回忆起猫(模型老年痴呆了乛ᴗ乛)。

Accuracy:把准确度放这儿是为了和上面的精度对比。

准确率(Accuracy)表示分类正确的样本占总样本个数的比例,计算公式如下

F1 score:F1 score是精度和召回率的一个加权平均,计算公式如下。

Precision体现了模型对负样本的区分能力,Precision越高,模型对负样本的区分能力越强;Recall体现了模型对正样本的识别能力,Recall越高,模型对正样本的识别能力越强。F1 score是两者的综合,F1 score越高,说明模型越稳健。

receptive field(RF, 感受野)

在典型CNN结构中,FC层(全连接层,FC layer)每个输出节点的值都依赖FC层所有输入,而CONV层(卷积层,Convolutional Layer)每个输出节点的值仅依赖CONV层输入的一个区域,这个区域之外的其他输入值都不会影响输出值,该区域就是感受野。

图中是个微型CNN,来自Inception-v3论文(Rethinking the Inception Architecture for Computer Vision),原图是为了说明一个conv5x5可以用两个conv3x3代替,从下到上称为第1, 2, 3层:

  1. 第2层左下角的值,是第1层左下红框中3x3区域的值经过卷积,也就是乘加运算计算出来的,第2层左下角位置的感受野是第1层左下红框区域
  2. 第3层唯一值,是第2层所有3x3区域卷积得到的,第3层唯一位置的感受野是第2层所有3x3区域
  3. 第3层唯一值,是第1层所有5x5区域经过两层卷积得到的,第3层唯一位置的感受野是第1层所有5x5区域

就是这么简单,某一层feature map(特性图)中某个位置的特征向量,是由前面某一层固定区域的输入计算出来的,那这个区域就是这个位置的感受野。任意两个层之间都有位置—感受野对应关系,但我们更常用的是feature map层到输入图像的感受野,如目标检测中我们需要知道feature map层每个位置的特征向量对应输入图像哪个区域,以便我们在这个区域中设置anchor,检测该区域内的目标。

感受野区域之外图像区域的像素不会影响feature map层的特征向量,所以我们不太可能让CNN仅依赖某个特征向量去找到其对应输入感受野之外的目标。这里说“不太可能”而不是“绝无可能”,是因为CNN很强大,且图像像素之间有相关性,有时候感受野之外的目标是可以猜出来的,什么一叶知秋,管中窥豹,见微知著之类,对CNN目标检测都是有可能的,但猜出来的结果并不总是那么靠谱。

感受野有什么用呢?

  • 一般task要求感受野越大越好,如图像分类中最后卷积层的感受野要大于输入图像,网络深度越深感受野越大性能越好
  • 密集预测task要求输出像素的感受野足够的大,确保做出决策时没有忽略重要信息,一般也是越深越好
  • 目标检测task中设置anchor要严格对应感受野,anchor太大或偏离感受野都会严重影响检测性能
  • Region of interest(ROI)

    感兴趣区域(通常缩写为 ROI)是为特定目的标识的数据集中的样本。

    Region of Interest Pooling

    感兴趣区域池化(也称为 RoI 池化)是一种广泛应用于使用卷积神经网络的对象检测任务中的操作。例如,在单个图像中检测多辆汽车和行人。其目的是对非均匀大小的输入执行最大池化以获得固定大小的特征图。

Prior knowledge(先验知识)

除了机器学习pipeline中常见的信息源——训练数据之外,还可以另外整合知识。如果这个知识是预先存在的,并且不依赖于学习算法,就可以称之为先验知识。剪枝主要充当网络内的架构搜索。 事实上,在稀疏度较低(约 40%)的情况下,模型的泛化能力通常会稍好一些,因为剪枝起到了正则化的作用。 在更高的级别上,修剪后的模型将与基线匹配。 进一步推进,该模型将开始比基线更差,但具有更好的性能。 例如,经过精心修剪的 ResNet-50 模型在稀疏度为 90% 时几乎可以与 ImageNet 上的基线精度相匹配(模型中 90% 的权重为零)。

Pruning(剪枝)

剪枝是删除网络中的权重连接以提高推理速度并减少模型存储大小的过程。 一般来说,神经网络的参数化程度非常高。 修剪网络可以被认为是从过度参数化的网络中删除未使用的参数。

Residual Network(ResNet,残差网络)

残差网络(ResNet)是一种用于计算机视觉应用的深度学习模型。 它是一种卷积神经网络 (CNN) 架构,旨在支持数百或数千个卷积层。 以前的 CNN 架构无法扩展到大量层,从而导致性能有限。 然而,当添加更多层时,研究人员面临“梯度消失”问题。神经网络通过反向传播过程进行训练,该过程依赖于梯度下降,向下移动损失函数并找到使其最小化的权重。 如果层数太多,重复的乘法最终会减小梯度,直至“消失”,并且随着每层的添加,性能会饱和或恶化。ResNet 为梯度消失问题提供了一种创新的解决方案,称为“跳跃连接”。 ResNet 堆叠多个恒等映射(首先不执行任何操作的卷积层),跳过这些层,并重用前一层的激活。 跳过通过将网络压缩为更少的层来加速初始训练。然后,当重新训练网络时,所有层都会扩展,并且网络的其余部分(称为残差部分)可以探索输入图像的更多特征空间。大多数 ResNet 模型一次跳过两层或三层,中间有非线性和批量归一化。 更先进的 ResNet 架构(称为 HighwayNet)可以学习“跳过权重”,动态确定要跳过的层数。ResNet 架构引入了将中间输入添加到一系列卷积块的输出的简单概念。 如下图所示。 

State-of-the-art (SOTA)

可翻译为最先进的,最高水平。

True Positive/False Positive/False Negative/True Negative(真阳性/假阳性/假阴性/真阴性)

这些其实都是来自统计学的概念,而且字面翻译也是云里雾里,所以要做一下解释

  • True Positive:模型预测某个位置存在边界框(正)并且是正确的(真);---->我找到了正确的目标
  • False Positive:模型预测特定位置存在边界框(正),但结果是错误的(假);---->我把错的当成的真的
  • False Negative:模型没有预测某个位置的边界框(负),并且是错误的(假),即该位置存在真实边界框;---->我把真的当成了错的
  • True Negative:模型没有预测边界框(负)并且它是正确的(真); ---->我找到了错误的目标

True Negative对应于背景,即没有边界框的区域,并且不用于计算最终指标。

以下示例将有助于阐明 TP、FP 和 FN。

U--Z

Upsampling(上采样)/Downsampling(下采样)

Downsampling:读完这项技术的名称后,直观地知道它与图像的缩小有关。 嗯,没错! 这个想法是正确的,有人出于各种原因缩小图像的尺寸,例如:它使数据的大小更易于管理;降低数据的维度,从而加快数据(图像)的处理速度;减少数据的存储大小;根据用途,该技术还有一些其他用途。有时它与图像压缩相混淆,图像压缩是不同的事情,并且具有完全不同的用途。 这里我们只关心图像的缩小。 嗯,这是什么意思? 这本质上意味着丢弃一些(非必要的)信息。由此,我们可以得出一个提示:我们需要从图像中丢弃一些行和/或列。 我们需要丢弃一些信息。

Upsampling:另一方面,上采样只不过是下采样的相反目标:增加图像的行数和/或列数(尺寸)。 这可以在多种情况下使用,例如 GAN(生成对抗网络)中使用的情况,其目的是根据随机向量样本构建图像,模仿来自真实分布或真实分布的图像。 还有很多其他的比如提高图像质量等等。 让我们更详细地讨论这个问题。

下采样时,我们的意图相当简单明了,但上采样时就不那么简单了。 我们需要以某种方式增加图像的尺寸并填充间隙(列/行)。 假设您想要将原始图像上采样 3 倍,这意味着您需要使用某种逻辑为图像中的每行/列添加 2 个行/列。 一种方法可能是重复原始图像中的每一列/行。

如果您这样做,有趣的是,您会观察到两个图像:原始图像和生成的图像即使不完全相同,看起来也非常相似。 为了说明这一点,您没有在生成的图像中创建任何“新”数据。 由于重复的行和列是完全冗余的,因此该方法没有任何用处,并且它不提供任何新信息。添加新列的明智方法是在行/列之间插入新数据,这使用一些高级数学生成提供相当准确的中间值。

Without bells and whistles

没有花里胡哨的方法(不添加不必要,冗余的东西)

Warm up(热身)

Warm up指的是用一个小的学习率先训练几个epoch,这是因为网络的参数是随机初始化的,一开始就采用较大的学习率容易数值不稳定。

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

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

相关文章

SpringSecurity5.7+最新案例 -- 授权 --

一、前提 书接上回 SpringSecurity5.7最新案例 – 用户名密码验证码记住我 本文 继续处理SpringSecurity授权 … 目前由 难 -> 简&#xff0c;即自定义数据库授权&#xff0c;注解授权&#xff0c;config配置授权 二、自定义授权 0. 数据准备 SET NAMES utf8mb4; SET …

CentOS软件包管理rpm、yum

一、软件包概述 Linux常见软件包分为两种&#xff0c;分别是源代码包、二进制文件包。源代码包是没有经过编译的包&#xff0c;需要经过GCC、C编译器编译才能运行&#xff0c;文件内容包含源代码文件&#xff0c;通常以.tar.gz、.zip、.rar结尾&#xff1b;二进制包无需编译&am…

APP外包开发的开发语言对比

在开发iOS APP时有两种语言可以选择&#xff0c;Swift&#xff08;Swift Programming Language&#xff09;和 Objective-C&#xff08;Objective-C Programming Language&#xff09;&#xff0c;它们是两种不同的编程语言&#xff0c;都被用于iOS和macOS等苹果平台的软件开发…

pytorch学习——卷积神经网络——以LeNet为例

目录 一.什么是卷积&#xff1f; 二.卷积神经网络的组成 三.卷积网络基本元素介绍 3.1卷积 3.2填充和步幅 3.2.1填充&#xff08;Padding&#xff09; 填充是指在输入数据周围添加额外的边界值&#xff08;通常是零&#xff09;&#xff0c;以扩展输入的尺寸。填充可以在卷…

Dockerfile构建Tomcat镜像

准备apache包和jdk并解压 [rootlocalhost tomcat]# ll 总用量 196728 -rw-r--r--. 1 root root 9690027 7月 17 2020 apache-tomcat-8.5.40.tar.gz -rw-r--r--. 1 root root 674 8月 2 20:19 Dockerfile -rw-r--r--. 1 root root 191753373 7月 17 2020 jdk-8u191-…

【Python基础教程】super()函数的正确使用方法

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 1.super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了,super()内也可不加参数 2.规律是super是按调用的次序执行&#xff0c;super后面的语句是逆向执行的。 有2段示例代码&#xff0c;不同的在于value有没…

基于短信宝API零代码实现短信自动化业务

场景描述&#xff1a; 基于短信宝开放的API能力&#xff0c;实现在特定事件&#xff08;如天气预警&#xff09;或定时自动发送短信&#xff08;本文以定时群发短信为例&#xff09;。通过Aboter平台如何实现呢&#xff1f; 使用方法&#xff1a; 首先创建一个IPaaS流程&…

解决Vue3 使用Element-Plus导航刷新active高亮消失

解决Vue3 使用Element-Plus导航刷新后active高亮消失的问题 启用路由模式会在激活导航时以 index 作为 path 进行路由跳转 使用 default-active 来设置加载时的激活项。 接下来打印一下选中项index和index路径&#xff0c; 刷新也是没有任何问题的&#xff0c;active不会消失…

python+django+mysql项目实践二(前端及数据库)

python项目实践 环境说明&#xff1a; Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 前端模板 添加模板 在templates下创建 views文件中添加 创建数据库 连接数据库 在setting文件中进行配置 创建表

SDXL-Stable Diffusion改进版

文章目录 1. 摘要2. 算法&#xff1a;2.1 结构&#xff1a;2.2 微小的条件机制2.3 多宽高比训练2.4 改进自编码器2.5 所有组合放到一起2.6 主流方案比较 3. 未来工作4. 限制 论文&#xff1a; 《SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis…

APP外包开发的android开发模式

开发 Android 应用有多种方法&#xff0c;每种方法都有其优势和适用场景。综合考虑各自的特点&#xff0c;你可以根据项目的需求和团队的技能选择最合适的开发方法。今天和大家分享几种常见的开发方法以及它们之间的对比&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公…

NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读

论文信息 题目&#xff1a;NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 作者&#xff1a;Antoni Rosinol, John J. Leonard&#xff0c; Luca Carlone 代码&#xff1a;https://github.com/ToniRV/NeRF-SLAM 来源&#xff1a;arxiv 时间&#xff…

安装element-plus报错:Conflicting peer dependency: eslint-plugin-vue@7.20.0

VSCode安装element-plus报错&#xff1a; D:\My Programs\app_demo>npm i element-plus npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: vue/eslint-config-standard6.1.0 npm ERR! Found: eslint-plugin-vue8.7.1 npm E…

机器学习实战1-kNN最近邻算法

文章目录 机器学习基础机器学习的关键术语 k-近邻算法&#xff08;KNN&#xff09;准备&#xff1a;使用python导入数据实施kNN分类算法示例&#xff1a;使用kNN改进约会网站的配对效果准备数据&#xff1a;从文本文件中解析数据分析数据准备数据&#xff1a;归一化数值测试算法…

Go语言并发编程(千锋教育)

Go语言并发编程&#xff08;千锋教育&#xff09; 视频地址&#xff1a;https://www.bilibili.com/video/BV1t541147Bc?p14 作者B站&#xff1a;https://space.bilibili.com/353694001 源代码&#xff1a;https://github.com/rubyhan1314/go_goroutine 1、基本概念 1.1、…

鉴源论坛·观擎丨浅谈操作系统的适航符合性(上)

作者 | 蔡喁 上海控安可信软件创新研究院副院长 版块 | 鉴源论坛 观擎 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 源头和现状​​​​​​​ 在越来越多的国产机载系统研制中&#xff0c;操作系统软件的选择对后续开展研制以及适航举证活动带来…

码云 Gitee + Jenkins 配置教程

安装jdk 安装maven 安装Jenkins https://blog.csdn.net/minihuabei/article/details/132151292?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132151292%22%2C%22source%22%3A%22minihuabei%22%7D 插件安装 前往 Manage Jen…

基于Windows手动编译openssl和直接安装openssl

零、环境 win10-64位 VS2019 一、手动编译 前言&#xff1a;对于一般的开发人员而言&#xff0c;在 openssl 上下载已经编译好的 openssl 库&#xff0c;然后直接拿去用即可&#xff0c;&#xff0c;不用手动编译&#xff0c;{见下文直接安装}。。。对于一些开发人员&#…

Jmeter录制HTTPS脚本

Jmeter录制HTTPS脚本 文章目录 添加“HTTP代理服务器”设置浏览器代理证书导入存在问题 添加“HTTP代理服务器” 设置浏览器代理 保持端口一致 证书导入 点击一下启动让jmeter自动生成证书&#xff0c;放在bin目录下&#xff1a; 打开jmeter的SSL管理器选择刚刚生成的证书&…

# 关于Linux下的parted分区工具显示起始点为1049kB的问题解释

关于Linux下的parted分区工具显示起始点为1049kB的问题解释 文章目录 关于Linux下的parted分区工具显示起始点为1049kB的问题解释1 问题展示&#xff1a;2 原因3 修改为KiB方式显示4 最后 1 问题展示&#xff1a; kevinTM1701-b38cbc23:~$ sudo parted /dev/nvme1n1 GNU Part…