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

DETRs Beat YOLOs on Real-time Object Detection论文翻译

 cvpr 2024

论文名称 DETRs在实时目标检测上击败YOLO

地址 https://arxiv.longhoe.net/abs/2304.08069
代码 https://github.com/lyuwenyu/RT-DETR

目录

摘要

1介绍

2.相关工作

2.1实时目标探测器

2.2.端到端物体探测器

3.检测器的端到端速度

3.1.NMS分析

3.2.端到端速度基准

4.实时DETR

4.1.模型概述

4.3.不确定性最小查询选择

5.实验

5.1.与SOTA的比较

5.2.混合编码器的消融研究

5.3.查询选择的消融研究

5.4.解码器的消融研究

6.限制和讨论

7.结论

附录

1.实验设置数据集和指标。

2.与较轻的YOLO探测器相比

3.RT-DETR的大规模预训练

4.不同后处理阈值预测的可视化

5.RT-DETR预测的可视化


摘要

        YOLO系列已经成为最流行的实时目标检测框架,因为它在速度和准确性之间做出了合理的权衡。然而,我们观察到YOLO的速度和准确性受到NMS的负面影响。最近,端到端基于转换器的检测器(DETR)提供了消除NMS的替代方案。然而,高计算成本限制了它们的实用性,并阻碍了它们充分发挥排除NMS的优势。在本文中,我们提出了实时检测Transformer(RT-DETR),第一个实时端到端对象检测器,以我们所知,解决了上述困境。我们借鉴先进的DETR,分两步构建RT-DETR:首先,我们专注于在提高速度的同时保持准确性,其次是在提高准确性的同时保持速度。具体来说,我们设计了一个高效的混合编码器,通过解耦尺度内交互和跨尺度融合来快速处理多尺度特征,以提高速度。然后,我们提出了不确定性最小的查询选择提供高质量的初始查询的解码器,从而提高准确性。此外,RT-DETR支持灵活的速度调整,通过调整解码器层的数量来适应各种场景,而无需重新训练。我们的RT-DETR-R50 / R101在COCO上实现了53.1% / 54.3%的AP,在T4 GPU上实现了108 / 74 FPS,无论是速度还是精度都超过了之前先进的YOLO。此外,RT-DETR-R50在准确性方面优于DINO-R50 2.2%AP,FPS约为21倍。经过Objects 365的预训练后,RTDETR-R50 / R101分别达到了55.3% / 56.2%的AP。代码:https://zhao-yian.github.io/RTDETR。

1介绍

        实时目标检测是一个重要的研究领域,有着广泛的应用,如目标跟踪[43]、视频监控[28]、自动驾驶[2]等,现有的实时检测器一般采用基于CNN的架构,其中最著名的是YOLO检测器[1,10-12,15,16,25,30,38,40]由于它们在速度和准确性之间的合理权衡。然而,这些检测器通常需要非最大值抑制(NMS)进行后处理,这不仅降低了推理速度,而且还引入了超参数,导致速度和精度不稳定。此外,考虑到不同场景对查全率和准确率的重视程度不同,需要仔细选择合适的NMS阈值,这阻碍了实时检测器的发展。

        最近,端到端基于transformer的检测器(DETR)[4,17,23,27,36,39,44,45]由于其精简的架构和消除手工制作的组件而受到学术界的广泛关注。然而,它们的高计算成本使它们无法满足实时检测要求,因此无NMS架构没有表现出推理速度优势。这启发我们探索DETR是否可以扩展到实时场景,并在速度和准确性方面优于先进的YOLO检测器,消除NMS对实时对象检测造成的延迟。

        为实现上述目标,我们重新考虑DETR并对关键组件进行详细分析,以减少不必要的计算冗余并进一步提高准确性。对于前者,我们观察到,虽然多尺度特征的引入有利于加速训练收敛[45],但它会导致输入编码器的序列长度显着增加。由于多尺度特征的交互作用导致的高计算成本使得Transformer编码器成为计算瓶颈。因此,实现实时DETR需要重新设计编码器。对于后者,以前的工作[42,44,45]表明难以优化的对象查询阻碍了DETR的性能,并提出了查询选择方案,以用编码器特征取代香草可学习嵌入。然而,我们观察到,目前的查询选择直接采用分类分数进行选择,忽略了这样一个事实,即检测器需要同时建模的类别和对象的位置,这两者都决定了功能的质量。这不可避免地导致具有低定位置信度的编码器特征被选择作为初始查询,从而导致相当大程度的不确定性并损害DETR的性能。我们将查询初始化视为进一步提高性能的突破口。

        在本文中,我们提出了实时检测Transformer(RT-DETR),第一个实时端到端的对象检测器,以我们最好的知识。为了快速处理多尺度特征,我们设计了一个高效的混合编码器来代替香草Transformer编码器,通过解耦尺度内交互和不同尺度特征的跨尺度融合来显著提高推理速度。为了避免低定位置信度的编码器特征被选择为对象查询,我们提出了不确定性最小查询选择,通过显式优化不确定性,为解码器提供高质量的初始查询,从而提高准确性。此外,RT-DETR支持灵活的速度调整,以适应各种实时场景,而无需重新训练,这要归功于DETR的多层解码器架构。

        RT-DETR在速度和精度之间实现了理想的平衡。具体来说,RT-DETR-R50在COCO val 2017上实现了53.1%的AP,在T4 GPU上实现了108 FPS,而RTDETR-R101实现了54.3%的AP和74 FPS,在速度和准确性方面都优于之前先进的YOLO探测器的L和X型号,图1。我们还通过使用更小的主干扩展编码器和解码器来开发扩展的RT-DETR,其性能优于更轻的YOLO检测器(S和M模型)。此外,RT-DETR-R50在准确度上比DINO-Deformable-DETR-R50高出2.2% AP(53.1% AP vs 50.9% AP),在FPS上高出约21倍(108 FPS vs 5 FPS),显着提高了DETR的准确度和速度。在使用Objects 365 [35]进行预训练后,RTDETR-R50 / R101实现了55.3% / 56.2%的AP,从而实现了令人惊讶的性能提升。更多实验结果见附录。

图1.与以前先进的实时目标检测器相比,我们的RT-DETR实现了最先进的性能。

        主要贡献归纳如下:(一)。我们提出了第一个称为RTDETR的实时端到端对象检测器,它不仅在速度和准确性方面优于以前先进的YOLO检测器,而且还消除了NMS后处理对实时对象检测造成的负面影响;(ii)。定量分析NMS对YOLO检测器速度和精度的影响,建立端到端速度基准测试实时检测器的端到端推理速度;(iii).所提出的RT-DETR通过调整解码器层的数量来支持灵活的速度调整,以适应各种情况,而无需重新训练。

2.相关工作

2.1实时目标探测器

        YOLOv1 [31]是第一个基于CNN的单阶段对象检测器,可以实现真正的实时对象检测。经过多年的不断发展,YOLO探测器已经超越了其他单级目标探测器[21,24],成为实时目标探测器的代名词。YOLO检测器可以分为两类:基于锚点的[1,11,15,25,29,30,37,38]和无锚点的[10,12,16,40],它们在速度和精度之间实现了合理的权衡,并广泛应用于各种实际场景。这些先进的实时检测器会产生许多重叠的盒子,需要NMS后处理,这会降低它们的速度。

