【计算机视觉 | 目标检测】RT-DETR:DETRs Beat YOLOs on Real-time Object Detection

news2024/9/22 13:22:41

在这里插入图片描述

文章目录

  • 一、前言
  • 二、简介
  • 三、相关方法
    • 3.1 实时目标检测器
    • 3.2 端到端目标检测器
    • 3.3 目标检测的多尺度特征
  • 四、检测器端到端速度
    • 4.1 分析NMS
    • 4.2 端到端速度基准
  • 五、The Real-time DETR
    • 5.1 方法概览
    • 5.2 高效混合编码器
      • 5.2.1 计算瓶颈分析
      • 5.2.2 Hybrid design
      • 5.2.3 IoU-Aware查询选择
      • 5.2.4 有效性分析
      • 5.2.5 Scaled RT-DETR
  • 六、实验
    • 6.1 与SOTA比较
    • 6.2 混合编码器的消融实验研究
    • 6.3 IoU感知查询选择的消融研究
    • 6.4 解码器的消融研究

一、前言

最近,基于Transformer的端到端检测器(DETR)已经取得了显著的性能。然而,DETR的高计算成本问题尚未得到有效解决,这限制了它们的实际应用,并使它们无法充分利用无后处理的好处,如非最大值抑制(NMS)。

本文首先分析了现代实时目标检测器中NMS对推理速度的影响,并建立了端到端的速度基准。为了避免NMS引起的推理延迟,作者提出了一种实时检测Transformer(RT-DETR),这是第一个实时端到端目标检测器。

具体而言,设计了一种高效的混合编码器,通过解耦尺度内交互和跨尺度融合来高效处理多尺度特征,并提出了IoU感知的查询选择,以提高目标查询的初始化。

此外,本文提出的检测器支持通过使用不同的解码器层来灵活调整推理速度,而不需要重新训练,这有助于实时目标检测器的实际应用。

RTDETR-L在COCO val2017上实现了53.0%的AP,在T4 GPU上实现了114 FPS,而RT-DETR-X实现了54.8%的AP和74 FPS,在速度和精度方面都优于相同规模的所有YOLO检测器。

此外,RTDETR-R50实现了53.1%的AP和108 FPS,在精度上比DINO-Deformable-DETR-R50高出2.2%的AP,在FPS上高出约21倍。

二、简介

目标检测是一项基本的视觉任务,涉及识别和定位图像中的目标。现代目标检测器有两种典型的体系结构:

  • 基于CNN
  • 基于Transformer

在过去的几年里,人们对基于CNN的目标检测器进行了广泛的研究。这些检测器的架构已经从最初的两阶段发展到一阶段,并且出现了两种检测范式,Anchor-Base和Anchor-Free。这些研究在检测速度和准确性方面都取得了重大进展。

基于Transformer的目标检测器(DETR)由于消除了各种手工设计的组件,如非最大值抑制(NMS),自提出以来,受到了学术界的广泛关注。该架构极大地简化了目标检测的流水线,实现了端到端的目标检测。

实时目标检测是一个重要的研究领域,具有广泛的应用,如目标跟踪、视频监控、自动驾驶等。现有的实时检测器通常采用基于CNN的架构,在检测速度和准确性方面实现了合理的权衡。然而,这些实时检测器通常需要NMS进行后处理,这通常难以优化并且不够鲁棒,导致检测器的推理速度延迟。

最近,由于研究人员在加速训练收敛和降低优化难度方面的努力,基于Transformer的检测器取得了显著的性能。然而,DETR的高计算成本问题尚未得到有效解决,这限制了DETR的实际应用,并导致无法充分利用其优势。这意味着,尽管简化了目标检测流水线,但由于模型本身的计算成本高,很难实现实时目标检测。

上述问题自然启发考虑是否可以将DETR扩展到实时场景,充分利用端到端检测器来避免NMS对实时检测器造成的延迟。为了实现上述目标,作者重新思考了DETR,并对其关键组件进行了详细的分析和实验,以减少不必要的计算冗余。

具体而言,作者发现,尽管多尺度特征的引入有利于加速训练收敛和提高性能,但它也会导致编码器中序列长度的显著增加。因此,由于计算成本高,Transformer编码器成为模型的计算瓶颈。为了实现实时目标检测,设计了一种高效的混合编码器来取代原来的Transformer编码器。通过解耦多尺度特征的尺度内交互和尺度间融合,编码器可以有效地处理不同尺度的特征。

