当前位置: 首页 > news >正文

Wise-IoU:基于动态聚焦机制的边界框回归损失

文章目录

  • 摘要
  • 简介
    • A. ln−norm损失
    • B.交集/并集
    • C.聚焦机制
  • 相关工作
    • A. BBR的损失函数
    • B.带FM的损失函数
  • 方法
    • 仿真实验
    • B.梯度消失问题的解决方法
    • C.提出的方法
  • 实验
    • A.实验设置
    • B.消融实验
  • 结论

摘要

论文地址:https://arxiv.org/abs/2301.10051
GitHub:https://github.com/Instinct323/wiou
边界盒回归(BBR)的损失函数是目标检测的关键。它的良好定义将为模型带来显著的性能改进。现有的大部分工作都假设训练数据中的样例质量较高,侧重于加强BBR损失的拟合能力。如果盲目地在低质量的实例上加强BBR,将会危及本地化性能。为了解决这一问题,提出了Focal-EIoU v1,但由于其静态聚焦机制(FM),非单调FM的潜力没有得到充分发挥。在此基础上,我们提出了一种基于动态非单调调频的Wise-IoU (WIoU)欠条损失算法。动态非单调调频算法用离群度代替借据来评价锚盒的质量,并提出了一种明智的梯度增益分配策略。这种策略降低了高质量锚盒的竞争力,同时也减少了低质量示例产生的有害梯度。这使得WIoU可以专注于普通质量的锚盒,并提高探测器的整体性能。当WIoU应用于最先进的实时探测器YOLOv7时,MS-COCO数据集上的AP75从53.03%提高到54.50%。代码可从https://github.com/Instinct323/wiou获得。

简介

YOLO系列的实时探测器自问世以来已得到大多数研究人员的认可,并应用于许多场景[1]-[6]。如YOLOv1[7],构造了一个以BBR损失、分类损失和客体性损失为加权的损失函数。到目前为止,该结构仍然是目标检测任务中最有效的损失函数范式[7]-[14],其中BBR损失直接决定了模型的定位性能。为了进一步提高模型的定位性能,设计良好的BBR损耗是必不可少的

A. ln−norm损失

对于锚框B⃗=[xywh]\vec{B}=\left[\begin{array}{llll}x & y & w & h\end{array}\right]B=[xywh],其中的值对应于包围框的中心坐标和大小。类似地,Bgt→=[xgtygtwgthgt]\overrightarrow{B_{g t}}=\left[\begin{array}{lllll}x_{g t} & y_{g t} & w_{g t} & h_{g t}\end{array}\right]Bgt=[xgtygtwgthgt]描述了目标框的属性。

YOLOv1[7]和YOLOv2[8]在BBR损失的定义上非常相似。YOLOv2将BBR损失定义为:
L(B⃗,Bgt→)=∣∣B⃗−Bgt→∣∣(1)L\left(\vec{B}, \overrightarrow{B_{g t}}\right)=|| \vec{B}-\overrightarrow{B_{g t}}|| \tag{1} L(B,Bgt)=∣∣BBgt∣∣(1)

但是这种形式的损失函数并不能屏蔽包围盒大小的干扰,使得YOLOv2[8]对于小目标的定位性能较差。虽然YOLOv3[9]构造了2−wgthgt2−w_{gt}h_{gt}2wgthgt试图减少模型对大物体的关注,但这种BBR损失给模型带来的定位性能仍然非常有限。

B.交集/并集

在目标检测任务中,利用交并比[15] (IoU)度量锚框与目标框的重叠程度。它以比例的形式有效屏蔽了包围盒大小的干扰,使得模型在使用LIoU\mathcal{L}_{I o U}LIoU(公式2)作为BBR损失时能够很好地平衡大目标和小目标的学习。
LIoU=1−IoU=1−WiHiSu(2)\mathcal{L}_{I o U}=1-I o U=1-\frac{W_{i} H_{i}}{S_{u}} \tag{2} LIoU=1IoU=1SuWiHi(2)

然而,LIoU\mathcal{L}_{I o U}LIoU有另一个致命的缺陷,可以在等式3中观察到,当∂LIoU∂Wi=0\frac{\partial \mathcal{L}_{I o U}}{\partial W_{i}}=0WiLIoU=0当边界框之间没有重叠时(Wi=0W_i = 0Wi=0Hi=0H_i = 0Hi=0),由LIoU\mathcal{L}_{I o U}LIoU反向传播的梯度消失。因此,重叠区域Wi的宽度(图1)无法在训练过程中更新。
在这里插入图片描述

∂LIoU∂Wi={−HiIoU+1Su,Wi>00,Wi=0(3)\frac{\partial \mathcal{L}_{I o U}}{\partial W_{i}}=\left\{\begin{aligned} -H_{i} \frac{I o U+1}{S_{u}}, W_{i} & >0 \\ 0, W_{i} & =0 \end{aligned}\right. \tag{3} WiLIoU=HiSuIoU+1,Wi0,Wi>0=0(3)

现有的工作[16]-[19]考虑了与边界框相关的许多几何因素,并构造了惩罚项Ri\mathcal{R}_{i}Ri来解决该问题。现有的BBR损失如下:
Li=LIoU+Ri(4)\mathcal{L}_{i}=\mathcal{L}_{I o U}+\mathcal{R}_{i} \tag{4} Li=LIoU+Ri(4)

C.聚焦机制

在这里插入图片描述

图2显示了训练数据中一些质量较低的例子。当一个性能良好的模型为低质量的示例生成高质量的锚框时,它将产生较大的LIoU\mathcal{L}_{I o U}LIoU。如果单调FM为这些锚框分配较大的梯度增益,则模型的学习将受到损害。

在[18]中,Zhang等人提出了使用非单调FM的Focal-EIoU v1。Focal-EIoU v1的FM f(LIoU)f(\mathcal{L}_{I o U})f(LIoU)是静态的,它指定了锚盒的边界值,使得LIoU\mathcal{L}_{I o U}LIoU等于边界值的锚盒具有最高的梯度增益。Focal-EIoU v1没有注意到锚盒的质量评价体现在相互比较中。它没有充分利用非单调FM的潜力。

通过估计锚框的离群程度,定义动态FM f(β)f(β)f(β)β=LIoULIoUβ =\frac{\mathcal{L}_{I o U}}{\mathcal{L}_{I o U}}β=LIoULIoU。FM通过将较小的梯度增益分配给具有较小β的高质量锚框,使BBR能够专注于普通质量的锚框。同时,该机制将较小的梯度增益分配给具有较大β的低质量锚框,有效削弱了低质量样本对BBR的危害。

我们将这种wise FM与基于iou的损失相结合,称之为wise - iou (WIoU)。为了评估所提出的方法,将WIoU融入到最新的实时检测器YOLOv7[11]中。本文的主要贡献总结如下:

  • 本文提出了基于注意力机制的损失函数WIoU v1用于BBR,在仿真实验中取得了比SOAT的SIoU[19]更低的回归误差。
  • 设计了具有单调FM的WIoU v2和具有动态非单调FM的WIoU v3。得益于动态非单调FM的明智梯度增益分配策略,WIoU v3取得了优越的性能。
  • 对低质量样本的影响进行了一系列详细的研究,证明了动态非单调FM的有效性和效率。

相关工作

A. BBR的损失函数

为了弥补l2-范数损失的尺度敏感性,YOLOv1[7]通过对边界框大小进行平方根变换来削弱大边界框的影响。YOLOv3[9]提出构建一个惩罚项来降低大盒子的竞争力。然而,l2-范数损失忽略了边界框属性之间的相关性,使得这类BBR损失效果较差。

为解决IoU损失的梯度消失问题,GIoU[16]采用最小包围盒构造的惩罚项。DIoU[17]使用由距离度量构造的惩罚项,CIoU[17]在DIoU的基础上加入长宽比度量得到。Gevorgyan构造了具有角度代价、距离代价和形状代价的SIoU[19],具有更快的收敛速度和更好的性能。

B.带FM的损失函数

交叉熵损失被广泛应用于二分类任务中。然而,这个损失函数的一个显著特性是,即使是简单的示例也会产生很大的损失值,与困难的示例竞争。Lin等人提出了基于单调FM的focal loss[20],有效降低了简单样本的竞争力。

在[18]中,Zhang等人提出了非单调FM的Focal-EIoU v1和单调FM的Focal-EIoU。在他们的实验中,单调调频比非单调调频是一个更好的选择。

Focal-EIoU v1的FM是静态的,它规定了锚框的质量划分标准。当锚框的IoU损失等于约束值时,它给锚框提供最高的梯度增益。由于没有注意到锚框的质量评价体现在相互比较中,因此没有充分挖掘非单调FM的潜力。

方法

仿真实验

在这里插入图片描述
为了初步比较各种损失函数对BBR的影响,我们使用Zheng等人提出的模拟实验[17]进行评估。我们在(0.5,0.5)处生成具有7个宽高比(即1:4,1:3,1:2,1:1,2:1,3:1,4:1)的目标框(所有区域为1/32)。在以(0.5,0.5)为中心,半径为r的圆形区域内均匀生成20000r2个定位点。每个锚点放置49个锚盒,7个比例(1/32、1/24、3/64、1/16、1/12、3/32、1/8)和7个宽高比(1:4、1:3、1:2、1:1、2:1、3:1、4:1)。每个锚框需要与每个目标框拟合,回归情况为6860000r2。为了比较不同时期的收敛速度,我们设置了以下实验环境:
1)r = 0.5时,锚框分布在目标框覆盖区域内外(图4a),对应于BBR内的所有情况。

2)r = 0.1时,在目标框的覆盖范围内生成锚框(图4b),对应于BBR中的主要情况