2.2.端到端物体探测器

        端到端物体探测器以其流线型的管道而闻名。Carion等人[4]首先提出了基于Transformer的端到端检测器,称为DETR,由于其独特的特性而引起了广泛的关注。特别是,DETR消除了手工制作的锚和NMS组件。相反,它采用二分匹配,并直接预测一对一的对象集。尽管DETR具有明显的优势,但它存在一些问题:训练收敛速度慢,计算成本高,难以优化查询。已经提出了许多DETR变体来解决这些问题。加速融合。Deformable-DETR [45]通过提高注意力机制的效率来加速多尺度特征的训练收敛。DAB-DETR [23]和DN-DETR [17]通过引入迭代细化方案和去噪训练进一步提高了性能。Group-DETR [5]引入了分组一对多分配。降低计算成本。高效DETR [42]和稀疏DETR [33]通过减少编码器和解码器层的数量或更新查询的数量来降低计算成本。Lite DETR [18]通过以交错方式降低低级特征的更新频率来提高编码器的效率。优化查询初始化。条件DETR [27]和锚DETR [39]降低了查询的优化难度。Zhu等人。[45]提出了两阶段DETR的查询选择,DINO [44]建议混合查询选择以帮助更好地初始化查询。目前的DETR仍然是计算密集型的,并且没有被设计为真实的时间检测。我们的RT-DETR积极探索计算成本的降低,并试图优化查询初始化,优于最先进的实时检测器。

3.检测器的端到端速度

3.1.NMS分析

        NMS是一种在目标检测中广泛使用的后处理算法,用于消除重叠的输出框。NMS中需要两个阈值:置信阈值和IoU阈值。具体来说,得分低于置信度阈值的盒子被直接过滤掉,并且每当任何两个盒子的IoU超过IoU阈值时,得分较低的盒子将被丢弃。迭代地执行该过程,直到处理完每个类别的所有框。因此,NMS的执行时间主要取决于盒子的数量和两个阈值。为了验证这一观察结果,我们利用YOLOv5 [11](基于锚)和YOLOv8 [12](无锚)进行分析。

        我们首先计算在同一输入上过滤具有不同置信度阈值的输出框后剩余的框的数量。我们从0.001到0.25之间采样值作为置信度阈值,以计算两个检测器的剩余框的数量,并将它们绘制在条形图上,这直观地反映了NMS对其超参数的敏感性,图2。随着置信度阈值的增加,更多的预测框被过滤掉,需要计算IoU的剩余框的数量减少,从而减少NMS的执行时间。

图2.不同置信度阈值下的盒子数量。

        此外,我们使用YOLOv8在COCO val2017上评估了准确性,并测试了不同超参数下NMS操作的执行时间。注意,我们采用的NMS操作是指TensorRT efficientNMSPlugin,它涉及多个内核,包括EfficientNMSFilter、RadixSort、EfficientNMS等,我们只报告EfficientNMS内核的执行时间。我们使用TensorRT FP16在T4 GPU上测试了速度,输入和预处理保持一致。超参数和相应的结果如表1所示。从结果中,我们可以得出结论,EfficientNMS内核的执行时间随着置信度阈值的降低或IoU阈值的增加而增加。原因是高置信度阈值直接过滤掉更多的预测框,而高IoU阈值在每轮筛选中过滤掉的预测框较少。我们还在附录中可视化了具有不同NMS阈值的YOLOv8的预测。结果表明,不适当的置信度阈值会导致检测器产生明显的误报或漏报。在置信度阈值为0.001,IoU阈值为0.7的情况下,YOLOv8实现了最佳AP结果,但相应的NMS时间处于较高水平。考虑到YOLO检测器通常报告模型速度并排除NMS时间,因此需要建立端到端速度基准。

表1.IoU阈值和置信度阈值对准确性和NMS执行时间的影响。

3.2.端到端速度基准

        为了能够公平地比较各种实时检测器的端到端速度,我们建立了一个端到端速度基准。考虑到NMS的执行时间受输入的影响,需要选择基准数据集并计算多个图像的平均执行时间。我们选择COCO val 2017 [20]作为基准数据集,并如上所述为YOLO检测器添加TensorRT的NMS后处理插件。具体来说,我们根据基准数据集上相应准确度的NMS阈值测试检测器的平均推理时间,不包括I/O和MemoryCopy操作。我们利用基准测试在T4 GPU上使用TensorRT FP 16测试基于锚的检测器YOLOv 5 [11]和YOLOv 7 [38]以及无锚检测器PP-YOLOE [40],YOLOv 6 [16]和YOLOv 8 [12]的端到端速度。根据结果(cf。表2),我们得出结论,无锚检测器优于基于锚的检测器,具有与YOLO检测器相同的精度,因为前者需要比后者更少的NMS时间。原因是基于锚的检测器比无锚检测器产生更多的预测框(在我们测试的检测器中是三倍)。

表2.与SOTA的比较(仅YOLO探测器的L和X型号,与S和M型号的比较见附录)。我们不测试其他DETR的速度,除了DINO-Deformable-DETR [44]用于比较,因为它们不是实时检测器。我们的RT-DETR在速度和准确性方面优于最先进的YOLO探测器和DETR。

4.实时DETR

4.1.模型概述

        RT-DETR由一个主干、一个高效的混合编码器和一个带辅助预测头的Transformer解码器组成。RT-DETR的概述如图4所示。具体来说,我们将来自主干的最后三个阶段{S3,S4,S5}的特征馈送到编码器中。高效的混合编码器通过尺度内特征交互和跨尺度特征融合将多尺度特征变换成图像特征序列(参见图1)。秒4.2)。随后,采用不确定性最小查询选择来选择固定数量的编码器特征以用作解码器的初始对象查询(参见图1)。秒4.3)。最后,具有辅助预测头的解码器迭代地优化对象查询以生成类别和框。4.2.高效的混合编码器计算瓶颈分析。多尺度特征的引入加速了训练收敛并提高了性能[45]。然而,尽管可变形注意力降低了计算成本,但急剧增加的序列长度仍然导致编码器成为计算瓶颈。如Lin等人[19]所述,编码器占GFLOP的49%,但在可变形DETR中仅占AP的11%。为了克服这个瓶颈,我们首先分析了计算冗余存在于多尺度Transformer编码器。直观的,包含丰富的语义信息的对象的高级功能提取低级别的功能,使它多余的级联多尺度功能上执行功能交互。因此,我们设计了一组具有不同类型编码器的变体,以证明同时进行尺度内和跨尺度特征交互是低效的,图3。特别地,我们使用DINO-Deformable-R50与RT-DETR中使用的更小尺寸的数据读取器和更轻的解码器进行实验,并且首先去除DINO-Deformable-R50中的多尺度Transformer编码器作为变体A。然后,插入不同类型的编码器以基于A产生一系列变体,详细说明如下(每个变体的详细指示符参见表3):

表3.图3中示出了变型集合的指示符。