此外,先前的工作表明,解码器的目标查询初始化方案对检测性能至关重要。为了进一步提高性能,作者提出了IoU-Aware的查询选择,它通过在训练期间提供IoU约束来向解码器提供更高质量的初始目标查询。

在过去的几年里,人们对基于CNN的目标检测器进行了广泛的研究。这些检测器的架构已经从最初的两阶段发展到一阶段,并且出现了两种检测范式,Anchor-Base和Anchor-Free。这些研究在检测速度和准确性方面都取得了重大进展。

基于Transformer的目标检测器(DETR)由于消除了各种手工设计的组件,如非最大值抑制(NMS),自提出以来,受到了学术界的广泛关注。该架构极大地简化了目标检测的流水线,实现了端到端的目标检测。

实时目标检测是一个重要的研究领域,具有广泛的应用,如目标跟踪、视频监控、自动驾驶等。现有的实时检测器通常采用基于CNN的架构,在检测速度和准确性方面实现了合理的权衡。然而,这些实时检测器通常需要NMS进行后处理,这通常难以优化并且不够鲁棒,导致检测器的推理速度延迟。

最近,由于研究人员在加速训练收敛和降低优化难度方面的努力,基于Transformer的检测器取得了显著的性能。然而,DETR的高计算成本问题尚未得到有效解决,这限制了DETR的实际应用,并导致无法充分利用其优势。这意味着,尽管简化了目标检测流水线,但由于模型本身的计算成本高,很难实现实时目标检测。

上述问题自然启发考虑是否可以将DETR扩展到实时场景,充分利用端到端检测器来避免NMS对实时检测器造成的延迟。为了实现上述目标,作者重新思考了DETR,并对其关键组件进行了详细的分析和实验,以减少不必要的计算冗余。

具体而言,作者发现,尽管多尺度特征的引入有利于加速训练收敛和提高性能,但它也会导致编码器中序列长度的显著增加。因此,由于计算成本高,Transformer编码器成为模型的计算瓶颈。为了实现实时目标检测,设计了一种高效的混合编码器来取代原来的Transformer编码器。通过解耦多尺度特征的尺度内交互和尺度间融合,编码器可以有效地处理不同尺度的特征。

此外,先前的工作表明,解码器的目标查询初始化方案对检测性能至关重要。为了进一步提高性能,作者提出了IoU-Aware的查询选择,它通过在训练期间提供IoU约束来向解码器提供更高质量的初始目标查询。

在这里插入图片描述
此外,提出的RT-DETR-R50实现了53.1%的AP和108 FPS,而RT-DETR-R101实现了54.3%的AP和74 FPS。其中,RT-DETR50在准确度上优于DINO-Deformable-DETR-R50 2.2%的AP(53.1%的AP对50.9%的AP),在FPS(108 FPS对5 FPS)上优于DINO-Deformable-DETR-R5约21倍。

本文的主要贡献总结如下:

  1. 提出了第一个实时端到端目标检测器,它不仅在准确性和速度上优于当前的实时检测器,而且不需要后处理,因此推理速度不延迟,保持稳定;
  2. 详细分析了NMS对实时检测器的影响,并从后处理的角度得出了关于基于CNN的实时检测器的结论;
  3. 提出的IoU-Aware查询选择在我们的模型中显示出优异的性能改进,这为改进目标查询的初始化方案提供了新的线索;
  4. 本文的工作为端到端检测器的实时实现提供了一个可行的解决方案,并且所提出的检测器可以通过使用不同的解码器层来灵活地调整模型大小和推理速度,而不需要重新训练。

三、相关方法

3.1 实时目标检测器

经过多年的不断发展,YOLO系列已成为实时目标检测器的代名词,大致可分为两类:

  • Anchor-Base
  • Anchor-Free

从这些检测器的性能来看,Anchor不再是制约YOLO发展的主要因素。然而,上述检测器产生了许多冗余的边界框,需要在后处理阶段使用NMS来过滤掉它们。

不幸的是,这会导致性能瓶颈,NMS的超参数对检测器的准确性和速度有很大影响。作者认为这与实时目标检测器的设计理念不兼容。

3.2 端到端目标检测器

端到端目标检测器以其流线型管道而闻名。Carion等人首先提出了基于Transformer的端到端目标检测器,称为DETR(DEtection Transformer)。它因其独特的特点而备受关注。特别地,DETR消除了传统检测流水线中手工设计的Anchor和NMS组件。相反,它采用二分匹配,并直接预测一对一的对象集。通过采用这种策略,DETR简化了检测管道,缓解了NMS带来的性能瓶颈。