我们还将损失值定义为Li‾\overline{\mathcal{L}_{i}}Li整体回归案例,并使用学习率为0.01的梯度下降算法对其进行优化。

B.梯度消失问题的解决方法

现有的BBR损失[16]-[19]是基于加法的,遵循公式4所示的范式。

Distance IoU:Zheng等人定义RDIoU[17]为两个边界框中心点之间的归一化距离:
RDIoU=(x−xgt)2+(y−ygt)2Wg2+Hg2(5)\mathcal{R}_{D I o U}=\frac{\left(x-x_{g t}\right)^{2}+\left(y-y_{g t}\right)^{2}}{W_{g}^{2}+H_{g}^{2}} \tag{5} RDIoU=Wg2+Hg2(xxgt)2+(yygt)2(5)

该项不仅解决了LIoU\mathcal{L}_{IoU}LIoU的梯度消失问题,而且作为一个几何因子。RDIoU\mathcal{R}_{D I o U}RDIoU允许DIoU在面对具有相同LIoU\mathcal{L}_{IoU}LIoU的锚框时做出更直观的选择。

∂RDIoU∂Wg=−2Wg(x−xgt)2+(y−ygt)2(Wg2+Hg2)2<0∂RDIoU∂Hg=−2Hg(x−xgt)2+(y−ygt)2(Wg2+Hg2)2<0(6)\begin{array}{l} \frac{\partial \mathcal{R}_{D I o U}}{\partial W_{g}}=-2 W_{g} \frac{\left(x-x_{g t}\right)^{2}+\left(y-y_{g t}\right)^{2}}{\left(W_{g}^{2}+H_{g}^{2}\right)^{2}}<0 \\ \frac{\partial \mathcal{R}_{D I o U}}{\partial H_{g}}=-2 H_{g} \frac{\left(x-x_{g t}\right)^{2}+\left(y-y_{g t}\right)^{2}}{\left(W_{g}^{2}+H_{g}^{2}\right)^{2}}<0 \end{array} \tag{6} WgRDIoU=2Wg(Wg2+Hg2)2(xxgt)2+(yygt)2<0HgRDIoU=2Hg(Wg2+Hg2)2(xxgt)2+(yygt)2<0(6)
同时,RDIoU\mathcal{R}_{D I o U}RDIoU为最小包围盒的大小提供了负梯度,这会使WgW_gWgHgH_gHg增大,阻碍锚框和目标框的重叠。但不可否认的是,距离度量确实是一种非常有效的解决方案,成为BBR、[18]、[19]的必要度量。在此基础上,Zhang等人增加了对距离度量的惩罚,提出了EIoU [18]:
REIoU=RDIoU+(x−xgt)2Wg2+(y−ygt)2Hg2(7)\mathcal{R}_{E I o U}=\mathcal{R}_{D I o U}+\frac{\left(x-x_{g t}\right)^{2}}{W_{g}^{2}}+\frac{\left(y-y_{g t}\right)^{2}}{H_{g}^{2}} \tag{7} REIoU=RDIoU+Wg2(xxgt)2+Hg2(yygt)2(7)

Complete IoU: Zheng等人在RDIoU的基础上增加了对长宽比的考虑,提出了RCIoU [17]:
RCIoU=RDIoU+αv,α=vLIoU+v(8)\mathcal{R}_{C I o U}=\mathcal{R}_{D I o U}+\alpha v, \alpha=\frac{v}{\mathcal{L}_{I o U}+v} \tag{8} RCIoU=RDIoU+αv,α=LIoU+vv(8)

其中vvv表示长宽比的一致性:
v=4π2(tan⁡−1wh−tan⁡−1wgthgt)2(9)v=\frac{4}{\pi^{2}}\left(\tan ^{-1} \frac{w}{h}-\tan ^{-1} \frac{w_{g t}}{h_{g t}}\right)^{2} \tag{9} v=π24(tan1hwtan1hgtwgt)2(9)

∂v∂w=8π2(tan⁡−1wh−tan⁡−1wgthgt)2hh2+w2∂v∂h=−8π2(tan⁡−1wh−tan⁡−1wgthgt)2wh2+w2(10)\begin{array}{l} \frac{\partial v}{\partial w}=\frac{8}{\pi^{2}}\left(\tan ^{-1} \frac{w}{h}-\tan ^{-1} \frac{w_{g t}}{h_{g t}}\right)^{2} \frac{h}{h^{2}+w^{2}} \\ \frac{\partial v}{\partial h}=-\frac{8}{\pi^{2}}\left(\tan ^{-1} \frac{w}{h}-\tan ^{-1} \frac{w_{g t}}{h_{g t}}\right)^{2} \frac{w}{h^{2}+w^{2}} \end{array} \tag{10} wv=π28(tan1hwtan1hgtwgt)2h2+w2hhv=π28(tan1hwtan1hgtwgt)2h2+w2w(10)
在这里插入图片描述

