目标检测中的损失函数

损失函数是用来衡量模型与数据的匹配程度的,也是模型权重更新的基础。计算损失产生模型权重的梯度,随后通过反向传播算法,模型权重得以更新进而更好地适应数据。一般情况下,目标损失函数包含两部分损失,一个是目标框分类损失,一个是目标框定位损失,两者共同构成目标检测问题的损失形式。


文章目录

  • 1、分类损失
    • 1.1 交叉熵损失函数CE Loss
    • 1.2 标签平滑label smooth
    • 1.3 Focal loss
  • 2. 目标定位损失
    • 2.1 均方误差MSE(L2损失)
    • 2.2 平均绝对误差MAE(L1损失)
    • 2.3 smooth L1
    • 2.4 IoU损失函数
    • 2.5 GIoU损失函数
    • 2.6 DIoU损失函数
    • 2.7 CIoU损失函数
    • 2.8 RIoU损失函数
    • 2.9 EIoU与Focal-EIoU损失函数
    • 2.10 α-IoU损失函数


目标检测算法通用损失函数可写作:
在这里插入图片描述
它主要由目标框分类损失和目标框回归损失两部分组成,其中目标框回归损失部分只有IoU大于阈值η的样本才参与损失计算。


1、分类损失

分类损失是用来评价预测类别与实际类别的偏离程度的,早期像YOLOv1和YOLOv2就简单采用MSE/L2损失。后面大多采用交叉熵损失(Cross-Entropy Loss)。为提高分类效率,也为了提高模型泛化能力,解决噪声标签上的过信度(标注数据存在噪声,标签过度自信)问题,提出了标签平滑(Label Smooth);为了解决类别不平衡和分类难度差异问题,设计了焦点损失(Focal loss)。这些改进都是在CE Loss的基础上进行改进的。

1.1 交叉熵损失函数CE Loss

交叉熵损失函数(Cross-Entropy Loss)是机器学习和深度学习中常用的一种损失函数。它在神经网络中通常与 softmax 函数结合使用。softmax 函数将模型的原始输出转换为概率分布,而交叉熵损失函数则计算这个预测概率分布与真实概率分布之间的差异。这种组合在多分类问题中非常有效。它基于信息论中的交叉熵概念,用于衡量模型预测概率分布与真实标签分布之间的差异。

介绍交叉熵先得从信息量,信息熵再到相对熵说起。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。信息是用来消除随机不确定性的,信息量的大小与信息发生的概率成反比。概率越大,包含的信息量越小,概率越小,包含的信息量越大。如“明天太阳从东边升起”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起的,这是一句废话,信息量为0。“明天在天上能看见彩虹”,我们都知道,要想看见彩虹,需要一定条件的,比如要同时有水汽和阳光等,所以从直觉上,这条信息具有一定信息量的。

信息量
设某一件事发生的概率为p(x),其信息量为:I(x) = -log(p(x))
其中I(x)表示信息量,这里log表示以e为底的自然对数,以2为底则表示对应bit数的信息量。
信息熵
信息熵也被称为熵,用于表示某件事可能发生所包含的所有信息量的期望。这个期望的计算方式为每件事发生的概率乘以每件事的信息量之和。可用公式表示为:
在这里插入图片描述
比如我们要求得明天天气的信息熵,根据今天天气的情况,我们预测明天是晴天的概率为0.7,明天是雨天的概率是0.1,明天是阴天的概率是0.2,则明天的天气信息熵可计算为:
H(x) = -(0.7xlog(0.7))+0.1xlog(0.1)+0.2xlog(0.2))
相对熵(KL散度)
相对熵或者叫KL散度通常用于衡量同一个随机变量X的两个独立概率分布P(x)与Q(x)之间的差异,可用公式表示为:
在这里插入图片描述
由公式可知,当P(x)与Q(x)分布非常接近时,Dkl越接近于零,所以机器学习或者深度学习中可以利用KL散度作为损失函数,通过训练模型的预测分布Q(x),使其慢慢逼近训练数据分布P(x),进而使得两个分布的KL散度值达到最小。
交叉熵
将上面KL散度公式展开:
在这里插入图片描述
公式后面的H(p||q)即为分布P(x)与Q(x)的交叉熵,所以:
在这里插入图片描述
在机器学习有监督训练网络时,输入数据与标签常常是已经确定好的,所以训练数据的真实概率分布P(x)其实是已知的,那么对应的信息熵H(x)就可以计算出来,是一个常量;前面我们介绍KL散度时已经表明KL散度值表示真实概率分布P(x)与模型预测概率分布Q(x)之间的差异,值越小代表两者差异越小,所以可以把最小化KL散度值当做模型优化的目标,而现在交叉熵等于KL散度值加一个常量(信息熵H(x)),而且交叉熵计算公式更简单,所以用最小化交叉熵代替最小化KL散度作为模型优化的目标函数是现在常用做法。