尽管DETR具有明显的优势,但它存在两个主要问题:

  1. 训练收敛缓慢
  2. 查询难以优化

已经提出了许多DETR变体来解决这些问题。具体而言,Deformable DETR通过提高注意力机制的效率,加速了多尺度特征的训练收敛。Conditional DETR和Anchor DETR降低了查询的优化难度。DAB-DETR引入4D参考点,并逐层迭代优化预测框。DN-DETR通过引入查询去噪来加速训练收敛。DINO以之前的作品为基础,取得了最先进的成果。

尽管正在不断改进DETR的组件,但本文的目标不仅是进一步提高模型的性能,而且是创建一个实时的端到端目标检测器。

3.3 目标检测的多尺度特征

现代目标检测器已经证明了利用多尺度特征来提高性能的重要性,尤其是对于小物体。FPN引入了一种融合相邻尺度特征的特征金字塔网络。随后的工作扩展和增强了这种结构,并被广泛用于实时目标检测器。Zhu等人首先在DETR中引入了多尺度特征,提高了性能和收敛速度,但这也导致了DETR计算成本的显著增加。

尽管Deformable Attention制在一定程度上减轻了计算成本,但多尺度特征的结合仍然会导致较高的计算负担。为了解决这个问题,一些工作试图设计计算高效的DETR。Effificient DETR通过初始化具有密集先验的目标查询来减少编码器和解码器层的数量。Sparse DETR选择性地更新期望被解码器引用的编码器token,从而减少计算开销。Lite DETR通过以交错方式降低低级别特征的更新频率来提高编码器的效率。尽管这些研究降低了DETR的计算成本,但这些工作的目标并不是将DETR作为一种实时检测器来推广。

四、检测器端到端速度

4.1 分析NMS

NMS是检测中广泛采用的后处理算法,用于消除检测器输出的重叠预测框。NMS中需要2个超参数:得分阈值和IoU阈值。

特别地,分数低于分数阈值的预测框被直接过滤掉,并且每当2个预测框的IoU超过IoU阈值时,分数较低的框将被丢弃。重复执行此过程,直到每个类别的所有框都已处理完毕。因此,NMS的执行时间主要取决于输入预测框的数量和两个超参数。

在这里插入图片描述
为了验证这一观点,作者利用YOLOv5和YOLOv8进行实验。首先计算在输出框被相同输入图像的不同得分阈值滤波后剩余的预测框的数量。采样了0.001到0.25的一些分数作为阈值,对两个检测器的剩余预测框进行计数,并将其绘制成直方图,直观地反映了NMS易受其超参数的影响,如图2所示。

此外,以YOLOv8为例,评估了不同NMS超参数下COCO val2017的模型准确性和NMS操作的执行时间。

在这里插入图片描述
注意,在实验中采用的NMS后处理操作是指TensorRT efficientNMSPlugin,它涉及多个CUDA内核,包括EfficientNMSFilter、RadixSort、EfficientNMS等,作者只报告了EfficientNMS内核的执行时间。在T4 GPU上测试了速度,上述实验中的输入图像和预处理是一致的。使用的超参数和相应的结果如表1所示。

4.2 端到端速度基准

为了能够公平地比较各种实时检测器的端到端推理速度,作者建立了一个端到端速度测试基准。考虑到NMS的执行时间可能会受到输入图像的影响,有必要选择一个基准数据集,并计算多个图像的平均执行时间。该基准采用COCO val2017作为默认数据集,为需要后处理的实时检测器添加了TensorRT的NMS后处理插件。

具体来说,根据基准数据集上相应精度的超参数测试检测器的平均推理时间,不包括IO和内存复制操作。利用该基准测试T4 GPU上基于锚的检测器YOLOv5和YOLOv7以及Anchor-Free检测器PP-YOLOE、YOLOv6和YOLOv8的端到端速度。

测试结果如表2所示。

在这里插入图片描述

根据结果得出结论,对于需要NMS后处理的实时检测器,Anchor-Free检测器在同等精度上优于Anchor-Base的检测器,因为前者的后处理时间明显少于后者,这在以前的工作中被忽略了。这种现象的原因是,Anchor-Base的检测器比Anchor-Free的检测器产生更多的预测框(在测试的检测器中是3倍多)。