Zhang等[18]认为CIoU的不合理性在于∂v∂h=−wh∂v∂w\frac{\partial v}{\partial h}=-\frac{w}{h} \frac{\partial v}{\partial w}hv=hwwv,这意味着v不能为锚框的宽度w和高度h提供同符号的梯度。在之前对DIoU的分析中,可以看到RDIoU会产生一个负梯度∂RDIoU∂Wg\frac{\partial \mathcal{R}_{D I o U}}{\partial W_{g}}WgRDIoU(等式6)。当这个负梯度正好抵消LIoU在锚框上生成的梯度时,锚框将不会被优化。CIoU对纵横比的考虑将打破这一僵局(图3b)。

Scylla IoU: Gevorgyan[19]证明了向中对齐的锚框具有更快的收敛速度,并从角度成本、距离成本和形状成本3个方面构建SIoU。

角度成本描述了中心点(图1)与x-y轴之间的最小角度:
Λ=sin⁡(2sin⁡−1min⁡(∣x−xgt∣,∣y−ygt∣)(x−xgt)2+(y−ygt)2+ϵ)(11)\Lambda=\sin \left(2 \sin ^{-1} \frac{\min \left(\left|x-x_{g t}\right|,\left|y-y_{g t}\right|\right)}{\sqrt{\left(x-x_{g t}\right)^{2}+\left(y-y_{g t}\right)^{2}}+\epsilon}\right) \tag{11} Λ=sin2sin1(xxgt)2+(yygt)2+ϵmin(xxgt,yygt)(11)

当中心点对齐于x轴或y轴时,Λ\LambdaΛ = 0。当中心点的连接在x轴的45°处时,Λ\LambdaΛ = 1。该项可以引导锚框向目标框的最近轴线漂移,减少BBR的总自由度。