1.2 标签平滑label smooth

因为标签可能存在错误标注(噪声标签),为了避免过度信任噪声标签而导致模型过拟合,所以提出了标签平滑技术,即将hard label变成soft label,对于ont-hot编码,原来是1的位置变成1-α,其他原来为0的位置变成α/(k-1),α通常取值为0.1,k为类别数量。例如,一个3分类任务,且真实标签为q,预测概率p是由网络最后一层输出经过softmax变换得到,则交叉熵损失可表示为:
在这里插入图片描述
对于标签q=[0,1,0]通过标签平滑后,变成q’=[0.05, 0.9, 0.05],原来的交叉熵损失为:
CEori = -log(p1),而通过标签平滑后,交叉熵损失变成了:
CE = -(0.05log(p0)+0.9log(p1)+0.05log(p2))


1.3 Focal loss

Focal loss是在2017年目标检测论文RetinaNet中提出的,用于控制目标检测中正负样本框的平衡问题;RetinaNet指出,在单阶段密集目标检测算法中,例如SSD,有1万到10万个候选框,但是里面有目标的正样本占的比例非常少,剩余的全为负样本。正负样本不平衡会导致两个问题:一是模型学习不高效,可能学习到大量简单的负样本,这对于模型学习没有多大用处。二是简单的负样本会压制模型训练,导致模型能力退化。
Focal Loss是为one-stage的检测器的分类分支服务的,它支持0或者1这样的离散类别label。
目的是解决样本数量不平衡的情况:
1)正样本loss增加,负样本loss减小
2)难样本loss增加,简单样本loss减小
一般分类时,通常使用的交叉熵损失函数如下:
在这里插入图片描述
为了解决正负样本不平衡问题,通常在交叉熵损失前面加一个参数α,用于控制对应类别损失的大小。比如负样本多,那就减小负样本前面的参数以降低负样本的权重,正样本少,就增大正样本前面的参数以增加正样本的权重。用公式可表示为:
在这里插入图片描述
虽然通过增加参数α可以平衡了正样本/负样本的重要性,但它区分不了简单样本和困难样本,在单阶段目标检测算法中,有大量的简单样本,这就导致损失大部分其实是由简单样本所主导。所以作者提出,要重新构造损失函数以降低简单样本的权重,从而将训练重点放在困难负样本上。

Focal loss认为,易区分的简单样本(即置信度高的样本)对模型学习的贡献小,可以调低它们的权重,模型应该重点关注那些难以区分的困难样本(即置信度低的样本),公式如下:
在这里插入图片描述
为了同时平衡正负样本问题,Focal loss还结合了加权交叉熵的参数,所以两者结合后得到了最终的Focal loss为如下公式:
在这里插入图片描述


2. 目标定位损失

目标定位损失,用于优化位置和尺寸偏差,是目标检测算法中特有的损失函数,算法最终检测得准不准,很大程度上归功于目标框定位损失设计得好不好。目标框有四个角点一个中心点,早期像YOLOv1检测算法,就是通过直接回归目标框的四个角点得到定位损失的,后面改进到smooth L1,再到IoU损失,进一步出现GIoU,DIoU,CIoU,RIoU,EIoU等变体。

2.1 均方误差MSE(L2损失)