五、The Real-time DETR

5.1 方法概览

所提出的RT-DETR由Backbone、混合编码器和带有辅助预测头的Transformer解码器组成。模型体系结构的概述如图3所示。

在这里插入图片描述
具体来说:

  • 首先,利用Backbone的最后3个阶段的输出特征作为编码器的输入;
  • 然后,混合编码器通过尺度内交互和跨尺度融合将多尺度特征转换为一系列图像特征(如第4.2节所述);
  • 随后,采用IoU-Aware查询选择从编码器输出序列中选择固定数量的图像特征,作为解码器的初始目标查询;
  • 最后,具有辅助预测头的解码器迭代地优化对象查询以生成框和置信度得分。

5.2 高效混合编码器

5.2.1 计算瓶颈分析

为了加速训练收敛并提高性能,Zhu等人建议引入多尺度特征,并提出Deformable Attention机制以减少计算。然而,尽管注意力机制的改进减少了计算开销,但输入序列长度的急剧增加仍然导致编码器成为计算瓶颈,阻碍了DETR的实时实现。

D 2 E T R D^2ETR D2ETR所述,编码器占GFLOP的49%,但在Deformable DETR中仅占AP的11%。为了克服这一障碍,作者分析了多尺度Transformer编码器中存在的计算冗余,并设计了一组变体,以证明尺度内和尺度间特征的同时交互在计算上是低效的。

从包含关于图像中的对象的丰富语义信息的低级特征中提取高级特征。直观地说,对连接的多尺度特征进行特征交互是多余的。如图5所示,为了验证这一观点,作者重新思考编码器结构,并设计了一系列具有不同编码器的变体。

在这里插入图片描述
该组变体通过将多尺度特征交互解耦为尺度内交互和跨尺度融合的两步操作,逐步提高模型精度,同时显著降低计算成本。首先删除了DINO-R50中的多尺度变换编码器作为基线A。接下来,插入不同形式的编码器,以产生基于基线A的一系列变体,具体如下:

  • A→ B:变体B插入一个单尺度Transformer编码器,该编码器使用一层Transformer
    Block。每个尺度的特征共享编码器,用于尺度内特征交互,然后连接输出的多尺度特征。
  • B→ C:变体C引入了基于B的跨尺度特征融合,并将连接的多尺度特征输入编码器以执行特征交互。
  • C→D:变体D解耦了多尺度特征的尺度内交互和跨尺度融合。首先,使用单尺度Transformer编码器进行尺度内交互,然后使用类PANet结构进行跨尺度融合。
  • D→ E:变体E进一步优化了基于D的多尺度特征的尺度内交互和跨尺度融合,采用了设计的高效混合编码器。

5.2.2 Hybrid design

在这里插入图片描述

在这里插入图片描述
CCFM也基于变体D进行了优化,在融合路径中插入了几个由卷积层组成的融合块。融合块的作用是将相邻的特征融合成一个新的特征,其结构如图4所示。融合块包含N个RepBlock,两个路径输出通过元素相加进行融合。

可以将这个过程表述如下:

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

5.2.3 IoU-Aware查询选择

DETR中的目标查询是一组可学习的嵌入,这些嵌入由解码器优化,并由预测头映射到分类分数和边界框。然而,这些目标查询很难解释和优化,因为它们没有明确的物理意义。后续工作改进了目标查询的初始化,并将其扩展到内容查询和位置查询(Anchor点)。其中,Effificient detr、Dino以及Deformable detr都提出了查询选择方案,它们的共同点是利用分类得分从编码器中选择Top-K个特征来初始化目标查询(或仅位置查询)。然而,由于分类得分和位置置信度的分布不一致,一些预测框具有高分类得分,但不接近GT框,这导致选择了分类得分高、IoU得分低的框,而分类得分低、IoU分数高的框被丢弃。这会削弱探测器的性能。

为了解决这个问题,作者提出了IoU-Aware查询选择,通过约束模型在训练期间为具有高IoU分数的特征产生高分类分数,并为具有低IoU得分的特征产生低分类分数。因此,与模型根据分类得分选择的Top-K个编码器特征相对应的预测框具有高分类得分和高IoU得分。

将检测器的优化目标重新表述如下:

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

5.2.4 有效性分析

为了分析所提出的IoU感知查询选择的有效性,在val2017上可视化了查询选择所选择的编码器特征的分类分数和IoU分数,如图6所示。