图3.每个变体的编码器结构。SSE表示单尺度Transformer编码器,MSE表示多尺度Transformer编码器,CSF表示跨尺度融合。AIFI和CCFF是设计到我们的混合编码器的两个模块。

图3.每个变体的编码器结构。SSE表示单尺度Transformer编码器,MSE表示多尺度Transformer编码器,CSF表示跨尺度融合。AIFI和CCFF是设计到我们的混合编码器的两个模块。

· A → B:变体B将单尺度Transformer编码器插入到A中,其使用一层Transformer块。多尺度特征共享编码器以进行尺度内特征交互,然后连接为输出。

· B → C:变体C引入基于B的跨尺度特征融合,并将级联特征馈送到多尺度Transformer编码器中以执行同时的尺度内和跨尺度特征交互。

· C → D:变体D通过利用用于前者的单尺度Transformer编码器和用于后者的PANet风格[22]结构来实现尺度内交互和跨尺度融合。

· D→ E:变体E在D的基础上增强了尺度内交互和跨尺度融合,采用了我们设计的高效混合编码器。

混合设计。在此基础上,我们对编码器的结构进行了重新思考,提出了一种高效的混合编码器,该编码器由基于注意力的尺度内特征交互(AIFI)和基于CNN的跨尺度特征融合(CCFF)两个模块组成。具体地,AIFI通过利用单尺度Transformer编码器仅在S5上执行尺度内交互来进一步降低基于变型D的计算成本。原因在于,将自注意操作应用于具有更丰富语义概念的高级特征,捕获了概念实体之间的联系,这有利于后续模块对对象的定位和识别。然而,由于缺乏语义概念以及与高级特征交互的重复和混淆的风险,较低级别特征的尺度内交互是不必要的。为了验证这一观点,我们仅对变体D中的S5进行尺度内相互作用,实验结果报告在表3中(见DS5行)。与D相比,DS5不仅显著降低了延迟(快35%),而且提高了准确性(AP高0.4%)。CCFF基于跨尺度融合模块进行优化,在融合路径中插入几个由卷积层组成的融合块,融合块的作用是将两个相邻尺度特征融合成一个新特征,其结构如图5所示。融合块包含两个1 × 1卷积来调整通道数量,由RepConv [8]组成的N个RepBlocks用于特征融合,两个路径输出通过逐元素相加进行融合。我们将混合编码器的计算公式化为:

        其中Reshape表示将展平特征的形状恢复为与S5相同的形状。

图5.CCFF中的融合阻滞。

4.3.不确定性最小查询选择

        为了降低在DETR中优化对象查询的难度,一些后续的工作[42,44,45]提出了查询选择方案,它们的共同点是使用置信度得分从编码器中选择前K个特征来初始化对象查询(或只是位置查询)。置信度分数表示特征包括前景对象的可能性。然而,检测器需要同时对对象的类别和位置进行建模,这两者都决定了特征的质量。因此,特征的性能得分是与分类和定位两者共同相关的潜在变量。基于分析,当前的查询选择导致所选择的特征具有相当程度的不确定性,从而导致解码器的次优初始化并阻碍检测器的性能。

        为了解决这个问题,我们提出了不确定性最小查询选择方案,明确地构建和优化认知的不确定性建模的联合潜在变量的编码器功能,从而为解码器提供高质量的查询。具体地,特征不确定性U被定义为在等式中定位P和分类C的预测分布之间的差异。(2).为了最小化查询的不确定性,我们将不确定性集成到等式中的基于梯度的优化的损失函数中。(3).

        其中,Y表示预测和基础事实,Y表示= {k c,k B},k c和k B分别表示类别和边界框,X表示编码器特征。

        有效性分析。为了分析不确定性最小查询选择的有效性,我们在COCO val2017上可视化了所选特征的分类得分和IoU得分,图6。我们绘制了分类分数大于0.5的散点图。紫色和绿色点分别表示从使用不确定性最小查询选择和普通查询不确定性最小查询选择解码器和头部选择训练的模型中选择的特征。点越靠近图的右上方,对应特征的质量越高,即,预测的类别和框越可能描述真实的对象。顶部和右侧的密度曲线反映了两种类型的点的数量。

图6.所选编码器功能的分类和IoU分数。紫色和绿色点分别表示从使用不确定性最小查询选择和普通查询选择训练的模型中选择的特征。

        散点图最显著的特点是紫色的点集中在图的右上方,而绿色的点集中在右下方。这表明不确定性最小查询选择产生更多高质量的编码器特征。此外,我们进行定量分析两个查询选择方案。紫色点比绿色点多138%,即,具有小于或等于0.5的分类分数的更多绿色点,其可被认为是低质量特征。并且有120%的紫色点比绿色点的分数都大于0.5。从密度曲线也可以得出同样的结论,紫色和绿色之间的差距在图的右上方最明显。定量结果进一步表明,不确定性最小查询选择提供了更多的特征,具有准确的分类和查询的精确位置,从而提高了检测器的准确性(参见图1)。秒5.3)。

4.4.定标RT-DETR

        由于实时检测器通常提供不同尺度的模型以适应不同的场景,因此RT-DETR还支持灵活的缩放。具体来说,对于混合编码器,我们通过调整嵌入维数和通道数来控制宽度,通过调整Transformer层和RepBlocks的数量来控制深度。解码器的宽度和深度可以通过操纵对象查询和解码器层的数量来控制。此外,RT-DETR的速度支持通过调整解码器层的数量来灵活调整。我们观察到,在最后删除一些解码器层对准确性的影响最小,但大大提高了推理速度(参见。秒5.4)。我们将配备ResNet 50和ResNet 101的RT-DETR [13,14]与YOLO探测器的L和X型号进行了比较。更轻的RT-DETR可以通过应用其他更小的(例如,ResNet 18/34)或可扩展(例如,CSPResNet [40])具有缩放编码器和解码器的骨干。我们在附录中将缩放的RT-DETR与更轻的(S和M)YOLO探测器进行了比较,它们在速度和精度方面都优于所有S和M模型。

5.实验