均方误差(Mean Square Error, MSE)通常用于回归损失函数中,它表示预测值f(x)与真实目标值y之间差值平方和的均值,可用如下公式表示:
在这里插入图片描述
MSE曲线如下图所示,在f(x)等于y时,损失值最小为0。
在这里插入图片描述
它的优点是曲线连续光滑,处处可导。缺点是不太稳定,由于平方的原因,会将误差放大,容易受到异常值影响,当函数的输入值(f(x)-y)偏离中心点较远时,梯度会变得非常大,在训练初期不稳定;在接近于真实值的时候即(f(x)-y)值接近于0时,曲线却变得十分的平缓,甚至可能会出现梯度趋向于0的情况,这就造成训练速度变慢。
均方误差在很多地方也被称为L2损失,和误差平方和损失(Sum Square Error, SSE)也是一样的效果。
下图是YOLOv1的损失函数构成:
在这里插入图片描述
可以看到YOLOv1的损失由三部分组成,localization loss,objectness loss和classification loss,它们均采用L2损失。


2.2 平均绝对误差MAE(L1损失)

平方绝对误差也是常用于回归的一种损失函数,MAE用于衡量预测值f(x)与真实目标值y的误差绝对值之和,对于一组预测值,通常求它们的平均绝对误差,用下面公式可表示为:
在这里插入图片描述
它的导数是常数,当f(x)-y大于0时,导数为1,当f(x)-y小于0时,导数为-1,当f(x)-y等于0时,不可导。
在这里插入图片描述
它的优点是拥有稳定的梯度,对于异常值没有L2损失那么敏感,因为MAE计算的是误差的绝对值,对于任意大小的误差,MAE对误差的惩罚都是一样的。缺点是导数为常数,在训练后期,x 很小时(对应上图f(x)-y值很小), 如果学习率不变,损失函数会在最优值附近波动,很难收敛到最优值。MAE也经常被叫做L1损失函数。


2.3 smooth L1

从梯度求解及模型收敛方面考虑,MSE是优于MAE的,因为MSE处处可导,且梯度值是动态变化的,能达到快速收敛的目的。对于异常值敏感度方面考虑,MAE是优与MSE的,它不会由于误差大而加大对异常值的惩罚,从而让模型更新偏向于拟合异常值。结合两者的优势,就是smooth L1了,顾名思义,smooth L1就是平滑的L1损失函数,公式如下:
在这里插入图片描述
SmoothL1曲线如下图所示,可以看到对比L1损失曲线,在0点处,SmoothL1更平滑,它优化了L1损失函数在0点处不可导的缺点,并保持了L1损失函数对异常值不敏感的优点。
在这里插入图片描述
在Fast RCNN的定位损失中作者采用了Smooth L1损失,公式如下:
在这里插入图片描述
作者指出,Smooth L1是更鲁棒的L1,相比于R-CNN以及SPPnet中使用的L2损失,当回归目标框无边界时,具有L2损失的训练可能需要仔细调整学习梯度,以防止梯度爆炸。但是Smooth L1由于保持了L1对异常值不敏感的优势,避免了这个问题。
所以Smooth L1相对于L1损失而言,它可以收敛得更快,误差小时,梯度会减小,不会产生震荡;相对于L2损失而言,对于异常值不敏感,梯度变化稳定,训练时不易产生梯度爆炸。


2.4 IoU损失函数

论文:UnitBox: An Advanced Object Detection Network
IoU损失首次出现是在2016年的UnitBox论文中,用于人脸检测。作者提到作为对比的DenseBox人脸检测算法利用特征图的每个像素来回归一个4-D的距离向量(当前像素与包含它的候选对象的四个边界之间的距离)。然而,DenseBox采用的L2损失,违背了矩形框四个点是相关的,作者认为应该联合回归。此外,DenseBox为了平衡不同尺度的边界框,还要求将训练图像补丁调整为固定比例。因此,DenseBox必须对图像金字塔进行检测,这不可避免地影响了框架的效率。于是作者提出了更高效的IoU损失函数。两个框的IoU以及L2距离计算方式如下:
在这里插入图片描述
因为IoU的大小分布是[0,1]这一特性,所以我们可以把IoU看作是从伯努利分布中一种随机抽样的变量,论文中采用的损失函数是把IoU当做交叉熵的输入:
在这里插入图片描述
与L2 loss相比,可以看到IoU loss将边界框视为一个整体变量,而不是像L2 loss那样独立优化四个坐标。
现在用得更多是IoU损失是 LIoU = 1-IoU
IoU代表预测框和真实框的交集与并集之比,当预测框与真实框完全重合时,IoU就等于1,这时LIoU就等于0,优化LIoU,使其越小,说明预测框越来越接近真实框。
总之,IoU损失相对于L2损失有如下优势:
1、L2损失把预测框坐标当做互相独立的四个变量进行训练,而IoU损失将预测框作为一个整体进行训练,这样得到的结果更准确;
2、无论输入的样本是什么样子,IoU的值均介于 [0,1],这种天然的归一化的损失使模型具有更强的处理多尺度图像的能力。
3、相对于L2损失,IoU损失收敛速度更快,相同误识率下,召回率更高,如下图所示:
在这里插入图片描述
4、L2损失对多尺度敏感,但IoU损失对于多尺度不敏感。如下图所示:
在这里插入图片描述

