学习中遇到的知识点

A

1.anchor-based

        优点:加入了先验知识,模型训练相对稳定;密集的anchor box可有效提高召回率,对于小目标检测来说提升非常明显。

        缺点:对于多类别目标检测,超参数相对难设计;冗余box非常多,可能会造成正负样本失衡;在进行目标类别分类时,超参IOU阈值需根据任务情况调整。

anchor-free

        优点:计算量减少;可灵活使用。

        缺点:存在正负样本严重不平衡;两个目标中心重叠的情况下,造成语义模糊性;检测结果相对不稳定。

B

C

1.长距离依赖关系(全局)

        全局的长距离依赖关系指的是一个模型需要在输入数据的所有位置上都能够感知到输入之间的长距离依赖关系。在自然语言处理中,这意味着模型需要能够在句子中不同位置的单词之间建立联系,以捕捉它们之间的语义关系。例如,在一句话中,“我喜欢吃冰淇淋,因为它很好吃”中,“它”指代的是“冰淇淋”,这需要模型能够理解这种长距离依赖关系。

        在计算机视觉中,全局的长距离依赖关系可以被视为在整个图像中建立关联,以捕捉物体之间的关系。例如,在图像中识别一个人时,需要将身体的不同部位、面部特征等进行关联,以判断这个人的身份。这需要模型能够在整个图像中捕捉到不同部位之间的关系,从而正确地进行分类。

        对于深度学习模型而言,全局的长距离依赖关系可能会面临一些挑战,例如参数数量的增加、计算复杂度的提高、梯度消失等问题。因此,一些研究者提出了一些新的模型架构和训练技术,以在全局范围内捕捉长距离依赖关系,例如 Transformer 和自注意力机制等。这些技术可以帮助模型在处理自然语言处理和计算机视觉任务时更好地捕捉长距离依赖关系,从而提高模型的性能。

D

1. 冻结(Freezing)

        训练模型冻结(Freezing)是指在一定阶段停止更新神经网络中的某些层或参数,从而保持这些层或参数的值不变

        通常情况下,在深度学习中,我们会使用反向传播算法来更新神经网络中的权重参数,以减小损失函数的值,从而提高模型的准确性。但有时候,我们可能希望在训练过程中保持某些层或参数的值不变,这时就需要使用训练模型冻结技术

        训练模型冻结的主要应用场景是迁移学习(Transfer Learning),即利用已经训练好的模型来解决新的任务。在这种情况下,我们通常会将预训练好的模型的某些层或参数冻结住,只训练剩余的一些层或参数,以避免丢失已经学习到的知识

        例如,在图像分类任务中,我们可以使用在大规模图像数据集上预训练好的卷积神经网络作为特征提取器,然后冻结掉其前几层的权重参数,只训练其后几层的全连接层来适应新的图像分类任务。这样做可以加快模型的收敛速度,提高模型的泛化能力,同时也可以避免因为少量新数据不足以更新大量参数而导致的过拟合问题。

E

1.Embedding(嵌入层)

        在自然语言处理(NLP)中,嵌入层(Embedding layer)是一个常用的神经网络层,用于将单词或标记(token)表示为低维稠密向量。嵌入层通常是神经网络的第一层,用于将输入的离散型数据(如单词)转换为连续型向量,以便在神经网络中进行进一步的处理。

        嵌入层的目的是将每个单词或标记映射到一个n维向量,其中n通常是几百或几千。这些向量的维度被称为嵌入维度。每个维度都对应于单词或标记的某个语义特征。例如,对于英语单词,“dog”可能在嵌入空间中与“cat”和“pet”非常接近,而与“tree”和“house”远离。这种向量表示使得神经网络能够学习单词之间的语义关系,从而提高其性能。

        嵌入层的输入通常是单词或标记的索引,其输出是对应的嵌入向量。这些嵌入向量可以输入到神经网络中的其他层进行进一步的处理,例如卷积层或循环神经网络(RNN)层。

        在目标检测中,嵌入层(embedding layer)通常指的是将输入图像或图像的某个区域(如候选框)转换为一个向量的神经网络层。这个向量被称为嵌入向量(embedding vector),它可以用来表示输入的图像或图像区域在一个高维空间中的位置。通常在CNN的顶部添加,将CNN的输出特征图(通常是一个高维张量)转换为一个向量。