在这里插入图片描述
具体来说,首先根据分类得分选择前K个(在实验中K=300)编码器特征,然后可视化分类得分大于0.5的散点图。红点和蓝点是根据分别应用普通查询选择和IoU感知查询选择训练的模型计算的。点越靠近图的右上角,对应特征的质量就越高,即分类标签和边界框更有可能描述图像中的真实对象。

根据可视化结果发现最引人注目的特征是大量蓝色点集中在图的右上角,而红色点集中在右下角。这表明,使用IoU感知查询选择训练的模型可以产生更多高质量的编码器特征。

此外,还定量分析了这两类点的分布特征。图中蓝色点比红色点多138%,即分类得分小于或等于0.5的红色点更多,这可以被视为低质量特征。然后,分析分类得分大于0.5的特征的IoU得分,发现IoU得分大于0.5时,蓝色点比红色点多120%。

定量结果进一步表明,IoU感知查询选择可以为对象查询提供更多具有准确分类(高分类分数)和精确定位(高IoU分数)的编码器特征,从而提高检测器的准确性。

5.2.5 Scaled RT-DETR

为了提供RT-DETR的可扩展版本,将ResNet网替换为HGNetv2。使用depth multiplier和width multiplier将Backbone和混合编码器一起缩放。因此,得到了具有不同数量的参数和FPS的RT-DETR的两个版本。

对于混合编码器,通过分别调整CCFM中RepBlock的数量和编码器的嵌入维度来控制depth multiplier和width multiplier。值得注意的是,提出的不同规模的RT-DETR保持了同质解码器,这有助于使用高精度大型DETR模型对光检测器进行蒸馏。这将是一个可探索的未来方向。

六、实验

6.1 与SOTA比较

在这里插入图片描述

6.2 混合编码器的消融实验研究

在这里插入图片描述

6.3 IoU感知查询选择的消融研究

在这里插入图片描述

6.4 解码器的消融研究

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】105. 从前序与中序遍历序列构造二叉树

1.问题 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null…

“访达”不能完成操作,因为不能读取或写入“”中某些数据。

“访达”不能完成操作,因为不能读取或写入“”中某些数据。 复制文件夹时出现「“访达”不能完成该操作,因为不能读取或写入“”中的某些数据。 (错误代码-36)」及icloud中文件夹无法下载提示「未能下载项目“XX”。」 最近1个月…

1.Mybatis基本介绍

为什么使用MyBatis? 1.JDBC在创建Connection的时候,存在硬编码问题(也就是直接把连接信息写死,不方便后期维护) 2.preparedStatement对象在执行sql语句的时候存在硬编码问题 3.每次在进行一次数据库连接后都会关闭数据…

【SWAT水文模型】ArcSWAT输入准备:土地利用/土壤/气象数据

ArcSWAT输入准备:土地利用/土壤/气象数据 1 土地利用数据的处理1.1 数据下载 2 土壤库建立2.1 数据下载 3 气象数据库参考 1 土地利用数据的处理 1.1 数据下载 下载地址如下: 中科院1km土地利用数据 清华大学高精度土地利用数据 2 土壤库建立 SW…

pytest学习二(通过配置文件运行、分组执行,及其它一些参数)

接上一篇说到了环境的配置,以及一个用例的编写,接下来继续记录一些它的运行方式和一些平常使用的标签 一、通过全局配置文件(pytest.ini)运行 pytest.ini配置文件的编写规则 ①编码格式一般为ANSI ②一般放在项目的根目录下&a…

个人杂笔记

docker里面的-p暴露端口是确确实实写了才会映射到主机 docker run -d --hostname my-rabbit --name my-rabbit -e RABBITMQ_DEFAULT_USERroot -e RABBITMQ_DEFAULT_PASS250772730 -p 8080:8080 -p 15672:15672 -p 5672:5672 rabbitmq:3-managementpip安装提示warning 可能原因…

【 Spring Mybatis 复杂的查询操作 】

文章目录 引言一、参数占位符 #{} 和 ${}二、SQL 注入三、like 模糊查询四、返回类型:resultType 和 resultMap五、多表查询 引言 前面我们已经学会了使用 Mybatis 进行增,删,改操作,也实现了简单的查询操作 !下面我们…

执着于考研考公却一再挫败,拿什么拯救你的职场后半生?