IoU作为损失函数也存在如下问题:
1、如果预测框和真实框没有重叠,则两者的IoU值为零,这并不能反映两者之间的距离。
2、当两个框不重叠时,IoU损失为1,为常数,则梯度为0,无法进行参数优化更新。


2.5 GIoU损失函数

论文:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
由于IoU作为损失函数存在框不重叠情况下无法优化的问题,所以作者提出了通用IoU损失,即GIoU(Generalized Intersection over Union),使得即使预测框与真实框不重叠的情况下,依然能计算损失,依然能让预测框尽可能朝着真实框的位置移动,GIoU的计算方式如下:
在这里插入图片描述
相对于IoU,GIoU需要找出框A与框B的最小闭包矩形框C,当两个框A,B不重叠时,IoU等于0,则可以通过闭包框C和AB并集的差集与闭包框C的比值来计算损失值大小。如下图,各个值代表的区域如下:
在这里插入图片描述
上图中红框代表框A与框B的最小闭包框C,GIoU主要解决框AB不重叠情况下,无法更新的问题,可以看到,当框AB不重叠情况下,GIoU = 0-|C-AUB|/|C|,随着,框A与框B的距离越来越远,GIoU会越来越接近-1。所以GIoU不仅可以关注框的重叠区域大小,而且还可以关注其他非重叠区域大小,能较好反映出两个框直接的距离。
GIoU也有不足之处:
1、对每一对预测框与真实框均需要计算最小闭包框,整个计算过程比IoU增加了耗时,而且收敛慢。
2、当一个框完全包含另一个框时,GIoU退化成了IoU,还是不能反映两个框的距离远近。

而GIoU损失,论文参考常用的IoU损失,采用了1-GIoU作为损失函数,即:
LGIoU = 1-GIoU
由于GIoU的范围是[-1, 1],所以GIoU损失LGIoU的取值范围是[0, 2]。


2.6 DIoU损失函数

论文:Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
DIoU(Distance-IoU)通过简单地在IoU损失上添加一个惩罚项,直接最小化两个边界框中心点之间的归一化距离,可以得到比GIoU损失更快的收敛速度,如下图所示:
在这里插入图片描述
用GIoU loss优化,预测框通常会首先被增大用于覆盖真实框,然后随着迭代次数增加再慢慢减小预测框。而DIoU loss优化是直接最小化两个框中心点的归一化距离。
除了收敛快的优点,DIoU还解决了上一节提到的GIoU在两个框存在包含问题时退化成IoU不能体现两者距离的问题,如下图所示:
在这里插入图片描述
上图中真实框完全包含预测框时,即使预测框在真实框内部三个不同位置处,IoU大小也是一样的,同样,GIoU此时退化成IoU,其大小也和IoU一样,即两个框存在包含关系时,IoU、GIoU无法体现两个框的位置远近关系。而DIoU却能得到不一样的数值用于体现两个框的位置远近关系。
DIoU也可以应用在NMS中,在抑制冗余预测方面比原有NMS具有更高的鲁棒性。
作者基于IoU损失新增加了一个惩罚项,如下:
在这里插入图片描述
其中R(B, Bgt)代表新增加的基于预测框B和真实框Bgt的惩罚项
作者定义的DIoU计算公式为:
在这里插入图片描述
其中b和bgt代表预测框B和真实框Bgt的中心点,ρ(.)代表求欧式距离,c代表两个框的最小外接矩形的对角线长度。如下图所示:
在这里插入图片描述
所以DIoU损失函数定义如下:
在这里插入图片描述
作者认为一个好的边界框回归损失函数应该考虑三个重要的几何因素,即重叠面积、中心点距离和宽高比。通过统一边界框坐标,IoU损失考虑了重叠区域,GIoU损失严重依赖于IoU损失,等同于只考虑了重叠区域。DIoU损失是同时考虑边界框的重叠面积和中心点距离。然而,边界框宽高比的一致性也是一个重要的几何因素,这点DIoU损失没有考虑到,如下图,当预测框在真实框内部,且两者中心点距离一致时,DIoU大小是一样的,这样就无法体现谁回归得好了。
在这里插入图片描述