F

1.FLOPS

        FLOPS(S大写)是floating-point operations per second的缩写,意指每秒浮点运算次数。用来衡量硬件的性能

        FLOPs(S小写)是floating-point of operations的缩写,是浮点运算次数,可以用来衡量算法/模型复杂度。

        GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10亿次的浮点运算数,常作为GPU性能参数但不一定代表GPU的实际表现,因为还要考虑具体如何拆分多边形和像素、以及纹理填充,理论上该数值越高越好。1GFlops = 1,000MFlops

G

1. GPU

        边缘GPU通常指的是在物联网中使用的低功耗GPU,可以实现部分AI算法的边缘推理,以便在设备上进行实时处理。

        普通GPU通常指的是用于游戏和工作站的高功耗GPU,可以高效地处理图形和计算密集型任务。

        云GPU通常指的是云计算服务商提供的GPU服务,可以满足大规模计算和深度学习等需求。

H

I

J

1.激活函数

1.1sigmoid函数

        优点:输出值在0到1之间,可以将输出解释为概率。

        缺点:当输入值趋近于正无穷或负无穷时,梯度值会趋近于0,导致梯度消失问题,使得深度神经网络的训练变得困难。

1.2 tanh函数

        优点:它的输出值在-1到1之间,比sigmoid函数的输出范围更大,可以提供更多的非线性  

        缺点:与sigmoid函数相同,当输入值趋近于正无穷或负无穷时,梯度消失问题仍然存在

1.3 ReLU函数

        优点:它可以有效地避免梯度消失问题,加速神经网络的训练

        缺点:它在输入为负数时,梯度为0,会使得一部分神经元永久失活,称为“ReLU死亡问题”。

1.4 Leaky ReLU函数:Leaky ReLU函数是对ReLU函数的改进

        优点:可以避免ReLU死亡问题,同时仍然保持了ReLU函数的优点

        缺点:它在输入为负数时,仍然存在梯度消失问题

1.5 ELU函数:ELU函数是另一种改进ReLU函数的激活函数

        优点:它可以避免ReLU死亡问题和梯度消失问题,同时仍然保持了ReLU函数的优点。

        缺点:它比其他激活函数计算量大,训练时间长。

1.6 Gelu函数

        优点:激活函数的值域在整个实数范围内,避免了sigmoid函数在极端值处的梯度消失问题; 激活函数的导数在大部分区间内都为非零值,避免了ReLU函数在负数区间内的梯度为0问题;Gelu函数在接近0时的导数接近1,能够保留更多的信息。

        缺点:Gelu函数的计算比ReLU函数复杂,计算速度较慢;Gelu函数在负数区间内仍然存在梯度消失问题。

1.7 Silu函数

        优点:计算速度比ReLU函数更快,因为它只涉及一个sigmoid函数的计算;Silu函数在接近0时的导数接近1,能够保留更多的信息。

        Silu的缺点:Silu函数在接近正无穷和负无穷时的导数接近0,可能导致梯度消失问题;Silu函数的值域在(0,1)之间,可能会导致信息的损失。

K

1. 空间特征调节

        空间特征调节(Spatial Feature Modulation)是指通过批归一化等技术,对神经网络的输入数据进行归一化处理,以提高模型的训练速度和性能表现

L

1. 滤波器

        滤波器(也称为卷积核)是一种用于提取输入图像中特定特征的小型矩阵。滤波器通常是一个方形矩阵,其大小通常为3x3或5x5。滤波器通过在输入图像上滑动,对每个位置的像素进行乘积运算并相加,从而生成一个输出特征图。这种运算可以将输入图像中的低级特征(例如边缘或纹理)转换为更高级别的特征(例如形状或物体)。滤波器的数量可以根据需要进行调整,以便在提取不同种类的特征时更有效地工作。通过使用多个滤波器,CNN可以从输入图像中提取多个特征,并将它们组合成单个表示图像的特征向量。这些特征向量可以用于分类、目标检测或图像生成等任务。