距离代价描述中心点之间的距离,其惩罚值与角度代价正相关。距离代价定义为:
Δ=12∑t=w,h(1−e−γρt),γ=2−Λ(12)\Delta=\frac{1}{2} \sum_{t=w, h}\left(1-e^{-\gamma \rho_{t}}\right), \gamma=2-\Lambda \tag{12} Δ=21t=w,h(1eγρt),γ=2Λ(12)
{ρx=(x−xgtWg)2ρy=(y−ygtHg)2(13)\left\{\begin{array}{l} \rho_{x}=\left(\frac{x-x_{g t}}{W_{g}}\right)^{2} \\ \rho_{y}=\left(\frac{y-y_{g t}}{H_{g}}\right)^{2} \end{array}\right. \tag{13} ρx=(Wgxxgt)2ρy=(Hgyygt)2(13)
形状成本描述了边界框之间的大小差异。当边界框的大小不一致时,Ω≠0\Omega \neq 0Ω=0。它的定义如下:
Ω=12∑t=w,h(1−eωt)θ,θ=4(14)\Omega=\frac{1}{2} \sum_{t=w, h}\left(1-e^{\omega_{t}}\right)^{\theta}, \theta=4 \tag{14} Ω=21t=w,h(1eωt)θ,θ=4(14)
{ωw=∣w−wgt∣max⁡(w,wgt)ωh=∣h−hgt∣max⁡(h,hgt)(15)\left\{\begin{aligned} \omega_{w} & =\frac{\left|w-w_{g t}\right|}{\max \left(w, w_{g t}\right)} \\ \omega_{h} & =\frac{\left|h-h_{g t}\right|}{\max \left(h, h_{g t}\right)} \end{aligned}\right. \tag{15} ωwωh=max(w,wgt)wwgt=max(h,hgt)hhgt(15)

RSIoUR_{SIoU}RSIoURCIoUR_{CIoU}RCIoU类似,它们都由距离代价和形状代价组成:
RSIoU=Δ+Ω(16)\mathcal{R}_{S I o U}=\Delta+\Omega \tag{16} RSIoU=Δ+Ω(16)
由于RSIoU\mathcal{R}_{S I o U}RSIoU对距离度量的惩罚随着形状代价的增加而增加,因此使用SIoU训练的模型具有更快的收敛速度和更低的回归误差。

C.提出的方法

由于训练数据中不可避免地包含低质量样本,距离、长宽比等几何因素会加重对低质量样本的惩罚,从而降低模型的泛化性能。一个好的损失函数应该在锚框与目标框重合较好的情况下削弱几何因素的惩罚,较少的训练干预会使模型获得更好的泛化能力。在此基础上,构建了距离注意力(Eq. 17),得到了具有两层注意力机制的WIoU v1:

  • RWIoU∈[1,e)\mathcal{R}_{W I o U} \in[1, e)RWIoU[1,e),将显著放大普通质量锚框的LIoU\mathcal{L}_{I o U}LIoU
  • LIoU∈[0,1]\mathcal{L}_{I o U} \in[0,1]LIoU[0,1],当锚框与目标框重合较好时,将显著减少高质量锚框的RWIoU\mathcal{R}_{W I o U}RWIoU,并减少其对中心点之间距离的关注。

LWIoUv1=RWIoULIoURWIoU=exp⁡((x−xgt)2+(y−ygt)2(Wg2+Hg2)∗)(17)\begin{array}{l} \mathcal{L}_{W I o U v 1}=\mathcal{R}_{W I o U} \mathcal{L}_{I o U} \\ \mathcal{R}_{W I o U}=\exp \left(\frac{\left(x-x_{g t}\right)^{2}+\left(y-y_{g t}\right)^{2}}{\left(W_{g}^{2}+H_{g}^{2}\right)^{*}}\right) \end{array} \tag{17} LWIoUv1=RWIoULIoURWIoU=exp((Wg2+Hg2)(xxgt)2+(yygt)2)(17)
在这里插入图片描述

其中WgW_gWg;HgH_gHg为最小包围盒的尺寸(图1)。为了防止RWIoU\mathcal{R}_{W I o U}RWIoUU产生阻碍收敛的梯度,WgW_gWg;HgH_gHg与计算图形分离(上标∗表示这种操作)。因为它有效地消除了阻碍收敛的因素,所以没有引入新的指标,如宽高比。

通过III-A中提到的仿真实验,我们比较了不使用FMs时BBR损耗的性能。从图6的结果可以得出如下结论:

  1. 在现有工作中提到的一系列BBR损失中,SIoU[19]收敛速度最快。
  2. 对于BBR中的主要情况,所有BBR损失具有极其相似的收敛速度。由此可见,收敛速度的差异主要来自于不重叠的边界框。提出的基于注意力机制的WIoU v1在这方面效果最好。
    在这里插入图片描述

从focal loss中学习:Lin et al.[20]为交叉熵设计了一个单调FM,有效地降低了容易的样本对损失值的贡献。因此,该模型可以专注于极端的例子,获得分类性能的提升。为LWIoUv1\mathcal{L}_{W I o U v1}LWIoUv1构造了单调聚焦系数LIoUγ∗\mathcal{L}_{I o U}^{\gamma *}LIoUγ
LWIoUv2=LIoUγ∗LWIoUv1,γ>0(18)\mathcal{L}_{W I o U v 2}=\mathcal{L}_{I o U}^{\gamma *} \mathcal{L}_{W I o U v 1}, \gamma>0 \tag{18} LWIoUv2=LIoUγLWIoUv1,γ>0(18)

由于聚焦系数的加入,WIoU v2反向传播的梯度也发生了变化:
∂LWIoUv2∂LIoU=LIoUγ∗∂LWIoUv1∂LIoU,γ>0(19)\frac{\partial \mathcal{L}_{W I o U v 2}}{\partial \mathcal{L}_{I o U}}=\mathcal{L}_{I o U}^{\gamma *} \frac{\partial \mathcal{L}_{W I o U v 1}}{\partial \mathcal{L}_{I o U}}, \gamma>0 \tag{19} LIoULWIoUv2=LIoUγLIoULWIoUv1,γ>0(19)

注意,梯度增益是r=LIoUγ∗∈[0,1]r=\mathcal{L}_{I o U}^{\gamma *} \in[0,1]r=LIoUγ[0,1]。在模型训练过程中,梯度增益随着LIoU\mathcal{L}_{I o U}LIoU的减小而减小,导致在训练后期收敛速度慢。因此,引入LIoU\mathcal{L}_{I o U}LIoU的均值作为归一化因子:
LWIoUv2=(LIoU∗L‾IoU)γLWIoUv1(20)\mathcal{L}_{W I o U v 2}=\left(\frac{\mathcal{L}_{I o U}^{*}}{\overline{\mathcal{L}}_{I o U}}\right)^{\gamma} \mathcal{L}_{W I o U v 1} \tag{20} LWIoUv2=(LIoULIoU)γLWIoUv1(20)
其中LIoU‾\overline{\mathcal{L}_{I o U}}LIoU是动量m\mathrm{m}m的运行平均值。动态更新归一化因子使梯度增益r=(LLoU ∗LIoU‾)γr= \left (\frac{\mathcal{L}_{\text {LoU }}^{*}}{\overline{\mathcal{L}_{I o U}}}\right)^ {\gamma}r=(LIoULLoU )γ整体保持在较高水平,解决了训练后期收敛速度慢的问题。

动态非单调FM:锚框的离群度由LIoU\mathcal{L}_{I o U}LIoULIoU‾\overline{\mathcal{L}_{I o U}}LIoU的比值表征:
β=LIoU∗LIoU‾∈[0,+∞)(21)\beta=\frac{\mathcal{L}_{I o U}^{*}}{\overline{\mathcal{L}_{I o U}}} \in[0,+\infty) \tag{21} β=LIoULIoU[0,+)(21)

小的离群度意味着锚框是高质量的。为其分配一个小的梯度增益,以便将BBR集中在普通质量的锚框上。此外,将小的梯度增益分配给离群度大的锚框,将有效防止来自低质量示例的大的有害梯度。我们利用β构造了一个非单调聚焦系数,并将其应用于WIoU v1:
LWIoUv3=rLWIoUv1,r=βδαβ−δ(22)\mathcal{L}_{W I o U v 3}=r \mathcal{L}_{W I o U v 1}, r=\frac{\beta}{\delta \alpha^{\beta-\delta}} \tag{22} LWIoUv3=rLWIoUv1,r=δαβδβ(22)
在这里插入图片描述

β=δ\beta = \deltaβ=δ时,δ\deltaδ使r=1r=1r=1。如图8所示,锚点框的离群度满足β=C\beta =Cβ=C (C为常数值)时,梯度增益最大。由于LIOU‾\overline{\mathcal{L}_{I O U}}LIOU是动态的,所以锚框的质量划分标准也是动态的,这使得WIoU v3可以在每一个时刻做出最符合当前情况的梯度增益分配策略。

为防止在训练早期阶段留下低质量的锚框,初始化LIoU‾=1\overline{\mathcal{L}_{I o U}}=1LIoU=1,使LIoU=1\mathcal{L}_{I o U}=1LIoU=1的锚框享有最高的梯度增益。

为了在训练初期保持这种策略,需要设置一个较小的动量m,以延迟LIoU‾\overline{\mathcal{L}_{I o U}}LIoU接近真实值LIoU−real \mathcal{L}_{I o U-\text { real }}LIoU real 的时间。对于数据批次数为n的训练,我们建议将动量设置为:

m=1−0.5tn,tn>7000(23)m=1-\sqrt[t n]{0.5}, t n>7000 \tag{23} m=1tn0.5,tn>7000(23)

这样的设置使得LIoU‾=0.5(1+LIoU−real‾)\overline{\mathcal{L}_{I o U}}=0.5\left(1+\overline{\mathcal{L}_{I o U-\text {real}}}\right)LIoU=0.5(1+LIoUreal)在t次训练之后。

在训练中后期,WIoU v3将较小的梯度增益分配给低质量的锚框,以减少有害梯度。同时,重点介绍了普通质量的锚框,以提高模型的定位性能。

实验

在这里插入图片描述
在这里插入图片描述

A.实验设置

为了公平的比较,我们所有的实验都是在PyTorch框架[21]上执行的。对于数据集,我们在MS-COCO数据集[22]中选择了20个类别,并选择28474张图像作为训练数据,1219张图像作为验证数据。对于模型,我们选择层通道倍数为0.75的YOLOv7-w6[11]进行训练。对模型进行了120个不同BBR损失的训练。

YOLOv7探测头生产的锚箱主要由两部分组成:先导头锚箱(ABLH)和辅助头锚箱(ABAH)。ABLH拟合结果更好,信息更少,ABAH则相反。如果只计算ABLH的均值,会导致ABAH的梯度增益逐渐消失,使得FM忽略了ABAH丰富的信息量。因此,我们的平均统计量包括ABLH和ABAH。

B.消融实验

我们将FMs应用于BBR损失,以研究FMs对基于加法的损失的影响。版本2的这些BBR损失使用γ = 0.5的设置,以对准Focal-EIoU[18]的单调FM。他们的版本3使用了本文提出的动态非单调调频。

结论

在本文中,我们观察到训练数据中的低质量示例会阻碍目标检测模型的泛化。现有的研究大多局限于静态调焦机构,没有充分发挥非单调调焦机构的潜力。虽然他们提倡的单调调频可以提高定位性能,但并不能解决这个问题。我们提出了一种动态非单调调频,可以降低高质量锚盒的竞争力,并掩盖低质量示例的影响。

在消融研究中,我们表明动态非单调调频能使模型具有更好的泛化性能。由于WIoU v1具有注意机制对惩罚项的调整,因此WIoU v1与动态非单调FM之间的相互作用可以使模型获得显著的性能提升。

在对比研究中,WIoU v3训练的模型在某些类别的精度上取得了显著的提高。同时,由于数据标注质量较低,也降低了一些类别的精度。

在有限的参数下学习合适的知识是实时探测器成功的关键。WIoU v3通过权衡低质量示例和高质量示例的学习,提高了检测器的整体性能。


相关文章:

  • 打印机怎么连接电脑?您只需要这样做!
  • Coredump 调试
  • Leetcode区间列表的交集
  • ArrayList有参构造源码解读
  • 第十一章 镜像架构和规划 - 自动故障转移机制详解
  • list(链表)干货归纳+用法示例
  • 后缀自动机、广义后缀自动机备忘录
  • python基础+详细的列表内容讲解+小案例实现
  • sql语法:浅谈DML
  • MySQL查询流程
  • 美团爬虫总结
  • Linux系统调用之pipe函数
  • JetPack Compose之Modifier修饰符
  • pytorch中.data与.item(),.numpy(),.detach(),.cuda(),.cpu()的作用
  • 基于springboot实现地方废物回收机构管理系统演示【附项目源码】
  • 秒验 手机号码置换接口
  • day17 正则表达式总结
  • 一周 AIGC 丨马云回国首谈 ChatGPT,AIGC 用于旅游宣传片
  • C语言课设项目-51单片机-LED灯
  • 计算机网络高频60问 背完差不多了!!
  • Android - mipmap 和 drawable 的区别?
  • 【满血Buff】ChatGPT科普篇,三段式介绍,内含各种高效率插件
  • 「计算机网络」浅谈HTTP和HTTPS、HTTP2(概述、区别与联系)
  • Gen-LaneNet论文精读总结
  • 有1,2,3,4四位数字,能组成多少不同的三位数,分别是什么?
  • springboot第8集:示例代码案例详细解释内容
  • 基于springboot实现车辆充电桩管理系统演示分享
  • leetcode110:平衡二叉树
  • PhotoZoom Pro2023免费版图形图像放大工具
  • Ubuntu显卡报错:Failed to initialize NVML Driver/library version mismatch
  • Android 截屏实现的几种方式
  • adb shell am和pm命令参数详解
  • 让ChatGPT帮我写shell脚本, 结局很感人
  • Springboot项目如何设计接口中敏感字段的加密、解密
  • 数据工程:ELT 工作流中的 6 个步骤
  • JAVASpring的AOP
  • C++ 变量命名规则
  • 数据库 CI/CD 工具 -- Bytebase 介绍
  • 合创科技设计师你要知道黄金比例字体设计
  • 谈判、删除字符、质因数分解、质数
  • 【Linux】网络基础(一)
  • Eclips快捷键大全(超详细)
  • 使用MeshLab软件处理pcd点云文件
  • Java设计模式-9 、策略模式
  • k8s容器集群工作负载节点跨越多个云计算厂商
  • DolphinDB StreamEngineParser 解析原理介绍
  • node-express框架
  • 小白学Pytorch系列--Torch.nn API Transformer Layers(9)
  • 设置和获取中断向量,很清楚嗷
  • CentOS、Ubuntu配置NTP服务器以及内网如何手动配置系统时间
  • SQL count和sum的使用
  • 在深圳,CPDA数据分析师证书怎么考取?
  • 17_pyqt环境搭建
  • 带自适应交叉算子的遗传算法求解具有访问约束的多旅行商问题
  • MySQL-四大类日志
  • Python实现得到乱序列表排序后的新下标
  • Android Hilt依赖注入框架
  • 会议室使用什么样的LED屏效果会比较好?
  • java源码阅读 - TreeSet
  • python【正则表达式】
  • QT自定义类中setStyleSheet设置样式无效
  • Doo Prime 德璞资本:稳定的期货交易系统应该包括哪些方面?
  • 【机器学习】逻辑回归(非常详细)
  • 《程序员面试金典(第6版)》面试题 08.04. 幂集(回溯算法,位运算,C++)不断更新
  • ChatGPT-英语练习第一天-2023.3.24
  • CHAPTER 6 Jenkins常见问题整理及解决
  • 问题解决:Excel 判断语句_绝对值_清除表格格式
  • 1.5 从0开始学Unity游戏开发--创建第一个物体
  • 【python】虚拟屏幕实现selenium截图的两种方法介绍
  • 记录es的URI search搜索方式
  • axios讲解
  • BC12 字符圣诞树
  • ElasticSearch 管理界面以及常用的命令
  • 系统集成项目管理工程师案例分析考点汇总(进度管理)
  • 【面试专栏】Guava - ListenableFuture,避免Future获取阻塞问题,增加回调
  • GameFramework框架详解之 Sound声音管理
  • Python方法:@staticmethod和@classmethod
  • Effective C++学习笔记(4)
  • 05-正则表达式语法
  • 用Owncast构建直播服务器
  • 世界棒球经典赛:美国队在冠军赛中输给了日本队
  • BAT大厂Java岗面经,靠着它逆风翻盘斩获了心仪的offer
  • led小间距显示屏在会议室使用有什么优势
  • 看雪学习笔记-[原创]EXP编写学习 之 栈溢出(一)
  • 无线网络渗透测试系列学习(三) - [信息收集] 网络扫描基础和对三种协议(ICMP/TCP/UDP)的简单学习
  • 操作系统如何区分可执行文件之elf文件分析
  • 设计模式---装饰模式
  • Golang每日一练(leetDay0019)
  • 数据结构|AOE网活动的最早、最迟发生时间及关键路径问题
  • Koin在KMM与Android Jetpack Compose中的应用
  • 速卖通、Shopee、阿里国际、亚马逊卖家如何通过自己养号给店铺测评?
  • Nginx——openresty配置与实战
  • 图扑软件加入“元宇宙支撑技术与场景驱动创新联合体”
  • 如何检查 Docker 镜像是否存在漏洞
  • 在chatgpt火热浪潮下的思考
  • 1.11 日本蜡烛图技术之头肩线和K线环境分析
  • 【Vue2从入门到精通】详解Vue数据双向绑定原理及手动实现双向绑定
  • 银行数字化转型导师坚鹏:如何有效推进银行数字化转型工作
  • 线段树 push_down 操作
  • 大数据|MapReduce模型 | Hadoop MapReduce的基本工作原理
  • 电动玩具UL696测试项目有哪些?
  • 单向环形链表的增删改查C++完整实现
  • mysql事务与引擎
  • 动力节点王鹤SpringBoot3学习笔记——JDK的新特性
  • java源码阅读 - HashSet
  • 大数据数据仓库环境准备
  • [Vulfocus解题系列]Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)
  • 向量组是否相关与行列式,方程组,秩的联系。
  • 文本三剑客练习题
  • ccc-pytorch-卷积神经网络实战(6)
  • 工人工服识别检测系统 yolov7
  • Java实现查找文件
  • 一种新的改进的混合蛙跳算法(SFLA)(Matlab代码实现)
  • python使用正则表达式re
  • AI绘画stable diffusion webui汉化教程,参数解析以及界面介绍
  • SpringBoot 将PDF转成图片或Word
  • 从 1000+ 参赛项目突围,涛思数据荣获 ITEC 2022 全球创业赛成长组二等奖
  • 论文阅读:Adversarial Cross-Modal Retrieval对抗式跨模式检索
  • java基础面试题(五)
  • 前端面试题之html css篇
  • 四大排序算法之选择排序
  • 中断的分类,中断指令,中断类型码,中断向量表,中断优先级 总结
  • 插入排序(C/C++)
  • K8s管理页面
  • 新功能发布 | TSMaster工具箱集成开发环境系列2-工具箱极简开发流程
  • android 7zip库的编译
  • 我们的DDoS攻击防御解决方案
  • 将一个正整数分解质因数。
  • SELinux零知识学习一、初识
  • 【GPT4】微软 GPT-4 测试报告(3)GPT4 的编程能力
  • Git常用指令
  • FrIf-如何配置FlexRay 作业列表【配置参数FrIfCluster->FrIfJobList->FrIfJob】
  • 【C/C++实现生产者消费者模式】
  • Python爬虫中使用Cookie实现登录的方法
  • 关于加解密、加签、验签等
  • 在idea中编写JSP文件中无法使用request对象的方法
  • 对GPT及未来人机融合智能的思考
  • Sql Server Management Studio连接Mysql
  • 骨传导蓝牙耳机排行榜10强,盘点几款性能高的骨传导耳机
  • kafka日志回收的详解及使用
  • DaVinci Resolve Studio 18(达芬奇调色剪辑)破解版安装图文教程
  • idea远程debug服务器项目
  • 湖南互联网医院资质申请条件|代办互联网医院牌照
  • 111111111111111111111
  • 年轻人月薪4k和月薪4w的区别,绝不是靠上香拜佛摆地摊!
  • 360周鸿祎又“开炮”:GPT 6-8就将产生自主意识!我们来测算一下对错
  • docker 部署go项目
  • 算法练习随记(三)
  • 12_Linux中的无人值守安装脚本 kickstart
  • 认证机构被注销/撤销,我的证书还有效吗?答案来了!
  • 【python手动实现】汉字转base64编码(附源码)
  • 使用python进行股票数据爬取中的时间限制和策略
  • 刷完这60个标准库模块,成为Python骨灰级玩家
  • 『Linux从入门到精通』第 ⑪ 期 - Linux调试器——gdb使用详解
  • 38. 外观数列
  • pyinstaller打包最小体积安装python程序 命令行传参执行
  • 科大奥瑞物理实验——干涉法测微小量
  • 分布式事务之本地消息表解决方案(跨地区转账实际案例)
  • CRM客户管理系统不被销售接受的五大原因
  • 【计组】主存的扩展
  • ChatGPT再掀AI资本狂潮,30位科技创新VC投资者齐聚“实在智能”
  • 容器中安装python3.7.9
  • 通过postgres_fdw实现跨库访问
  • Thinkphp 6.0路由的定义
  • 快乐数(力扣刷题)
  • 【大数据安全-Kerberos】一篇文章搞定Kerberos认证
  • 渗透测试之哥斯拉实战
  • Linux/Ubuntu系统如何安装cudnn?(适用于所有40系显卡 4090 4080 4070)
  • AI + Kubernetes 赋能DevSecOps 的思考
  • OS调度算法
  • C++ Primer阅读笔记--C++11新标准总结1
  • IDS、恶意软件、免杀技术、反病毒技术、APT、对称加密、非对称加密以及SSL的工作过程的技术介绍
  • Ansys Zemax | 如何导入CAD物体
  • 夜深该学习了,Python绘制饼状图对商品库存进行分析
  • 基于springboot实现大学生租房系统演示【附项目源码】
  • C++ 多线程学习
  • 51单片机(串口通信、蓝牙)
  • linux获取系统信息
  • 虹科分享 | CAN中继器/路由器能够在BESS(电池储能系统)中发挥怎样的作用?
  • 为什么说人员管理是成功交付项目的关键?
  • 基于springboot实现福聚苑社区团购演示【项目源码】
  • rust的示例IO命令行程序结构优化过程
  • 爬虫CrawlSpider原理
  • C++空间配置器
  • 复旦微的 FMQL45T900+ARM
  • Parallels Desktop 18安装Windows系统后没网解决方案
  • 远程桌面解决方案 OpenText™ Exceed™ TurboX (ETX 12.5)最新版本新功能
  • 前后端分离之跨域
  • 38-二叉树练习-LeetCode145二叉树的后序遍历
  • 立体声骨传导蓝牙耳机哪款好一点,分享几款优秀的骨传导耳机
  • ThreeJS-全屏和退出全屏、自适应大小(五)
  • 互联网随想(三) 光纤与电路交换
  • 【测试开发篇7】web自动化--selenium音标: [sɪˈliːnɪəm]
  • 实测GPT的算法编程正确性
  • dp+思维(字符的贡献)
  • 卷积:计算机的眼睛
  • 【MySQL高级篇】第09章_性能分析工具的使用
  • 和开振学Spring boot 3.0之Spring MVC:②使用JSON
  • Android 命令发送广播
  • 全国计算机等级考试二级Java模拟试卷
  • 数据中台通用体系架构
  • python获取文本的行列长度并比较
  • 【Idea】建立Scale框架
  • mac电脑能恢复安卓手机丢失的数据吗?
  • 【极简、无废话、非翻译】Flask+vue例子
  • 《程序员面试金典(第6版)》面试题 08.03. 魔术索引
  • webview src已修改但页面不刷新
  • 【MySQL】MVCC多版本并发控制(重点:MVCC实现原理之ReadView)
  • 关于kylin系统鲲鹏芯片编译qt5.9.9源码中fontconfig包的处理
  • 嵌入式C语言语法概述
  • MATLAB调用特定的环境python
  • ChatGPT,云服务商们的全新“云”阵地?
  • 心血来潮写一个React的九宫格抽奖组件
  • 说说Keep-Alive | Pipelining | Content-Length | Transfer Encoding
  • 新六级听力通关特性
  • Winform控件开发(23)——FlowLayoutPanel(史上最全)
  • 科大奥瑞物理实验——霍尔效应实验
  • 【Elastic (ELK) Stack 实战教程】06、Filebeat 日志收集实践(下)
  • 进程回收的实现方式与注意事项:Linux C/C中的回收机制
  • Vue3跨级组件通讯—依赖注入
  • OpenCv —— Vs2017编译Tesseract-OCR
  • VLM BLIP和BLIP2
  • 数论作业 —— 同余理论
  • 小驰私房菜_02_Qcom 高通平台 新增加driver,需要准备哪些东西?
  • 20230329英语学习
  • python课堂笔记——函数
  • 自己实验中用到的evo命令
  • 新生儿动脉自旋标记(ASL)灌注
  • 基于pytorch实现猫狗分类系统
  • mac下编译ncnn和ncnn中的pnnx
  • vue对象、数组响应式——$set||splice
  • 【学习笔记】http 1 / s / 2 / 3
  • qt 编译器 调试器
  • Spring Cloud Sentinel实战(三)- Sentinel流控规则
  • 【LeetCode每日一题:1641. 统计字典序元音字符串的数目 | 从暴力递归=>记忆化搜索=>动态规划】
  • 在ubuntu中,如何开机自启动一个有界面程序
  • python 定时任务触发(时序模型)
  • 【面试专栏】Java5 - CompletionService,将异步执行与获取结果分离
  • U盘实现——U 盘枚举过程
  • 【数据结构】TopK,堆排序, --堆的初始化与应用
  • ijkplayer 源码分析(1):初始化流程
  • 【算法】Raft算法详解
  • JVM 的 noverify 启动参数
  • 【八】一文带你迅速掌握阻塞队列
  • NFC设备接口ESD防静电新方案
  • KubeVela 1.7 版本解读:接管你的已有工作负载
  • lotus-miner Fees PC2 C2上链gas设置
  • var let区别
  • Thinkphp 6.0多对多关联查询
  • 安信可VC-02离线语音模块SDK之Linux环境搭建
  • 长安链TBFT支持随机函数类交易删除的实现
  • Umi‘s Friends——突破GameFi传统,游戏界新的P2E潮流先锋
  • PMU530负荷管理分支装置(电能质量监测装置)暨新型电力负荷管理终端|智能量测终端|低压分支监测单元四种应用方案
  • 【Linux系统:进程控制】
  • 【华为OD机试 2023最新 】 计算网络信号、信号强度(C++ 100%)
  • 用于微服务通信的 HTTP 与消息传递
  • 注解和Predicate组合拓展
  • 新目标大学英语综合教程1-4
  • hello案例的引入、模板语法、数据绑定、el与data的两种写法
  • 英语练习第三天-2023.03.26
  • git pull git push的详细使用
  • AOP概念及代码演示
  • gitee创建仓库提交项目流程
  • Python股票交易决策 - 计算收益率并控制风险
  • 咳、咳、咳,“百日咳”发病率正在上升
  • 【面试题】面试官:判断图是否有环?
  • PHPStorm Git提交忽略文件/文件夹
  • Redis安装和配置
  • DFIG控制4:网侧变换器控制
  • 第十一届“泰迪杯”数据挖掘挑战赛第四场赛前指导直播预告
  • IntelliJ IDEA 快捷键大全
  • 【学习经验分享NO.22】PyTorch环境搭建
  • git -- 如何切换到指定的历史版本,对其开发
  • 数字化转型导师坚鹏:银行如何建设行业领先的人才培训管理体系
  • 数据中台对于企业来讲意味着什么?_光点科技
  • LeetCode303_303. 区域和检索 - 数组不可变
  • MySQL实战45讲——08|事务到底是隔离的还是不隔离的?
  • C语言测试五
  • 总结803
  • 基于Java+Springboot+vue的汽车租赁系统设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】
  • 港科夜闻|香港科大公布合规科技研究,就强化行业发展提出多项建议
  • 24、Android -- Retrofit 基础学习
  • 从零入门激光SLAM(四)——ROS自定义编程
  • tensorflow2基础到实战(1)-概述
  • 【学习笔记】计算机视觉与深度学习(6.视觉识别任务)
  • 100种思维模型之黑板去沙思系思维模型-42
  • JAVA企业电子采购系统源码:采购过程更规范,更透明
  • 认识文件系统
  • ReduxToolkit的使用
  • String源码深度刨析
  • 51单片机(IIC协议OLED屏)
  • 前端相关知识(CSS)(3)(美化页面效果)
  • ZLMediaKitVs2022编译
  • 个人练习-Leetcode-659. Split Array into Consecutive Subsequences
  • C语言的灵魂---指针(进阶)
  • 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点
  • Python基础语法18--枚举定义和访问
  • 【Unity】动态生成圆环体Mesh
  • 2023年度闵行区科技创业新锐企业申报的通知
  • 助老助残轮椅系统设计——FreeRTOS版本程序
  • 基于Spring、SpringMVC、MyBatis的超市管理系统
  • 3/27~3/28总结
  • 【Linux】缓冲区的理解
  • 1.初步认识 TypeScript
  • 1.11 从0开始学习Unity游戏开发--移动你的相机
  • MySQL数据库——数据管理技术的3个发展阶段
  • C基础学习之C 可变参数
  • ZeusAutoCode代码生成工具(开源)
  • Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化
  • 【Spring】Bean对象的存取
  • Linux下安装NVIDIA显卡驱动的注意事项和相关内容点
  • 国企央企OFFER收割全攻略 | 银行篇之性格测评
  • 亚商投资顾问 早餐FM/0329大型光伏基地选址建设
  • final类又没实现接口应该用哪一种代理, jdk动态代理还是cglib代理
  • 基于matlab实现AUTOSAR软件开发---答疑4 如何在simulink里设置周期运行的runnbale的周期
  • 基于Spring Boot的超市进销存储管理系统
  • Vue项目的打包上线步骤
  • 远程组件实践
  • 浅聊面试这件事
  • StarRocks简单使用
  • 深度学习语义分割篇——FCN原理详解篇
  • X264使用流程文述
  • STM32 GPIO模拟多路I2C总线高阶操作: 同型号多设备并行访问
  • 跳槽互联网公司,需要做哪些准备?
  • rk3568 屏幕参数配置
  • 2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)
  • C++中的虚基类
  • AtCoder 294F 二分套二分
  • 03Roberts算子
  • 归并排序(C/C++)
  • win32-C++-自定义资源文件-读取-保存文件-rc
  • Linux编译PyTorch1.31.1+CUDA版
  • 【致敬未来的攻城狮计划】连续打卡第7天+瑞萨RA2E1点亮LED
  • 人工智能知识图谱之信息抽取:基于Labelstudio的UIE半监督深度学习的智能标注方案(云端版),提效。
  • Vue项目基于i18n实现多语言的切换
  • 基于SSM的自习室预约管理系统
  • 传统餐厅的数字化,从“显示”开始
  • 熵值法综合评价分析流程
  • 使用 Jetpack Compose Modifier实现个人资料图片重叠效果
  • android 媒体通知栏适配
  • Wordpress paid-memberships-pro plugins CVE-2023-23488未授权SQLi漏洞复现
  • 小驰私房菜_04_Camera2 - Image中YUV格式理解
  • 第十一届“泰迪杯” 数据挖掘挑战赛 火热报名中!
  • 【cpolar 内网穿透】Openwrt 软路由实现内网穿透
  • 计算机网络中端到端与点到点的区别
  • 【CSS】清除浮动 ③ ( 清除浮动 - 使用 after 伪元素 | 语法简介 | 兼容低版本浏览器 | 原理分析 )
  • seaborn从入门到精通03-绘图功能实现05-构建结构化的网格绘图
  • Kotlin: Module was compiled with an incompatible version of Kotlin
  • 电脑显示屏是怎么显示出图像的?CPU与GPU又是什么关系?
  • pytest学习和使用24-如何清空allure报告历史记录?我每次都手动删除,有点Low了~
  • 2023年金三银四最新版Java面试八股文教程,涵盖25大专题:Java基础+spring全家桶+大数据+网络+设计模式+算法
  • 支配树与Lengauer-Tarjan算法
  • lvcreate 创建逻辑卷、vgcreate 创建卷组、pvcreate 创建物理卷、vgextend 扩容卷组、lv缩容
  • python进行股票收益率计算和风险控制的实现
  • 9.ISIS缺省路由
  • Object.assign() (最全 最干净 最好用)
  • 实验记录项目
  • 手绘集合框架结构图
  • 配置我自己的vim终端
  • 【最强规则引擎】-- ICE
  • 用户体验设计中的颜色
  • 02_python奇技淫巧
  • 热点︱赵长鹏被美CFTC起诉,Binance会是下一个Tiktok吗?
  • 详细介绍非相参积累和相参积累的原理和区别
  • (LDR6020)国产第一颗PD MCU 可以用于1to2快充线 无线充底座 手机散热背夹方案
  • 基于springboot会员制医疗预约服务管理信息系统演示【附项目源码】
  • 双因素方差分析流程
  • 科大奥瑞物理实验——迈克尔逊干涉仪实验
  • 剥茧抽丝,细数模块化的前世今生
  • 计算机组成原理课程实验源码及课程报告
  • 基于强化学习的房屋布局设计
  • Spark 单机版环境版的简单操作
  • ARM流水线的概念与原理
  • 4、模式二:策略模式(Strategy)
  • TryHackMe-Aratus(boot2root)
  • 计算机视觉入门 - MacOS搭建Python的OpenCV环境并在VScode上使用的详细步骤(完整版)
  • Git命令总结
  • ISO质量管理体系认证有哪些流程?
  • 【Mysql】事务原理
  • Stimulsoft Reports 2023.2.1 Crack
  • python 报错 SyntaxError: EOL while scanning string literal 问题原因 解决方案 EOL解释
  • 高新技术企业申请知多少
  • 用m语言实现ACC状态机—练习
  • LeetCode:215. 数组中的第K个最大元素
  • 初识进程——进程概念
  • 小白学Pytorch系列--Torch.nn API Dropout Layers(11)
  • 设计模式-结构-代理模式
  • Matlab进阶绘图第11期—方块热图灵活版
  • 14从零开始学Java之详解Java中的各种运算符
  • Brief comparision:Soap VS Rest
  • 动态代理实现原理
  • 你知道,华为对项目经理要求的3项技能5项素质是什么吗?
  • 新一轮商业革命将至,张勇用“敏捷组织”率先交出答卷
  • 数据的质量管控工作
  • 【剑指offer-C++】JZ51:数组中的逆序对
  • layui框架学习(19:日期与时间选择模块-下)
  • RT-Thread GD32F4xx Usart 驱动之中断接收轮询发送
  • 《动手学深度学习》(3)多层感知机
  • 网络计划经典例题讲解
  • Java this关键词详解
  • 算法强化每日一题--字符串中找出连续最长的数字串
  • Python:关于时间日期的第三方库及其函数使用方法
  • Linux下 lsof 命令详解
  • 基于Spring、SpringMVC、MyBatis的汽车租赁系统设计
  • 人工智能、深度学习和机器学习有哪些区别?
  • Windows环境下FFmpeg编译安装
  • koa开发实践1:基于 gulp 搭建 typescript 自动构建环境
  • 服务器不稳定对网站有哪些不好的影响
  • 问题解决:在PyCharm中import arcpy
  • 别再光靠工资过日子,外国程序员教你如何通过副业赚钱
  • leecode++理解
  • shopee商品详情接口(item_get-根据ID取商品详情)代码封装教程
  • 【服务器数据恢复】XenServer虚拟机误删除的数据恢复案例
  • 多重共线性全流程分析
  • mysqldumpe备份数据库
  • 生态领域:基于InVEST模型的生态系统服务建模+基于MaxENT的物种分布预测建模
  • Jenkins通用配置
  • JVM预热
  • 纸尿裤的CE认证办理流程
  • PCB模块化设计10——PCI-E高速PCB布局布线设计规范
  • java源码阅读 - HashTable
  • 有了HTTP,为啥还要用RPC
  • 为什么说这款99元国产ARM工业平台,具有“划时代”意义
  • CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理
  • Entity Framework Core 简明教程(2)- 增删改查
  • Redis Stream队列与多线程模型
  • Spring Cloud Sentinel实战(四)-流控规则-关联、预热、排队等待
  • 审计学课程01-10:审计基本方法和理论
  • unity---物体旋转
  • 小驰私房菜系列-目录
  • 决策树与集成学习1-信息熵与手写决策树
  • 安科瑞导轨式智能通讯管理机
  • 剑指 Offer 07. 重建二叉树
  • 免 交 互
  • 微软语音合成工具+基于Electron + Vue + ElementPlus + Vite 构建并能将文字转换为语音 MP3
  • 眨个眼就学会了Pixi.js
  • selenium+python:clear不生效时,处理清空input框内容
  • Win10底部任务栏鼠标转圈圈问题的解决
  • 【C#基础】泛型的概念?有什么例子?在游戏中有什么可以使用的地方?
  • 2023年湖北初级职称(助理工程师)怎么申报?需要什么材料?启程
  • vue实现加载动画
  • ChatGPT如何助力DevOps|用例解读
  • 修改打开方式程序名称
  • 行业例会2023中国(东莞)国际电力自动化展览会
  • 基于springboot实现福聚苑社区团购演示【项目源码】分享
  • heatmap的理解
  • Flink 流批一体方案在数禾的实践
  • Tapdata 赋能敏捷转型:头部知识付费应用如何搭载实时数据快速提升人效,创造业务增长点
  • 2023智慧养老展,第十届北京国际智慧养老产业展览会8月举办
  • goland 代码注释 Goanno
  • 「技术架构」TOGAF建模之技术架构:网络计算硬件图
  • python实战应用讲解-【numpy科学计算】实用小技巧(五)(附python示例代码)
  • mysql使用记录
  • 有钱还系统开发|有钱还系统顾头不顾尾?最后的人会受伤害?
  • 【CXL】使用memkind/vmem管理CXL扩展内存
  • C++ Primer阅读笔记--const限定符的使用
  • Yolov5 + Opencv DNN + C++部署
  • 优漫动游 提升效率常用的C4D技巧
  • A06-批量注册组件
  • CI/CD 基础知识
  • kube-apiserver启动流程
  • 小驰私房菜_03_了解Remosaic
  • map源码解析
  • STM32F4_跑马灯实验
  • S32K144-MBD之PIL测试
  • Python 中 is 和 == 的区别
  • Flink从入门到精通之-03Flink 部署
  • 【Mysql】表的增删改查(一)
  • HR,有哪些常用的人才测评方法?
  • 大数据Flink进阶(十一):Flink History Server配置使用
  • java+Vue-springboot企业公司在线办公自动化OA系统
  • Element的使用—JavaWeb
  • Vector - CAPL - 测试过程及结果展示
  • 小驰私房菜_01_Android Camera该如何入门
  • Spring Boot基础学习之(六):前后端交互实现用户登录界面
  • 基于ChatGPT制作的一款英语口语练习应用SpokenAi
  • excel下拉时保持,变量值不被修改,用$引用即可,如$H$54
  • 机器学习:生成式对抗网络GAN
  • 【Java Web】002 -- JS Vue快速入门
  • 基于ARINC661的显示特性模型软件实现的测试覆盖分析
  • 初始Go语言2【标识符与关键字,操作符与表达式,变量、常量、字面量,变量作用域,注释与godoc】
  • p 值计算(置信度)
  • 用PyTorch实现MNIST数据集手写数字识别
  • 盘点IntelliJ IDEA中被低估的那些快捷键
  • 科大奥瑞物理实验——密立根油滴实验
  • channel源码解析
  • FreeRTOS学习(一)
  • 第九章 React中的事件处理
  • 通讯录,我™来了。
  • Yolov5+tensorrt+vs2019+windows部署
  • 基于 Stable Diffusion 一键 AI 作画:什么“小镇做题家”?人人都是艺术家
  • 面向对象语言(Python)——流程控制
  • python--循环结构
  • tcl学习
  • HTML5
  • 「SQL面试题库」 No_20 给定数字的频率查询中位数
  • 新探索研究生英语视听说教程
  • 腾讯云 面试题汇总_1(第一套)
  • 手撕二叉树--堆的应用一:topk问题
  • 面试题汇总