2.7 CIoU损失函数

CIoU损失和DIoU损失是在同一篇论文提出的,是对DIoU损失的一个改进,改进了DIoU损失没有考虑到矩形框宽高比的情况,CIoU的计算公式如下:
在这里插入图片描述
可以看到CIoU的计算方式是在DIoU的基础上增加了αν,其中α是一个平衡参数,ν表示宽高比一致性评估指标,其公式如下:
在这里插入图片描述
α参数定义如下:
在这里插入图片描述
所以CIoU损失函数的计算公式如下:
在这里插入图片描述
CIoU损失和DIoU损失对比GIoU以及IoU损失可以明显加快收敛速度,如下图,是作者做的实验对比,可以看到CIoU和DIoU在50次迭代就基本收敛到很小的值了,而GIoU和IoU需要迭代大量的次数,IoU迭代200次甚至不能得到一个较小的误差。
在这里插入图片描述
作者在论文的实验部分,将YOLOv3,SSD,Faster R-CNN的损失函数由IoU、GIoU替换成DIoU和CIoU以及CIoU with DIoU NMS,结果表明均带来性能提升。

通过αν的公式可以看出,CIoU依然存在不足之处:
1、若预测框和真实框的宽高比相同时,则αν这个新增的惩罚项为0,CIoU将退化成DIoU,存在不合理之处。
2、从论文中给出的ν对w和h的求导公式可以看出,如下图,w和h是一对相反数,无法同时增大或减小,这抑制了模型的优化。
在这里插入图片描述
即:
在这里插入图片描述
3、由于ν只反映了两个框宽高比的差异,所以CIoU损失可能以不合理的方式优化相似性。比如:CIoU可能只关注两个框之间宽高比的相似性,而忽略两个框实际大小的差异。如下图所示,随着迭代次数增加,预测框(红框)与真实框(蓝框)的距离在拉进,且预测框的宽高比也在逐渐趋近于真实框的宽高比,但是预测框的大小还是没有趋近于真实框的大小,还得通过增加迭代次数进一步优化。
在这里插入图片描述


2.8 RIoU损失函数

论文:Single-Shot Two-Pronged Detector with Rectified IoU Loss
作者在文中指出,现如今的检测算法大多采用特征金字塔用于缓解目标实例间尺度变化的问题。这些目标检测器通过自上而下的路径和横向连接来增强特征,主要是为了丰富底层特征的语义信息,但是忽略了高层特征的增强。这可能导致不同级别特征之间的不平衡,特别是高层级特征中严重缺乏底层详细信息,这使得难以获得准确的边界框。所以作者在网络中引入了双向转换思想,从前向和后向两个方向探索不同层之间的关系,从而丰富了低层特征的语义信息和高层特征的细节信息。作者设计的网络被命名为TPNet( Two-Pronged Network)。