滤波器的数量和特征图的维度有什么关系?

        在CNN中,滤波器的数量和特征图的维度之间存在密切的关系。滤波器的数量决定了输出特征图的深度,也就是说,每个滤波器将生成一个特征图,而滤波器的数量将决定特征图的数量。假设输入图像的尺寸为WxHxC(其中W和H分别表示图像的宽度和高度,C表示图像的通道数),并且使用了K个大小为FxF的滤波器,则输出特征图的尺寸将是((W-F+2P)/S+1) x ((H-F+2P)/S+1) x K。因此,滤波器的数量可以看作是控制输出特征图的维度的参数。

        另外,需要注意的是,由于每个滤波器都可以提取图像中的不同特征,因此增加滤波器的数量可以增加模型的表示能力,提高其在图像识别任务中的准确性。但是,滤波器的数量也会增加模型的参数量,增加训练时间和计算成本。因此,在选择滤波器数量时需要平衡模型的复杂性和准确性之间的关系。

M

1.Merging(合并层)

        Merging层是神经网络中的一种层类型,主要作用是将多个输入层或多个中间层的数据合并在一起。这个过程通常是通过对输入层或中间层的数据进行某种形式的操作来实现的,例如连接、叠加、求和等。

N

O

P

Q

R

S

1.缩放因子

        缩放因子是指将一个物体或图像按比例缩小或放大的系数。在计算机视觉中,缩放因子通常用于将图像进行缩放,以便更好地适应模型的输入尺寸。缩放因子可以将图像按比例缩放,使其具有相似的尺寸和纵横比,从而可以更好地应用于深度学习模型中。

        在使用卷积神经网络(CNN)进行图像分类和目标检测时,通常需要将输入图像调整为固定的大小,以便与网络结构匹配。为此,可以使用缩放因子将图像缩放到指定的尺寸,并且可以使用不同的插值方法来保留图像的质量。例如,常用的插值方法包括最近邻插值、双线性插值和双三次插值等。

        此外,缩放因子还可以用于数据增强,以扩大数据集并提高模型的泛化能力。通过将图像按比例缩放或随机缩放,可以产生多个不同大小的图像,并用于训练模型。这种数据增强技术可以提高模型的鲁棒性,并减少过拟合的风险。

缩放因子和卷积升维

        缩放因子和卷积升维这两种技术在计算机视觉中有着不同的作用。

        缩放因子主要用于将图像进行缩放,以便更好地适应模型的输入尺寸。缩放因子可以将图像按比例缩放,使其具有相似的尺寸和纵横比,从而可以更好地应用于深度学习模型中。然而,缩放因子并不能提取图像的特征,它只是将图像的大小调整到合适的尺寸,以便与模型的输入层匹配。

        相比之下,卷积升维(convolutional up-sampling)是一种用于提取图像特征的技术。卷积升维可以将低分辨率的特征图逐步升采样到高分辨率,以便提取更丰富和详细的特征信息。在图像分割和目标检测等任务中,卷积升维可以帮助模型更好地理解图像中的物体形状和细节,并提高模型的准确性和鲁棒性。

        因此,缩放因子和卷积升维这两种技术在计算机视觉中有不同的作用,它们往往被结合使用以提高模型的性能。在一些深度学习模型中,如 U-Net 和 DeepLab 等,卷积升维和缩放因子都被广泛应用,以帮助模型更好地理解图像并提高模型的准确性。

缩放因子和上下采样

        缩放因子和上下采样(upsampling/downsampling)都可以调整图像的尺寸,但它们在计算机视觉中的作用是不同的。

        上采样可以将低分辨率的特征图逐步升采样到高分辨率,以便提取更丰富和详细的特征信息,而下采样可以将特征图缩小到较小的尺寸,以便减少计算复杂度和提高模型的泛化能力。在图像分割和目标检测等任务中,上下采样可以帮助模型更好地理解图像中的物体形状和细节,并提高模型的准确性和鲁棒性。

        相比之下,缩放因子仅仅可以将图像按比例缩放到指定的尺寸,以便适应深度学习模型的输入层。缩放因子不能提取特征,也不能改变特征图的分辨率。因此,如果仅仅使用缩放因子来代替上下采样,在一些需要提取详细特征的任务中,可能会导致模型的性能下降。

        综上所述,虽然缩放因子和上下采样都可以调整图像的尺寸,但它们在计算机视觉中的作用是不同的,而上下采样在深度学习模型中扮演着重要的角色,用于提取特征并改变特征图的分辨率,以提高模型的准确性和鲁棒性。