5.1.与SOTA的比较

        表2将RT-DETR与当前的实时(YOLO)和端到端(DETR)检测器进行了比较,其中仅比较了YOLO检测器的L和X型号,S和M型号的比较见附录。我们的RT-DETR和YOLO检测器共享一个共同的输入大小(640,640),其他DETR使用的输入大小为(800,1333)。FPS在T4 GPU上使用TensorRT FP 16进行报告,并根据第12节中提出的端到端速度基准使用官方预训练模型用于YOLO检测器。3.2.我们的RT-DETR-R50实现了53.1%的AP和108 FPS,而RTDETR-R101实现了54.3%的AP和74 FPS,在速度和准确性方面优于具有类似规模的最先进的YOLO探测器和具有相同主干的DETR。实验设置见附录。与实时探测器比较。我们比较了端到端速度(参见秒3.2)和使用YOLO探测器的RTDETR的准确性。我们将RT-DETR与YOLOv 5 [11]、PP-YOLOE [40]、YOLOv6v3.0 [16](以下简称YOLOv 6)、YOLOv 7 [38]和YOLOv 8 [12]进行比较。与YOLOv 5-L / PP-YOLOE-L /YOLOv 6-L相比,RT-DETR-R50的准确度提高了4.1% / 1.7% /0.3%AP,FPS提高了100.0% / 14.9% /9.1%,参数数量减少了8.7% / 19.2% /28.8%。与YOLOv 5-X / PP-YOLOE-X相比,RTDETR-R101的精度提高了3.6% /2.0%,FPS提高了72.1% /23.3%,参数数量减少了11.6% /22.4%。与YOLOv 7-L /YOLOv 8-L相比,RT-DETR-R50将准确度提高了1.9% /0.2%AP,FPS提高了96.4% /52.1%。与YOLOv 7-X /YOLOv 8-X相比,RT-DETR-R101的准确度提高了1.4% /0.4%AP,FPS提高了64.4% /48.0%。这表明我们的RT-DETR实现了最先进的实时检测性能。

        与端到端检测器的比较。我们还比较RT-DETR与现有的DETR使用相同的骨干。我们根据COCO val 2017上相应精度的设置来测试DINO-Deformable-DETR的速度[44],以进行比较,即:使用TensorRT FP 16测试速度,输入大小为(800,1333)。表2显示,RT-DETR在速度和准确性方面优于所有具有相同主干的DETR。与DINO-Deformable-DETR-R50相比,RT-DETR-R50的准确度提高了2.2%AP,速度提高了21倍(108 FPS vs 5 FPS),两者都有明显的提高。

5.2.混合编码器的消融研究

        我们评估了第二节中设计的变体的指标。4.2,包括AP(用1×配置训练),参数数量和延迟,表3。与基线A相比,变体B将准确性提高了1.9% AP,并将潜伏期增加了54%。这证明了尺度内特征交互是显著的,但是单尺度Transformer编码器在计算上是昂贵的。变体C比B提供0.7%的AP改进,并将延迟增加20%。这表明跨尺度特征融合也是必要的,但多尺度Transformer编码器需要更高的计算成本。变体D比C提供了0.8%的AP改进,但将延迟降低了8%,这表明解耦尺度内交互和跨尺度融合不仅降低了计算成本,而且提高了准确性。与变体D相比,DS5将延迟减少了35%,但提供了0.4%的AP改善,表明不需要较低级别特征的尺度内交互。最后,变体E比D提供1.5%的AP改善。尽管参数数量增加了20%,但延迟减少了24%,使编码器更高效。这表明,我们的混合编码器实现了更好的速度和精度之间的权衡。

5.3.查询选择的消融研究

        我们对不确定性最小查询选择进行消融研究,结果报告在RT-DETR-R50上,1×配置,表4。RT-DETR中的查询选择根据分类得分选择前K(K = 300)个编码器特征作为内容查询,并将所选特征对应的预测框作为初始位置查询。我们比较了COCO val 2017上两种查询选择方案选择的编码器特征,并分别计算了分类得分大于0.5以及分类和IoU得分大于0.5的比例。实验结果表明,不确定性最小查询选择算法选择的编码器特征不仅提高了高分类分数的比例(0.82%vs0.35%),而且提供了更多的高质量特征(0.67%vs0.30%)。我们还评估了在COCO val 2017上使用两种查询选择方案训练的检测器的准确性,其中不确定性最小查询选择实现了0.8% AP的改进(48.7% AP vs 47.9% AP)。

表4.不确定性最小查询选择的消融研究结果。Propcls和Propboth分别表示分类得分的比例和得分均大于0.5的比例。

5.4.解码器的消融研究

        表5显示了用不同数量的解码器层训练的RT-DETR-R50的每个解码器层的推理延迟和准确性。当解码器层数设置为6时,RT-DETR-R50达到最佳精度53.1%AP。此外,我们观察到,随着解码器层的索引的增加,相邻解码器层之间的精度差异逐渐减小。以列RTDETR-R50-Det 6为例,使用第5个解码器层进行推理仅损失0.1%的AP(53.1% AP vs 53.0% AP)的准确性,同时将延迟减少0.5 ms(9.3 ms vs 8.8 ms)。因此,RT-DETR通过调整解码器层数而无需重新训练来支持灵活的速度调整,从而提高了其实用性。

表5.解码器的消融研究结果。ID指示解码器层索引。Detk表示具有k个解码器层的检测器。所有结果均报告在RT-DETR-R50(6×配置)上。

6.限制和讨论

        限制。尽管所提出的RT-DETR在速度和准确性方面优于具有类似尺寸的最先进的实时检测器和端到端检测器,但它与其他DETR具有相同的限制,即,对小物体的性能仍然不如强实时检测器。根据表2,RT-DETR-R50比L模型(YOLOv 8-L)中的最高APval S低0.5%AP,RTDETR-R101比X模型(YOLOv 7-X)中的最高APval S低0.9%AP。我们希望,这一问题将在今后的工作中得到解决。

        讨论。现有的大型DETR模型[3,6,32,41,44,46]在COCO测试开发[20]排行榜上表现出令人印象深刻的性能。所提出的不同尺度的RT-DETR保留了与其他DETR相同的解码器,这使得我们可以用高精度的预训练大型DETR模型来提取我们的轻量级检测器。我们相信这是RT-DETR相对于其他实时检测器的优势之一,可能是未来探索的一个有趣方向。

7.结论

        在这项工作中,我们提出了一个实时端到端检测器,称为RT-DETR,它成功地扩展了DETR的实时检测场景,并达到了最先进的性能。RT-DETR包括两个关键的增强:一个高效的混合编码器,可以快速处理多尺度特征,以及提高初始对象查询质量的不确定性最小查询选择。此外,RT-DETR支持灵活的速度调整,无需重新训练,消除了两个NMS阈值带来的不便,便于实际应用。RTDETR,沿着其模型缩放策略,拓宽了实时对象检测的技术方法,为不同的实时场景提供了超越YOLO的新可能性。我们希望RT-DETR能够付诸实践。致谢。本研究得到了国家重点研发计划(No.2022ZD0118201)、国家自然科学基金(No.61972217,32071459,62176249,62006133,62271465)和深圳市医学科研基金(No.B2302037)的部分资助。感谢刘畅、王振南和李克汉在写作和演示方面提出的有益建议。

附录

1.实验设置数据集和指标。

        我们在COCO[20]和Objects365[35]上进行了实验,其中RT-DETR在COCO Train 2017上进行了训练,并在COCO val2017数据集上进行了验证。我们报告了标准的COCO指标,包括AP(在均匀采样的IOU阈值范围内从0.50到0.95的平均值,步长为0.05),AP50,AP75,以及不同尺度的AP:APS,APM,APL。实施细节。我们使用在ImageNet[7,34]上预先训练的ResNet[13,14]作为主干,主干的学习速率策略遵循[4]。在混合编码器中,AIFI由1个变换器层组成,CCFF中的融合块由3个RepBlock组成。我们利用不确定的最小查询选择来选择前300个编码器特征来初始化解码器的对象查询。解码器的训练策略和超参数几乎遵循Dino[44]。我们使用四个批次大小为16的NVIDIA Tesla V100 GPU使用AdamW[26]优化器训练RT-DETR,并应用指数移动平均衰减=0.9999。1×组态意味着总历元为12,最终报告的结果采用6×组态。在训练期间应用的数据增强包括随机{颜色扭曲、扩展、裁剪、翻转、调整大小}操作,遵循[40]。RT-DETR的主要超参数如表A所示(详细配置请参考RT-DETRR50)。