此外,由于单阶段检测器中难易样本的分布不平衡,定位损失梯度往往被定位精度较差的难样本(即IoU小的样本)所主导。这将使模型偏向于学习难样本而导致难以收敛。因此,在TPNet中,提出了一种基于自适应IoU的定位损失,称为RIoU(Rectified IoU)损失,对每一类样本的梯度进行整流。RIoU损失增大了高IoU样本的梯度,抑制了低IoU样本的梯度,从而提高了模型的整体定位精度。
TPNet的整体框架如下,主要包含T block和Fusion block两种模块,作用是促进了低层特征和高层特征的特征融合,这里不展开陈述了。
在这里插入图片描述
这里聊聊RIoU损失函数,作者意识到在单阶段中存在大量的难样本,这里的难样本是anchor boxes与真实标注框存在较低的IoU值,大量的难样本会贡献大部分的梯度用来模型优化,这就导致模型训练不稳定,难以收敛的问题。因为IoU值小的困难样本是占大多数的,IoU值大的简单样本只占少部分,作者的想法是直接根据IoU值大小自适应调整样本梯度的贡献量,将简单样本(IoU值大)的梯度增大,让网络更关注这些样本,而将难样本(IoU值小)的梯度抑制。这样会使得每种类型的样本的贡献更均衡,训练过程更高效和稳定。
已知IoU损失函数公式如下:
在这里插入图片描述
对IoU求导得到:
在这里插入图片描述
从IoU损失函数对IoU求导结果可以看出,IoU损失对IoU值大的简单样本和对IoU值小的困难样本得到的梯度都是一样的,一视同仁,而通常情况下,低IoU值的样本数量大于高IoU值的样本数量。所以在训练阶段,困难样本就会主导localization loss的梯度,进而影响坐标框回归的优化。

作者的想法是随着IoU值增大,增加样本梯度的权重,但是也不能一味的增大,比如当IoU值为1时,即anchor box与真实框完全重合时,这个时候样本贡献的梯度应该为0。所以,作者给出了IoU值与梯度的关系如下图所示:
在这里插入图片描述
上图红色曲线即为RIoU损失的梯度形式,它随着IoU值增加,梯度值也增加,待IoU增大到β后(文中β取值为0.95),梯度值急剧下降。红色曲线是双曲线函数,可通过a,b,c,k四个参数定义如下:
在这里插入图片描述
对上式进行积分并结合边框回归损失的性质可得到RIoU损失的公式为:
在这里插入图片描述
RIoU与IoU损失曲线如下图所示,当IoU<β时曲线是凸型,当IoU>β时曲线是凹型。
在这里插入图片描述
最后作者也在SSD检测算法上验证了RIoU损失函数的效果:
在这里插入图片描述


2.9 EIoU与Focal-EIoU损失函数

论文:Focal and Efficient IOU Loss for Accurate Bounding Box Regression
该论文指出现如今边界框回归损失函数存在的两点不足:
1、基于L2范数的损失函数和基于IoU的损失函数都不能有效地描述边界框回归的目标,从而导致收敛缓慢和回归结果不准确。
2、大多数边界框回归损失函数都忽略了样本不平衡问题,因为大部分的anchor boxes与真实框仅有小部分重叠,但是会贡献大部分的边框回归优化梯度,这是不合理的。
EIoU也是同时考虑了重叠面积,中心点距离和宽高比三个因素,公式如下:
在这里插入图片描述
其中wc与hc分别代表两个框最小外接矩形C的宽和高,与CIoU损失不同的是,EIoU直接减小了预测框与真实框宽度和高度的差值,使得收敛速度更快,定位效果更好。
下面是GIoU、CIoU、EIoU三个损失函数定义以及迭代收敛速度对比:
在这里插入图片描述
在这里插入图片描述
可以看到,在迭代150次以内,EIoU能快速收敛到最佳。

和上一节RIoU一样,EIoU的作者也意识到了边框回归中存在的样本不均衡问题,即高质量的IoU值大的样本只占少部分,而大部分均是低质量低IoU值的困难样本,模型更新梯度被大部分低质量样本所主导,作者想提升高质量样本梯度所占的权重,于是提出了Focal-EIoU损失,其公式如下:
在这里插入图片描述
公式中γ是一个超参数,用于控制对低IoU值困难样本的抑制程度,作者做了消融实验得出γ=0.5时,性能最佳,如下图所示。因为IoU值是[0, 1]的小数,γ越大,则IoUγ值越小,且对较小IoU值抑制越强;较大的γ值对困难样本的抑制作用较强,可能会减慢收敛速度。这也是当γ = 2.0时,性能比较差的原因。
在这里插入图片描述
下图是各种IoU损失随着迭代次数增加边框回归损失减小和学习样本的分布情况,可以看出,Focal-EIoU收敛最快且随着迭代次数增加,倾向于学习高IoU值的样本。
在这里插入图片描述
下表是作者基于RetinaNet(ResNet-50+FPN)为基准,评估各个IoU损失的消融实验:
在这里插入图片描述