2.Stem块

        在深度学习和自然语言处理任务中,通过对输入数据进行预处理和特征提取,帮助模型更好地理解和处理数据,从而提高模型的准确性和泛化能力。

3.深度和宽度:

        网络的深度指的是神经网络中的层数,也就是神经元的层数。深度越深,神经网络的复杂度越高,能够处理的问题也就越复杂。

        网络的宽度指的是每一层神经元的数量。宽度越大,神经网络的参数数量也就越大,能够处理的问题也就越复杂。同时,宽度也可以影响神经网络的计算速度和内存占用。

        要解决比较复杂的问题, 要么增加深度, 要么增加宽度, 而增加宽度的代价往往远高于深度

T

U

V

W

1. Warmup

        Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时候先选择使用一个较小的学习率,训练了一些epoches或者steps(比如4个epoches,10000steps),再修改为预先设置的学习率来进行训练。由于刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡),选择Warmup预热学习率的方式,可以使得开始训练的几个epoches或者一些steps内学习率较小,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳。

X

1.训练

 

2.先验框(prior box)

        是用于目标检测中的一种基础框架,它是在图像上固定的矩形框,用于检测目标物体的位置和尺寸。先验框的位置和大小通常是根据先验知识经验设置的,例如目标物体在图像中出现的可能位置和尺寸范围。在目标检测中,先验框与图像中的每个位置相对应,通过计算先验框与实际目标框之间的IOU(交并比),来判断该位置是否有目标框存在

Y

1. 硬标签

        硬标签和软标签都是在机器学习中使用的标注方式。

        硬标签是指一种确定的类别标签,比如二分类中的“是”和“否”。

        而软标签则是指一种不确定的概率分布,比如在多分类问题中,一个样本可能被标注为属于某一类的概率为0.8,而属于另一类的概率为0.2,这个就是软标签。

Z

1. 正负样本:

        在YOLO模型中,正样本是指一个Anchor Box与实际物体的IoU(Intersection over Union,交并比)大于一定阈值(一般为0.5)的样本。也就是说,如果一个Anchor Box与图像中的某个物体的IoU大于0.5,则这个Anchor Box就被认为是正样本。

        而负样本则是指一个Anchor Box与所有实际物体的IoU都小于一定阈值(一般为0.3)的样本。也就是说,如果一个Anchor Box与图像中的所有物体的IoU都小于0.3,则这个Anchor Box就被认为是负样本。

        需要注意的是,YOLO模型中的Anchor Box是预定义的一些大小和形状的矩形框,用于对图像进行划分和检测。在训练时,每个Anchor Box都会被标记为正样本或负样本,然后用于计算模型的损失函数。

2. 蒸馏

        蒸馏(distillation)指的是通过将一个大型深度神经网络(教师网络)的知识转移到一个小型深度神经网络(学生网络)来实现模型压缩和加速的过程。

        具体而言,蒸馏的原理是通过在教师网络中计算得到的软标签或者中间层特征来引导学生网络学习。在训练过程中,教师网络的输出被认为是学生网络的“目标”,通过最小化它们之间的距离(比如交叉熵损失函数)来训练学生网络。由于软标签比硬标签包含更多的信息,因此学生网络可以学习到更多的知识,从而实现了模型的压缩和加速。

        在计算机视觉中,蒸馏的操作一般可以分为以下几步:

  1. 准备数据:通常需要准备两份数据集,一份是用于训练“教师模型”的原始数据集,另一份是用于训练“学生模型”的蒸馏数据集。
  2. 训练教师模型:使用原始数据集训练一个较大的模型,如ResNet、VGG等,作为“教师模型”。该模型应该在目标任务上取得比较好的性能。
  3. 训练学生模型:使用蒸馏数据集训练一个较小的模型,如MobileNet、ShuffleNet等,作为“学生模型”。在训练时,学生模型会尽可能地去模仿教师模型在训练数据上的行为。具体地,学生模型的损失函数一般由两部分组成:一部分是与教师模型的输出的距离,另一部分是与真实标签的距离。通过这种方式,学生模型可以学到教师模型的知识,并且在保持较小模型尺寸的同时,取得较好的性能。
  4. 进行推理:在测试阶段,使用训练好的学生模型进行预测。

        总体来说,蒸馏的目的是通过一种特殊的训练方法,将一个大模型的知识迁移到一个小模型中,以达到在小模型上取得与大模型相似甚至更好的性能的目的。

        蒸馏到底有用吗:极市开发者平台-计算机视觉算法开发落地平台