2.与较轻的YOLO探测器相比

        为了适应不同的实时检测场景,我们通过使用ResNet50/34/18[13]对编码器和解码器进行缩放来开发更轻规模的RT-DETR。具体地说,我们在保持其他组件不变的情况下,将RepBlock中的通道数量减半,并在推理过程中通过调整解码器层的数量来获得一组RT-DETR。我们将定标的RT-DETR与表B中的S和M型号的YOLO探测器进行了比较。定标的RT-DETR-R50/34/18在训练时使用的解码器层数分别为6/4/3,而Deck表示在推理过程中使用了k个解码器层。我们的RT-DETR-R50-DEC2−5在速度和精度上都优于所有M型号的YOLO探测器,而RT-DETR-R18-DEC2则优于所有S型号的探测器。与最先进的M模型(YOLOv8-M[12])相比,RT-DETR-R50-DEC5的准确率提高了0.9%,FPS提高了36%。与最先进的S模型(YOLOv6-S[16])相比,RT-DETR-R18-DEC2的准确率提高了0.5%,FPS提高了18%。这表明,通过简单的定标,RT-DETR在速度和精度上都能够超过较轻的YOLO探测器。

表A.RT-DETR的主要超参数。

 

表B与S和M型YOLO探测器的比较。根据建议的端到端速度基准,YOLO探测器的FPS在采用TensorRT FP16的T4 GPU上使用官方预先训练的模型进行报告。†表示训练过程中的参数数量,而不是推理。

3.RT-DETR的大规模预训练

        我们在较大的Objects365[35]数据集上对RT-DETR进行预训练,然后在COCO上对其进行微调,以获得更高的性能。如表C所示,我们分别在RT-DETR-R18/50/101上进行了实验。所有三个模型都在Objects365上预训练了12个时期,RT-DETR-R18在COCO上微调了60个时期,而RT-DETR-R50和RT-DETR-R101则微调了24个时期。实验结果表明,RT-DETR-R18/50/101在COCO val2017上的性能提高了2.7%/2.2%/1.9%。这一令人惊讶的改进进一步展示了RTDETR的潜力,并为行业内各种实时场景提供了最强的实时物体探测器。

表C.对COCO val2017进行了微调,并对目标365进行了预培训。

4.不同后处理阈值预测的可视化

        为了直观地展示后处理对检测器的影响,我们使用不同的后处理阈值可视化了YOLOv8[12]和RT-DETR产生的预测,分别如图A和图B所示。我们通过为YOLOv8-L设置不同的NMS阈值和为RT-DETR-R50设置分数阈值来显示对COCO val2017中随机选择的两个样本的预测。NMS有两个阈值:置信度阈值和IOU阈值,这两个阈值都会影响检测结果。置信度阈值越高,过滤出的预测框越多,假阴性的数量也就越多。然而,使用较低的置信度阈值,例如0.001,会导致大量的冗余框并增加假阳性的数量。欠条门槛越高,每轮筛查中筛选出的重叠框越少,假阳性数量就越多(图A中红圈标记的位置)。然而,如果输入中存在重叠或相互遮挡的对象,采用较低的IOU阈值将导致删除真正的正面。置信度阈值对于处理预测框相对简单,因此很容易设置,而IOU阈值很难准确设置。考虑到不同场景对召回率和准确率的重视程度不同,例如,一般检测场景需要较低的置信度阈值和较高的IOU阈值来提高召回率,而专用检测场景需要较高的置信度阈值和较低的IOU阈值来提高准确率,因此有必要针对不同的场景仔细选择合适的网管阈值。RT-DETR利用二部匹配来预测Oneto-One对象集,消除了抑制重叠框的需要。取而代之的是,它直接过滤出带有分数阈值的低置信度框。与NMS中使用的置信度阈值类似,分数阈值可以根据特定的侧重点在不同的场景中进行调整,以实现最佳的检测性能。因此,在RT-DETR中设置后处理阈值是简单的,并且不影响推理速度,增强了实时检测器对各种场景的适应性。

图A.YOLOv8-L[12]不同NMS阈值预报的可视化。

图B.不同得分阈值的RT-DETR-R50预测的可视化。

5.RT-DETR预测的可视化

        我们从COCO val2017中选择了几个样本来展示RT-DETR在复杂场景和挑战性条件下的检测性能(参见图C和图D)。在复杂的场景中,RT-DETR展示了其检测各种对象的能力,即使它们是小的或密集的包装,例如杯子、酒杯和个人。此外,RT-DETR成功地检测到了各种困难条件下的目标,包括运动模糊、旋转和遮挡。这些预测证实了RT-DETR良好的检测性能。

图C.复杂场景中RT-DETR-R101预测的可视化(得分阈值=0.5)。

图D.困难条件下RT-DETR-R101预测的可视化,包括运动模糊、旋转和遮挡(得分阈值=0.5)。

相关文章:

DETRs Beat YOLOs on Real-time Object Detection论文翻译

cvpr 2024 论文名称 DETRs在实时目标检测上击败YOLO 地址 https://arxiv.longhoe.net/abs/2304.08069 代码 https://github.com/lyuwenyu/RT-DETR 目录 摘要 1介绍 2.相关工作 2.1实时目标探测器 2.2.端到端物体探测器 3.检测器的端到端速度 3.1.NMS分析 3.2.端到端速度…...

SpringBoot 多数据源配置

目录 一. 引入maven依赖包 二. 配置yml 三、创建 xml 分组文件 四、切换数据源 一. 引入maven依赖包 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1&…...

RK3568驱动指南|第十六篇 SPI-第192章 mcp2515驱动编写:完善write和read函数

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…...

#BI建模与数仓建模有什么区别?指标体系由谁来搭建?

问题1&#xff1a; 指标体系是我们数仓来搭建还是分析师来做&#xff0c;如何去推动&#xff1f; 问题2&#xff1a;BI建模与数仓建模有什么区别&#xff1f; 指标体系要想做好&#xff0c;其实是分两块内容的&#xff0c;一块是顶层设计阶段&#xff0c;业务指标体系的搭建&am…...

如何用Python实现三维可视化?

Python拥有很多优秀的三维图像可视化工具&#xff0c;主要基于图形处理库WebGL、OpenGL或者VTK。 这些工具主要用于大规模空间标量数据、向量场数据、张量场数据等等的可视化&#xff0c;实际运用场景主要在海洋大气建模、飞机模型设计、桥梁设计、电磁场分析等等。 本文简单…...

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …...

泛微开发修炼之旅--30 linux-Ecology服务器运维脚本

文章链接&#xff1a;30 linux-ecology服务器运维脚本...

LeetCode 全排列