2.10 α-IoU损失函数

论文:Alpha-IoU: A Family of Power Intersection over Union Losses for Bounding Box Regression

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RandLA-Net PB 模型 测试

tensorflow ckpt 模型 转换 pb 模型, 测试模型是否正确, 后续实现 c++ 部署。 Code: https://github.com/QingyongHu/RandLA-Net 测试PB 模型 RandLANetConvert.py import tensorflow.compat.v1 as tf tf.disable_v2_behavior

R语言中的plumber介绍

R语言中的plumber介绍 基本用法常用 API 方法1. GET 方法2. POST 方法3. 带路径参数的 GET 方法 使用 R 对数据进行操作处理 JSON 输入和输出运行 API 的其他选项其他功能 plumber 是个强大的 R 包&#xff0c;用于将 R 代码转换为 Web API&#xff0c;通过使用 plumber&#x…

PowerJob做定时任务调度

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、区别对比二、使用步骤1. 定时任务类型2.PowerJob搭建与部署 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; PowerJob是基于java开…

如何优化抖音直播间数据?

在数字驱动的时代&#xff0c;缺乏精准的数据支撑&#xff0c;任何线上活动都难以形成有效的流量循环。特别是在抖音直播这一领域&#xff0c;深入理解并优化核心数据&#xff0c;是提升直播效果、吸引并留住观众的关键。那么&#xff0c;抖音直播平台在评估一场直播时&#xf…

【重学 MySQL】四十六、创建表的方式

【重学 MySQL】四十六、创建表的方式 使用CREATE TABLE语句创建表使用CREATE TABLE LIKE语句创建表使用CREATE TABLE AS SELECT语句创建表使用CREATE TABLE SELECT语句创建表并从另一个表中选取数据&#xff08;与CREATE TABLE AS SELECT类似&#xff09;使用CREATE TEMPORARY …

安装最新 MySQL 8.0 数据库(教学用)

安装 MySQL 8.0 数据库&#xff08;教学用&#xff09; 文章目录 安装 MySQL 8.0 数据库&#xff08;教学用&#xff09;前言MySQL历史一、第一步二、下载三、安装四、使用五、语法总结 前言 根据 DB-Engines 网站的数据库流行度排名&#xff08;2024年&#xff09;&#xff0…

【Redis】持久化(上)---RDB

文章目录 持久化的概念RDB手动触发自动触发bgsave命令的运行流程RDB文件的处理RDB的优缺点RDB效果展示 持久化的概念 Redis支持AOF和RDB两种持久化机制,持久化功能能有效的避免因进程退出而导致的数据丢失的问题,当下次重启的时候利用之前持久化的文件即可实现数据恢复. 所以此…

一键生成PPT的AI工具-Kimi!

一键生成PPT的AI工具-Kimi&#xff01; 前言介绍Kimi为什么选择Kimi如何使用Kimi在线编辑PPT下载生成的PPT自己编辑 结语 &#x1f600;大家好&#xff01;我是向阳&#x1f31e;&#xff0c;一个想成为优秀全栈开发工程师的有志青年&#xff01; &#x1f4d4;今天不来讨论前后…

启动hadoop后没有 NodeManager和 ResourceManager

跟着黑马网课学下去时发现我的hadoop启动后没有NodeManager和ResourceManager 找到日志的路径 我在/export/server/hadoop/etc/hadoop/hadoop-env.sh文件里配置了日志存放的路径 这里找到你的日志路径&#xff0c;每个人的习惯和看的教程不同&#xff0c;日志放的地方大概率也…

对象比较工具类:实现对业务的修改记录保存(对象字段差异对比)

测试 1&#xff1a;User类 Data NoArgsConstructor AllArgsConstructor public class User {FieldLabel("姓名")private String name;FieldLabel("年龄")private Integer age;FieldLabel("手机")private String phone;FieldLabel("手机号…

OpenEBS 实现 PV 动态持久化存储安装