知识蒸馏网络通常有三部分构成:

  1. knowledge (知识)
  2. distillation algorithm (蒸馏算法)
  3. teacher-student architecture (老师-学生网络结构)

2.1 蒸馏知识:

        近年来的 KD 算法大多是依托于这三类基础算法进行的优化升级

2.1.1 Response-based KD(或者Logit-based)

        其主要思想是直接模仿教师模型的最终预测结果在得到教师和学生的 logits ((深度神经网络中最后一层的输出))后,使用温度系数T分别对教师和学生的 logits 进行“软化”,进而计算二者的差异

2.1.2 Feature-based KD

        通常的知识蒸馏设置中,教师模型与学生模型的分类器(或检测器、解码器等)是一致的,二者的差异在于特征提取器(或称 backbone、encoder)能力的强弱

        对于深度神经网络而言,由输入数据抽象而来的特征的质量高低,很大程度上决定了模型性能的优劣。自然而然地,以教师模型特征提取器产生的中间层特征为学习对象的 feature-based KD 算法应运而生

        该类别算法的核心关注点在于:

1)知识的定位(设计规则选出更为重要的教师特征,这一点在检测蒸馏算法中非常重要)

2)如何进行特征维度对齐、特征语义对齐、特征加权(connector 设计)

3)如何进行知识的高效传递(特征 fusion、loss 设计)

2.1.3 Relation-based KD

        最后一个蒸馏基础算法是 relation-based KD,有的研究者会将该类别算法视为 feature-based KD 算法的一种。原因在于 relation-based KD 使用的信息也是模型特征,只不过计算的不是对应特征点之间的一对一差异,而是特征关系的差异。

        relation-based KD 算法关心的重点是样本之间特征层之间的关系,如分别构建教师和学生特征层之间关系矩阵的 FSP [15] 算法、分别构建相同 batch 内教师和学生各样本特征之间关系矩阵的 RKD [16] 算法,二者均计算关系矩阵的差异损失。

        近年来,relation-based KD 算法在分割任务中不断取得突破。同一张图像中,像素点之间的特征关系差异或区域之间的特征关系差异成为蒸馏分割模型的有效手段。但在检测任务中 relation-based KD 算法取得的成果较少

        一个可能的原因在于,构建高质量的关系矩阵需要大量的样本,分类和分割(以像素点或区域为样本)任务的样本数量足够大;而受限于存储空间大小等硬件因素,检测任务同一个 batch 中的前景目标(object)数量较少且存在低质量前景目标(被遮挡的、模糊的物体等),因此制约了样本间关系蒸馏在检测任务上的应用

2.2 蒸馏策略

        根据教师模型是否在训练过程中一同更新,蒸馏方案可分为三种:离线蒸馏、在线蒸馏和自蒸馏

2.2.1 Offline Distillation

        离线蒸馏一般包含两个阶段:训练教师模型和蒸馏学生模型。其优点是简单容易实现,重点放在知识和蒸馏损失的设计上。缺点是无反馈、无法避免教师大模型的耗时训练、教师模型和学生模型存在gap、学生模型对教师模型依赖性强等。

2.2.2 Online Distillation

        在线蒸馏方案中教师模型和学生模型同时更新,整个蒸馏过程是端到端的

2.2.3 Self-Distillation

        自蒸馏方案中,教师模型和学生模型是同一个网络,这可以看作是在线蒸馏的一个特例。

        Zhang et al. (2019b) 的提出使用深层的知识来监督浅层的知识。Hou et al., 2019提出自注意力蒸馏用于车道线检测,其使用深层的attention-map来监督浅层。Yang et al., 2019b提出快照蒸馏,使用早期epoch的网络来监督当前epoch的网络

3.早融合和晚融合:

        早融合(Early fusion):就是在特征上进行融合,进行不同特征的连接,输入到一个模型中进行训练          早融合里的重要手段是concat和add

        晚融合:指的是在预测分数上进行融合,做法就是训练多个模型,每个模型都会有一个预测分数,我们对所有模型的结果进行融合,得到最后的预测结果。

Concat和torch.add(或+)区别:

       Concat 特征拼接,维数相加,而add是数值相加

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值