思路&#xff1a;这是一道暴力搜索问题&#xff0c;我们需要列出答案的所有可能组合。 题目给我们一个数组&#xff0c;我们很容易想到的做法是将数组中的元素进行排列&#xff0c;如何区分已选中和未选中的元素&#xff0c;容易想到的是建立一个标记数组&#xff0c;已经选中的…...

python实现支付宝异步回调验签

说明 python实现支付宝异步回调验签&#xff0c;示例中使用Django框架。 此方案使用了支付宝的pythonSDK&#xff0c;请一定装最新版本的&#xff0c;支付宝官网文档不知道多久没更新了&#xff0c;之前的版本pip安装会报一些c库不存在的错误&#xff1b; pip install alipay-…...

注意!Vue.js 或 Nuxt.js 中请停止使用.value

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 当您在代码中使用.value时,必须每次都检查变量是否存在并且是引用。 这可能很麻烦,因为在运行时使用.value可能会导致错误。然而,有一个简单的解决方法,即使用unref()而不是.value。 unref()会检查变量是否是引用,并自…...

Java:JDK、JRE和JVM 三者关系

文章目录 一、JDK是什么二、JRE是什么三、JDK、JRE和JVM的关系 一、JDK是什么 JDK&#xff08;Java Development Kit&#xff09;&#xff1a;Java开发工具包 JRE&#xff1a;Java运行时环境开发工具&#xff1a;javac&#xff08;编译工具&#xff09;、java&#xff08;运行…...

Radio专业术语笔记

在收音机的 RDS (Radio Data System) 功能中&#xff0c;CT 代表 “Clock Time”。RDS 是一种数字广播标准&#xff0c;用于在调频广播中传输辅助数据&#xff0c;如电台名称、节目类型、交通信息等。CT 功能是其中的一部分&#xff0c;用于同步和显示广播电台发送的当前时间。…...

cocosCreator找出未用到的图片

最近整理项目的时候发现有些资源文件夹有点轮乱(一些历史原因导致的),而且有很多图片都是没用了的,但是没有被删除掉,还一直放在项目中,导致项目的资源文件夹比较大,而且还冗余。于是今天想着整理一下。 公开免费链接 找出未使用的图片 有好几种方法可以找出未使用的图片…...

一览 Anoma 上的有趣应用概念

撰文&#xff1a;Tia&#xff0c;Techub News 本文来源香港Web3媒体&#xff1a;Techub News Anoma 的目标是为应用提供通用的意图机器接口&#xff0c;这意味着使用 Anoma&#xff0c;开发人员可以根据意图和分布式意图机编写应用&#xff0c;而不是根据事务和特定状态机进行…...

Spring Boot集成fastjson2快速入门Demo

1.什么是fastjson2&#xff1f; fastjson2是阿里巴巴开发的一个高性能的Java JSON处理库&#xff0c;它支持将Java对象转换成JSON格式&#xff0c;同时也支持将JSON字符串解析成Java对象。本文将介绍fastjson2的常见用法&#xff0c;包括JSON对象、JSON数组的创建、取值、遍历…...

Three.js机器人与星系动态场景(二):强化三维空间认识

在上篇博客中介绍了如何快速利用react搭建three.js平台&#xff0c;并实现3D模型的可视化。本文将在上一篇的基础上强化坐标系的概念。引入AxesHelper辅助工具及文本绘制工具&#xff0c;带你快速理解camer、坐标系、position、可视区域。 Three.js机器人与星系动态场景&#x…...

java顺序查找

其中有一个常用的编程思想&#xff1a; 由于是遍历查找&#xff0c;不能用if-else来输出没有找到&#xff0c;而应该设置一个索引index&#xff0c;如果找到就将index的值设置成下标的值&#xff0c;如果遍历结束后index仍为初始值&#xff0c;才是没有找到 //2024.07.03impor…...

提升学生职务执行力的智慧校园学工管理策略

智慧校园的学工管理系统匠心独运地融入了“学生职务”这一创新模块&#xff0c;它紧密贴合学生的实际需求&#xff0c;致力于在校期间的实践经验积累和个人能力的全面提升。这个模块化身为一个便捷的综合平台&#xff0c;让学生们能够轻松发掘并参与到丰富多彩的校内职务中去&a…...

系统运维面试总结(shell编程)

SYNDDOS攻击&#xff0c;需要判断这个访问是正常访问还是信包攻击&#xff0c;当前这个信包发起的访问数量是多少&#xff0c;例如看到30个信包同时再访问时设置监控报警。 一般选用/dev/urandom生成&#xff0c;但其生成的随机数带有二进制乱码&#xff0c;所以需要tr命令…...

在数据库中,什么是主码、候选码、主属性、非主属性?

在数据库中&#xff0c;主码、候选码、主属性和非主属性是几个重要的概念&#xff0c;它们对于理解数据库的结构和数据的完整性至关重要。以下是对这些概念的详细解释&#xff1a; 一、主码&#xff08;Primary Key&#xff09; 定义&#xff1a;主码&#xff0c;也被称为主键…...

Linux-笔记 udev机制介绍

目录 前言 概念 规则文件 规则文件的命名 规则文件的语法 匹配条件 赋值指令 例子 前言 由于之前利用udev机制实现了一个自动配置某功能的项目&#xff0c;所以这里做一下笔记总结&#xff0c;什么是udev&#xff1f;怎么用&#xff1f; 概念 udev其实是linux系统中一…...

深度学习基准模型Mamba