什么是 OpenEBS OpenEBS 将 Kubernetes 工作节点可用的任何存储转换为本地或复制的 Kubernetes 持久卷。OpenEBS 可帮助应用程序和平台团队轻松部署需要快速、高持久性、可靠且可扩展的容器原生存储的Kubernetes 有状态工作负载。 安装OpenEBS 1.所有节点安装iSCSI启动器 yu…

PostgreSQL学习笔记四:GUI管理工具

PostgreSQL 是一款广泛使用的开源关系数据库管理系统&#xff0c;拥有许多图形用户界面&#xff08;GUI&#xff09;工具来帮助用户更高效地管理数据库。以下是一些流行的 PostgreSQL 管理工具&#xff1a; pgAdmin&#xff1a; 一个流行的开源 PostgreSQL GUI 工具&#xff0c…

Graph知识图谱融入向量数据库,带来RAG效果飞升

01. 前言 随着大型语言模型&#xff08;LLMs&#xff09;在各种应用中的广泛使用&#xff0c;如何提升其回答的准确性和相关性成为一个关键问题。检索增强生成&#xff08;RAG&#xff09;技术通过整合外部知识库&#xff0c;为LLMs提供了额外的背景信息&#xff0c;有效地改…

Linux-sed和gawk

文本处理-sed编辑器 文本处理-gawk程序 文本处理-sed编辑器基础 文本处理-sed编辑器基础-使用地址 文本处理-sed编辑器基础-删除行 文本处理-sed编辑器基础-插入和附加文本 文本处理-sed编辑器基础-修改行/转换命令 文本处理-sed编辑器基础-回顾打印-打印行/打印行号/列出行 文…

「OC」NSArray的底层逻辑和遍历方法

「OC」NSArray的底层逻辑和遍历方法 文章目录 「OC」NSArray的底层逻辑和遍历方法前言NSArray的底层逻辑占位符init后的空NSArray只有单个元素的NSArray大于一个元素的NSArray可变数组NSMutableArray总结图片 遍历NSArray1. for循环2. 枚举3.for—in4. 多线程1.for 循环&fo…

MES管理系统对中小企业有哪些帮助

MES管理系统解决方案对中小企业具有显著的帮助&#xff0c;主要体现在以下几个方面&#xff1a; 一、提升生产效率 MES管理系统能够实时监控生产过程&#xff0c;提供准确的生产数据和及时的反馈。这种实时监控与数据分析能力&#xff0c;使中小企业能够精准把握生产脉搏&…

华为---MUX VLAN简介及示例配置

目录 1. 产生背景 2. 应用场景 3. 主要功能 4. 基本概念 5. 配置步骤及相关命令 6.示例配置 6.1 示例场景 6.2 网络拓扑图 6.3 配置代码 6.4 配置及解析 6.5 测试验证 配置注意事项 1. 产生背景 MUX VLAN&#xff08;Multiplex VLAN&#xff09;提供了一种通过VLA…

【JavaScript】JavaScript 与 V8

浏览器中运行 html 和 css 代码&#xff1a; html 和 css 执行过程&#xff1a; js 由 js 引擎&#xff08;比如现在最为主流的 V8&#xff09;执行。 高级的编程语言都是需要转成最终的机器指令来执行的&#xff1b;事实上我们编写的JavaScript无论你交给浏览器或者Node执行&…

升级 OpenSSL 的详细步骤(解决 SSH 漏洞的前提)

目录 前言1. 准备工作1.1 安装必要的依赖1.2 下载 OpenSSL 源码 2. 解压和配置2.1 解压文件2.2 配置编译参数 3. 编译和安装3.1 编译源码3.2 安装 OpenSSL 4. 验证安装5. 解决 SSH 漏洞的必要性6. 结语 前言 在信息安全的时代&#xff0c;服务器的安全性至关重要。特别是在互联…

高被引算法GOA优化VMD,结合Transformer-SVM的轴承诊断,保姆级教程!

本期采用2023年瞪羚优化算法优化VMD&#xff0c;并结合Transformer-SVM实现轴承诊断&#xff0c;算是一个小创新方法了。需要水论文的童鞋尽快&#xff01; 瞪羚优化算法之前推荐过&#xff0c;该成果于2023年发表在计算机领域三区SCI期刊“Neural Computing and Applications”…