今天之所以想写一篇这样的文章,确确实实是有感而发,因为从近来接触的学员身上,能够最直观地感受到:考公考研失败后的同学,他们内心的那种焦虑感远超往期! 用他们的话讲:“目前的状态就是感觉自…

540. 有序数组中的单一元素

给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 示例 1: 输入: nums [1,1,2,3,3,4,4,8,8] 输出: 2 示…

“开发人员必备技能:Python接口自动化测试全攻略“:了解接口测试的基础知识,并通过Python编写测试用例,提升自己的测试技能

目录 摘要 一、基础知识 二、工具选择 三、实现步骤 1.安装依赖库 2.编写测试用例 3.运行测试用例 4.查看测试结果 四、代码实现 总结 摘要 随着互联网行业的不断发展,越来越多的企业开始注重自动化测试的重要性。而在自动化测试中,接口自动化…

同为科技(TOWE)防雷科普篇(二)——雷击灾害急救方法大全

前 言 当雷击发生时,空气中的各种微粒互相碰撞和摩擦便会使该空气介质两面的正负电荷的量持续积累,这时加于该空气介质的电压也会同时增加,当局部电压达到当时条件下空气的击穿电压时,该空气介质的局部便会发生电击穿而持续成为等…

我国激光打标机行业分析:防疫放开医疗行业激光打标机需求迫切 行业将迈向自动化、智能化的未来

1、激光打标机行业定义、分类及应用范围 激光打标机是用激光束在各种不同的物质表面打上永久标记的激光设备。激光打标技术相比传统的标识技术,不仅仅在对于材料的损耗,标识效果更具有优势,并且在生产加工的效率和产出方面更是有过之而无不及…

【复现与代码分析】Apache APISIX Dashboard API权限绕过导致RCE(CVE-2021-45232)

Apache APISIX Dashboard API权限绕过导致RCE(CVE-2021-45232) 0x00漏洞信息 Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Apache APISIX …

节点流和处理流

节点流可以从一个特定的数据源读写数据,如FileReader,FileWriter处理流(也叫包装流)是“连接”在已存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,也更加灵活&#xf…

JavaEE IP协议详细讲解

详细讲解IP协议 O > O 文章目录 JavaEE & IP协议1. 地址管理1.1 IP协议报文格式1.2 动态分配IP地址1.3 NAT机制1.4 IP协议1.4 IP协议工作过程1.5 IPV6协议1.6 IP地址的组成1.7 特殊的IP地址 2. 路由选择 JavaEE & IP协议 1. 地址管理 我们希望,每个网络…

免费AI人工智能在线写作伪原创-百度ai自动写文章

免费伪原创洗稿工具 免费伪原创洗稿工具现在终于推出了!你是否在写作的时候,经常因为缺乏灵感而苦恼?或者,你在撰写文章的时候,发现自己的语言表述不够丰富,缺乏变化,语句重复率太高&#xff1f…

从零学习SDK(9)SDK的局限

SDK是一种便捷而实用的工具,但软件开发者不能视SDK为万能的解决之道,SDK也有局限性,并且这些局限性可能会十分“致命”。软件开发者在选择SDK产品之前,需要先了解SDK的不足之处。本文将介绍SDK存在的三种问题,以引起软…

新手必看!ChatGPT常见问题总整理,你遇到了几个?

随着ChatGPT火爆全球,使用人数以指数型成长,许多使用上的问题呈现在网路上。 今天这篇文章会用实作的方式带大家了解ChatGPT有哪些常见问题,以此减少踩坑的机会。 并用简单的示例让大家感受GPT-3.5与GPT-4的能力差异,希望对大家有所帮助。 大家会有这些问题,其实就是希望…

【手把手做ROS2机器人系统开发一】开发环境搭建

【手把手做ROS2机器人系统开发一】开发环境搭建 目录 【手把手做ROS2机器人系统开发一】开发环境搭建 一、专栏介绍: 二、开发环境搭建: 1.Ubuntu系统安装 2.ROS2系统环境安装 3.测试系统运行 一、专栏介绍: 大家好,今天给大家…

哈希表企业应用-淘宝分布式文件系统核心存储引擎

哈希表企业应用-淘宝分布式文件系统核心存储引擎-基本概述 淘宝网 谁都知道 是一个电子商务网站,可能是第一批电商模式 b2c 当然从一个技术人员讲只有一点 淘宝店铺商品存储到哪里 感觉有点像废话 :肯定在仓库里 不,我说的是 :商品详情页以及商品介绍 存储 在哪里 我知道大家都…