深度学习基准模型Mamba Mamba(英文直译&#xff1a;眼镜蛇)具有选择性状态空间的线性时间序列建模&#xff0c;是一种先进的状态空间模型 (SSM)&#xff0c;专为高效处理复杂的数据密集型序列而设计。 Mamba是一种深度学习基准模型&#xff0c;专为处理长序列数据而设计&…...

面试专区|【40道移动端测试高频题整理(附答案背诵版)】

iOS应用和Android应用测试有什么侧重点&#xff1f; iOS应用和Android应用测试的侧重点略有不同&#xff0c;主要表现在以下几个方面&#xff1a; 分辨率和屏幕尺寸&#xff1a;Android设备的分辨率和屏幕尺寸多种多样&#xff0c;因此&#xff0c;需要测试更多的分辨率和屏幕…...

vb6多线程异步,VB.NET 全用API实现:CreateThread创建多线程,等待线程完成任务

在VB.NET中&#xff0c;你可以使用API函数来创建多线程并等待线程完成任务。以下是一个示例代码&#xff0c;展示如何使用API函数来实现这个功能&#xff1a; Imports System.Runtime.InteropServices Imports System.ThreadingPublic Class Form1Private Delegate Sub ThreadC…...

Python中计算一个序列中特点值出现的数量,比如 [0,0,0,1,1,0,0,]中1的数量

要计算列表 [0, 0, 0, 1, 1, 0, 0] 中 1 的数量&#xff0c;可以使用 Python 中的 count 方法。这是一个简洁而有效的方法。下面是示例代码&#xff1a; # 定义列表 lst [0, 0, 0, 1, 1, 0, 0]# 计算列表中1的数量 num_ones lst.count(1)# 输出结果 print("Number of 1…...

gitignore

.gitignore 是一个在 Git 版本控制系统中使用的文件&#xff0c;它用于指定在 Git 仓库中哪些文件或目录应该被忽略&#xff0c;即不会被 Git 追踪或记录。这对于一些自动生成的、用户特定的或敏感的文件特别有用&#xff0c;比如编译后的目标文件、日志文件、配置文件中的密码…...

Adobe Premiere 视频编辑软件下载安装,pr全系列分享 轻松编辑视频

Adobe Premiere&#xff0c;自其诞生之日起&#xff0c;便以其卓越的性能和出色的表现&#xff0c;稳坐视频编辑领域的王者宝座&#xff0c;赢得了无数专业编辑人员与广大爱好者的青睐。这款强大的视频编辑软件&#xff0c;凭借其丰富的功能和灵活的操作性&#xff0c;为用户提…...

大屏开发系列——Echarts的基础使用

本文为个人近期学习总结&#xff0c;若有错误之处&#xff0c;欢迎指出&#xff01; Echarts在vue2中的基础使用 一、简单介绍二、基本使用&#xff08;vue2中&#xff09;1.npm安装2.main.js引入3.使用步骤(1)准备带有宽高的DOM容器&#xff1b;(2)初始化echarts实例&#xff…...

指挥中心操作台的形状及空间布局

在现代化的指挥中心&#xff0c;操作台的形状设计至关重要&#xff0c;它不仅影响着操作人员的工作效率和舒适度&#xff0c;还关系到整个指挥系统的运行效果。常见的指挥中心操作台形状多种多样&#xff0c;以满足不同的功能需求和空间布局。 直线型操作台 直线型操作台是最为…...

Linux源码阅读笔记07-进程管理4大常用API函数

find_get_pid find_get_pid(...)函数功能&#xff1a;根据进程编号获取对应的进程描述符&#xff0c;具体Linux内核源码对应函数设计如下&#xff1a; 获取进程描述符&#xff0c;且描述符的count1&#xff0c;表示进程多一个用户 pid_task pid_task(...)函数功能&#xff1…...

后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok

一、什么是JDBC JDBC就是sun公司研发的一套通过java来操控数据库的工具&#xff0c;对应不同的数据库系统有不同的JDBC&#xff0c;而他们统称【驱动】&#xff0c;这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。 JDBC有自己一套原始…...

零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!

这段老挝文字翻译成中文是什么意思&#xff1f;有什么好用的老挝语翻译工具推荐吗&#xff1f; 快速翻译&#xff1a;中老语言无缝转换&#xff0c;实时翻译&#xff0c;让沟通更流畅。 学习工具&#xff1a;零基础入门到流利对话&#xff0c;老挝语真人发音&#xff0c;让你的…...

linux深度deepin基于rsync和apt-mirror同步软件源及构建本地内网源

目录 一、rsync方式二、apt-mirror方式1.安装apt-mirror2.配置apt-mirror(/etc/apt/mirror.list)3.新建存放目录开始下载 3.发布mirror站点 一、rsync方式 参考官方文档地址&#xff1a; https://www.deepin.org/index/docs/wiki/05_HOW-TO/08_%E9%95%9C%E5%83%8F%E5%8A%A0%E9%…...

场景管理分析平台介绍

在数字化浪潮的推动下&#xff0c;数据已成为企业决策的重要依据。特别是在智能驾驶、虚拟现实和物联网等领域&#xff0c;场景数据的高效管理和利用至关重要。在智能驾驶领域面对海量的场景数据&#xff0c;如何高效处理、精准分析&#xff0c;并将其转化为有价值的决策支持&a…...

SQL Server和Oracle数据库的实时同步

数据同步在大数据应用中扮演着关键角色&#xff0c;它确保了数据的实时性和一致性&#xff0c;为数据分析和决策提供了重要支持。常见的数据同步方式包括ETL实时同步和实时ETL工具&#xff0c;后者可以基于日志追踪或触发器进行分类。不同的数据库系统针对实时同步也有各自的实…...

Python中使用Oracle向量数据库实现文本检索系统

Python中使用Oracle向量数据库实现文本检索系统 代码分析 在本文中,我们将深入分析一个使用Oracle向量数据库实现文本检索系统的Python代码,并基于相同的技术生成一个新的示例。这个系统允许我们存储文档及其嵌入向量,并执行相似性搜索。 代码分析 让我们逐步分析原始代码的主…...

java考试题20道

选择题 编译Java源代码文件的命令是javac javac命令是将Java源代码文件进行编译得到字节码文件(.class文件) java命令是在JVM上运行得到的字节码文件 下面是一个示例&#xff1a; javac test.java -------> test.class java test ------> 运行test.class文件下列那…...

云仓的优势体现在哪里?

云仓&#xff0c;即云仓储&#xff0c;是一种基于互联网和大数据技术的新型仓储管理模式。它通过高度的信息化、自动化和集成化管理模式&#xff0c;为企业提供高效、灵活、智能的仓储解决方案。云仓的优势主要体现在以下几个方面&#xff1a; ———————————————…...

github 设置中文,亲测有效

点进去 安装 选上面第二个&#xff0c;不行再选第一个 GitHub - maboloshi/github-chinese: GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese)...

Spring容器生命周期中如前置运行程序和后置运行程序

在Spring容器加入一个实现了BeanPostProcessor接口bean实例&#xff0c;重写postProcessBeforeInitialization、postProcessAfterInitialization方法&#xff0c;在方法里面写具体的实现&#xff0c;从而达到Spring容器在初如化前或销毁时执行预定的程序&#xff0c;方法如下&a…...

C++ 现代教程二

线程支持库 - C中文 - API参考文档 GitHub - microsoft/GSL: Guidelines Support Library Fluent C&#xff1a;奇异递归模板模式&#xff08;CRTP&#xff09; - 简书 #include <thread> #include <iostream> #include <unordered_map> #include <futu…...

JavaScript函数闭包解析

一、什么是闭包 JavaScript中的函数闭包是指函数可以访问其父级作用域中的变量&#xff0c;即使函数在父级作用域外被调用。闭包可以获取和修改其父级作用域中的变量&#xff0c;即使父级作用域已经被销毁。 在JavaScript中&#xff0c;当一个函数被定义时&#xff0c;它会创…...

STM32MP135裸机编程:使用软件触发硬件复位

0 参考资料 STM32MP13xx参考手册.pdf 1 使用寄存器实现软件复位 1.1 复位电路概述 重点关注下面标红的路线&#xff1a; 通过这条路线可以清楚看到&#xff0c;我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL&#xff08;复位脉冲控制器&#xff09;给NRST&#xff08;硬件复…...

【饼图交通方式】用ECharts的graphic配置打造个性化

利用ECharts的graphic配置打造个性化图表 内容概要 ECharts是一款强大的数据可视化工具&#xff0c;它提供了丰富的配置选项来定制图表。本文将重点介绍graphic配置的使用&#xff0c;展示如何通过在饼图中添加个性化的图形元素&#xff0c;例如中心图像&#xff0c;来增强图…...

大模型学习笔记3【大模型】LLaMA学习笔记

文章目录 学习内容LLaMALLaMA模型结构LLaMA下载和使用好用的开源项目[Chinese-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca)Chinese-Alpaca使用量化评估 学习内容 完整学习LLaMA LLaMA 2023年2月&#xff0c;由FaceBook公开了LLaMA&#xff0c;包含7B&#xff0…...

工程师 - 什么是SMP

什么是 SMP&#xff08;对称多处理&#xff09;&#xff1f; What is SMP (symmetric multiprocessing)? 对称多处理&#xff08;SMP&#xff0c;symmetric multiprocessing&#xff09;是由多个处理器完成的计算机处理过程&#xff0c;这些处理器共享一个操作系统&#xff0…...

Webpack: 并行构建

概述 受限于 Node.js 的单线程架构&#xff0c;原生 Webpack 对所有资源文件做的所有解析、转译、合并操作本质上都是在同一个线程内串行执行&#xff0c;CPU 利用率极低&#xff0c;因此&#xff0c;理所当然地&#xff0c;社区出现了一些以多进程方式运行 Webpack&#xff0…...

Vue的介绍与使用

1.Vue的介绍 内容讲解 【1】Vue介绍 1.vue属于一个前端框架&#xff0c;底层使用原生js编写的。主要用来进行前端和后台服务器之间的一个交互。 2.Vue是一套构建用户界面的渐进式前端框架。 “渐进式框架”简单的来说你可以将Vue作为你的应用一部分嵌入其中&#xff0c;代理…...

MYSQL双主双从,使用Keepalived双机热备+LVS高可用群集

MYSQL双主双从&#xff0c;使用Keepalived双机热备LVS高可用群集 ​ 文档只记录KeepalivedLVSmysql主从&#xff0c;不包含检验&#xff0c;如需检验&#xff0c;请自行添加web服务器 一、IP规划 服务器IP备注master1192.168.100.131master2的从master2192.168.100.132maste…...

9.计算机视觉—目标检测

目录 1.物体检测边缘框目标检测数据集总结边缘框代码实现2.锚框:目标检测的一种方法IoU—交并比赋予锚框标号使用非极大值抑制(NMS)输出总结代码实现1.物体检测 边缘框 一个边缘框可以通过四个数字定义 (左上x,左上y),(右下x,右下y)(左上x,左上y,宽,高)(中间x,中间y…...

【刷题汇总--大数加法、 链表相加(二)、大数乘法】

C日常刷题积累 今日刷题汇总 - day0061、大数加法1.1、题目1.2、思路1.3、程序实现 2、 链表相加(二)2.1、题目2.2、思路2.3、程序实现 3、大数乘法3.1、题目3.2、思路3.3、程序实现 4、题目链接 今日刷题汇总 - day006 1、大数加法 1.1、题目 1.2、思路 读完题,明白大数相加…...

springboot三层架构详细讲解

目录 springBoot三层架构0.简介1.各层架构1.1 Controller层1.2 Service层1.3 ServiceImpl1.4 Mapper1.5 Entity1.6 Mapper.xml 2.各层之间的联系2.1 Controller 与 Service2.2 Service 与 ServiceImpl2.3 Service 与 Mapper2.4 Mapper 与 Mapper.xml2.5 Service 与 Entity2.6 C…...

每日一题~ leetcode 402 (贪心+单调栈)

click me! 这个贪心的推导在leetcode上已经很明确了。 click me! 删除k个数&#xff0c;可以先考虑删除一个数。这也是一种常见的思路。&#xff08;如果进行同样的操作多次&#xff0c;可以先只 考虑一次操作如何实现&#xff0c;或者他的影响。完成这一次操作后&#xff0c;…...

物联网的技术和应用有哪些?

随着科技的飞速发展&#xff0c;物联网已经成为连接世界的重要纽带&#xff0c;塑造着我们未来的生活。我们一起深入探索物联网的前沿技术和前瞻性应用&#xff0c;一窥未来的可能性。 获取物联网解决方案&#xff0c;YesPMP平台一站式物联网开发服务。 提示&#xff1a;智慧家…...

AI对话,绘画,文生图的合集的AI小程序怎么制作?前端uniapp,PHP语言开发

前言&#xff1a; 一款AI小程序合集了ai绘画&#xff0c;智能写作&#xff0c;撰写 文章大纲&#xff0c;新媒体起标题&#xff0c;AI绘画多模型选择&#xff0c;支持会员使用&#xff0c;以及带二级分销功能的小程序是怎么搭建制作的&#xff1f; YWchen2022 …...

设计模式学习-《策略模式》

策略模式 问题描述&#xff1a; 有各种鸭子(北京鸭、玩具鸭)&#xff0c;鸭子有各种行为(叫、飞)希望能够实现不同的鸭子&#xff0c;显示不同鸭子的信息 传统方法会创建一个抽象类 public abstract class Duck{public Duck(){}public abstract void display();//显示鸭子信…...

必胜客之后,DQ冰淇淋也跨界卖汉堡了

汉堡界又迎来一重磅新玩家。近日,DQ冰淇淋在其官方微博、小红书等社交媒体上发文称,DQ汉堡全国首店将于7月10日登陆上海。新玩家入局同时,哈比特汉堡、摩斯汉堡等一批“老玩家”却遗憾陆续退出中国市场。汉堡界,似乎从来不缺新故事。01.冰淇淋“专家”卖汉堡29元起卖,不“…...

Facebook的魅力:数字时代的社交热点

在当今数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;一直以其独特的魅力吸引着全球数十亿用户。本文将深入探讨Facebook的魅力所在&#xff0c;以及它在数字时代的社交热点。 1. 社交网络的霸主&…...

LLAMA3==shenzhi-wang/Llama3-8B-Chinese-Chat。windows安装不使用ollama

创建环境&#xff1a; conda create -n llama3_env python3.10 conda activate llama3_env conda install pytorch torchvision torchaudio cudatoolkit11.7 -c pytorch 安装Hugging Face的Transformers库&#xff1a; pip install transformers sentencepiece 下载模型 ht…...

DETR整体模型结构解析

DETR流程 Backbone用卷积神经网络抽特征。最后通过一层1*1卷积转化到d_model维度fm&#xff08;B,d_model,HW&#xff09;。 position embedding建立跟fm维度相同的位置编码(B&#xff0c;d_model,HW&#xff09;。 Transformer Encoder,V为fm&#xff0c;K&#xff0c;Q为fm…...

命令行如何设置openkylin os(UKUI)的壁纸

命令行执行 gsettings set org.mate.background picture-filename ‘path’ path就是图片路径 即可将path路径的图片设置为壁纸 我在研究做kylin的动态壁纸的时候发现的&#xff0c; gsettings set org.mate.background picture-filename ‘path’ 设置桌面背景纯色 gsetting…...

景源畅信电商:做抖音运营怎么开始第一步?

在数字化时代的浪潮中&#xff0c;抖音作为一款短视频平台迅速崛起&#xff0c;成为许多人表达自我、分享生活的重要舞台。随着用户量的激增&#xff0c;如何做好抖音运营&#xff0c;尤其是迈出成功的第一步&#xff0c;成为了众多内容创作者和品牌主们关注的焦点。接下来&…...