PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

364次阅读
没有评论

点击下方卡片,关注「集智书童」公众号

点击加入👉「集智书童」交流群

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

这篇论文展示了2D Backbone 扩展和预训练对于基于Pillar体的3D目标检测的有效性。基于Pillar的方法主要采用随机初始化的2D卷积神经网络(ConvNet)进行特征提取,未能在图像领域享受到 Backbone 扩展和预训练的好处。

为了展示点云中的扩展能力,作者引入了在大规模图像数据集(如ImageNet)上预训练的密集卷积神经网络作为基于Pillar检测器的2D Backbone 。卷积网络根据点云的特征(如稀疏性和不规则性)根据模型大小进行自适应设计。配备了预训练的卷积网络,作者提出的基于Pillar的检测器PillarNeSt在nuScenes和Argoversev2数据集上远远超过了现有的3D目标检测器。

I Introduction

点云3D目标检测是自动驾驶和机器人领域的一个关键任务,旨在识别和定位围绕自车代理周围的对象。虽然在这个领域取得了很大的进展,但在性能和效率方面仍然存在显著的差距,尤其是在处理原始点云数据的情况下。解决这个挑战的主要方法是将点云转换为结构化数据,如基于Voxel的和基于Pillar的表示。基于Voxel的方法产生3D体素并使用3D卷积进行特征提取。基于Pillar的方法首先将点云转换为伪图像表示,然后使用2D Backbone 进行特征提取。

与基于体素的方法相比,基于Pillar的方法不需要使用3D卷积神经网络来产生特征,从而实现了高检测速度,并且在实际部署中相对容易。作为一种高效范式,基于Pillar的检测器主要采用随机初始化的2D卷积神经网络进行特征提取。2D卷积神经网络的结构简单地采用图像域中的结构。

然而,在大规模数据集(例如ImageNet)上预训练的2D Backbone 并没有有效地利用于基于Pillar的检测器。对于基于Pillar的检测器,模型大小增加时并没有观察到明显的扩展现象。同时,在2D图像感知方面也取得了巨大的进步。在基于 Backbone 的图像数据集上进行扩展和预训练的2D下游感知任务显示出巨大的性能改进。因此,作者可以提出两个尚未解决的问题:

  1. 是否可以在点云领域观察到类似于2D图像域的扩展现象?

  2. 如何将预训练过程提取的图像知识转移到基于Pillar的检测器中?

对于第一个问题,最大的问题是缺乏合理的可扩展 Backbone 设计。对于第二个问题,很难为基于Pillar的检测器预训练图像 Backbone ,以适应Pillar检测器的特殊 Backbone 设计。

在本文中,作者旨在回答上述两个问题并探索 Backbone 扩展和预训练对基于Pillar的3D目标检测的有效性。由于基于Pillar的方法将点云转换为伪图像表示,作者主要将图像域中的知名ConvNeXt作为密集特征提取的基本网络。为了验证 Backbone 扩展的有效性,作者首先构建了一个基于CenterPoint-Pillars的强基准,并在Pillar编码器、检测头和损失函数上进行了一些修改。然后,作者将ConvNeXt的架构进行了修改,以适应点云的特征。具体而言,作者引入了一些根据点云特性设计的 Backbone 设计规则。

例如,作者引入了大的核(例如,卷积层),以增加点云的感受野,并在早期阶段引入更多的块以细化点云的特征。在 Backbone 扩展方面,作者提供了一系列不同规模的卷积神经网络模型,即PillarNeSt-Tiny,-Small,-Base和-Large,以实现性能和推理速度之间的权衡。最后,对于 Backbone 预训练,作者利用在大规模图像数据集(例如ImageNet)上预训练的ConvNeXt作为2D Backbone 的权重初始化。考虑到原始ConvNeXt和作者修改后的版本之间存在巨大的差异,作者从两个角度引入了权重初始化适应:阶段视图和微观视图。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

通过对2D密集 Backbone 的特殊的扩展和预训练设计,作者提出的PillarNeSt系列在模型大小增加时,性能呈线性扩展,如图1所示。此外,作者还观察到,与常见的随机初始化相比,使用预训练的2D Backbone 可以促进收敛并提高性能。作者的提出的PillarNeSt在nuScenes和Argoversev2数据集上远远超过了现有的3D目标检测器。在没有任何测试时增加的增强中,PillarNeSt-L在nuScenes测试集上实现了66.9% mAP71.6% NDS。PillarNeSt-B在Argoversev2验证数据集上实现了35.9% mAP28.6% CDS。作者希望这些观察结果可以带来一些关于将2D Backbone 的扩展和预训练集成到3D目标检测中的启示。

II Related Work

Grid-based 3D Object Detection

基于网格的3D目标检测近年来在自动驾驶和机器人等领域获得了显著的兴趣。基于网格的分割方法提供了一种结构化的方式来处理点云固有的稀疏性和不规则性。这些方法通常被分类为基于Voxel的和基于Pillar的方法。

基于体素的方法。这个领域最早且最具影响力的作品之一是,它将点云分割成3D体素并使用3D卷积进行特征提取。尽管VoxelNet奠定了基础,但也引入了一些挑战,例如在户外环境中的空体素。后续方法,如[44, 48, 13],通过引入3D稀疏卷积来解决这些挑战,不仅提高了检测精度,还提高了计算效率。[9, 30]通过优化 Backbone 网络大大提高了基于体素的方法的性能。

基于Pillar的方法。PointPillars将视角从3D体素化转向2DPillar,专注于地面平面。通过将2D体素化与基于点的特征提取器相结合,PointPillars有效地利用了2D卷积,使其特别适合于具有有限计算资源的嵌入式系统。其他工作,如[33, 46, 8],通过引入特征投影和多尺度聚合策略进一步改进了基于Pillar的检测。历史上,基于Pillar的方法在性能方面落后于基于体素的方法。最近,[25, 35, 51]引入了更先进的 Backbone 网络,与基于体素的方法缩小了性能差距。

Backbone Pretraining and Scaling

Backbone 预训练和扩展在2D感知任务中取得了巨大的成功。通过在像ImageNet这样的大规模数据集上预训练,2D卷积神经网络可以从图像中获取一般知识,并可以转移到下游任务。模型扩展,即增加网络的深度、宽度和分辨率,已成为改进各种图像识别任务性能的关键策略。 Backbone 扩展和预训练的明显应用是EfficientNet,它利用了一种复合扩展方法,将网络的所有尺寸统一扩展。

在3D领域,方法如[32, 27]利用局部重构技术对点云模型进行预训练。预训练变换器网络提供了稳健的初始化,这对于下游任务是有利的。[42]利用预训练的图像模型进行3D分析。通过将2D图像领域的知识转移到3D点云,P2P可以桥接这两者之间的鸿沟,可能从2D任务中大量可标记数据的丰富性中受益。

III Method

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

作者的PillarNeSt结构如图2所示。与典型的基于Pillar的检测器类似,PillarNeSt包括:

  1. Pillar编码器,将原始点云转换为伪图像表示;
  2. 2D Backbone ,用于提取特征;
  3. 融合多尺度特征的颈部;
  4. 预测3D对象的3D检测头。

PillarNeSt主要关注2D Backbone 部分。作者首先引入了一个带有对Pillar编码器、检测头和损失函数的修改的强基准。然后,作者描述了 Backbone 设计、扩展和预训练策略。最后,作者讨论了与现有工作的主要区别。

Strong Baseline

作者选择CenterPoint-Pillars作为作者的基准,其中PointPillars作为 Backbone 。作者的强基准主要在Pillar编码器、检测头和损失函数上进行了一些改进。

Pillar编码器。 在原始的Pillar编码器中,多层感知(MLPs)用于从点云中提取特征,然后通过池化提取Pillar特征。仅依赖池化会导致信息损失。在本文中,作者同时使用池化和平均池化来保留更多的信息。此外,作者还引入了相对于几何中心的高度偏移作为输入,以补偿在轴上的信息损失。

检测头。 以前的工作已经确定,分类和定位之间的低相关性是池化检测的一个原因。受此启发,作者在检测头中集成了一个IoU分支来预测IoU分数。在推理时,作者使用IoU分数重新加权分类得分,如图1所示:

其中,是分类得分,是预测的IoU分数(范围在[0,1]之间),是一个超参数,用于平衡

损失函数。 遵循[48],作者使用高斯焦点损失进行热图分类,同时使用L1损失来处理回归偏移和IoU分数。复合损失的公式如下:

在这里,是对应的权重系数。

训练策略。 在训练期间,作者使用[48]中的复制粘贴数据增强。遵循[39],作者引入了消退策略,在最后几个epoch中禁用增强。

Backbone Design

大核很重要。 一些先前的方法试图通过使用稀疏或密集卷积层的多层卷积神经网络来提高表示。这些CNN Backbone 通常使用卷积层进行特征提取。如上所述,基于Pillar的方法将点云转换为2D表示(伪图像)。处理这样的2D表示与图像域中的情况非常相似。

在[31]的开创性工作中,引入了有效感受野(ERF)的概念。它指出,ERF的数量增加并不会显著提高。一些最近的工作[15, 29]认为,通过使用更大的核可以有效地实现较大的ERF。此外,[9, 18, 30]也指出,较大的感受野可以增强点云检测器的性能。为了平衡效率和性能,作者采用ConvNeXt Block,其中使用77的逐点卷积层。

移除第一阶段降采样。 考虑到图像的信息冗余,图像 Backbone 通常执行降采样操作,例如,使用步长为2的卷积层,以降低整体计算成本。原始点云数据稀疏且不规则,但包含丰富的详细信息。这些特性提出了一个挑战:过早或过度的降采样可能导致关键信息的丢失。这强调了设计策略的重要性,这些策略可以精心保持这些细节,同时高效地处理点云。

考虑到这些因素,作者的 Backbone 设计移除了茎并避免在第一阶段块中实现降采样。这个战略选择确保了输入特征的原分辨率得到保留。

在早期使用更多的块。 图像域的 Backbone 设计倾向于在后期使用更多的块层来提取用于分类的高层特征。例如,ResNet-101在第三阶段用于图像分类时使用了23个残差块,而在第一阶段只使用了3个块进行特征提取。考虑到点云是稀疏和不规则的,这意味着只有经过多次卷积才能使空Pillar特征被来自占据Pillar的特征所填充。与图像域的实践不同,早期阶段应该堆叠更多的块来完全细化精细的点云特征。

在作者的实践中,作者早期阶段堆叠更多的块来充分细化细粒度的点云特征。作者的广泛实验表明,与在后期添加更多的块相比,增加早期阶段的块数可以获得更好的性能。

更深层次的阶段。 通过作者对点云场景的分析,作者观察到对象大小存在很大的变化。例如,当Pillar大小设置为0.2m时,经过下采样后的最大可感知范围为1.6m。然而,在实际场景中,许多物体的大小超过了这个有限的感知范围。这意味着经过下采样后的特征点对大物体无法完全感知整个对象。

为了解决这个问题,PillarNeXt采用了一个复杂的ASPP模块来实现大的感受野。与它不同,作者采用简单的方式,在阶段-4的顶部增加了一个名为阶段-5的阶段,其中只包含一个或两个ConNeXt块。阶段-5的块数可以根据模型大小进行扩展。增加的阶段-5的输出作为颈部网络的一个多尺度输入。

Backbone Scaling

在这个部分,作者设计了一系列从轻量级的PillarNeSt-Tiny到高性能的PillarNeSt-Large的2D Backbone ,以满足不同的需求。在III-B节的设计原则基础上,作者提出了作者的PillarNeSt-Tiny,Small,Base和Large模型。如表I所示,所有模型版本具有相似的架构。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

每个模型由五个阶段组成,其中阶段-1不进行降采样,保持特征图大小。对于阶段-2_1,阶段-3_1,阶段-4_1和阶段-5_1,特征被降采样为原来的二分之一。每个ConvNext块包含一个7×7的逐点卷积层,然后是两个1×1的卷积层。这些模型变体的架构超参数如下:

PillarNeSt-T: = 48,块数 = {2, 2, 1, 1, 1}。

PillarNeSt-S: = 48,块数 = {3, 3, 2, 1, 1}。

PillarNeSt-B: = 64,块数 = {4, 4, 2, 2, 1}。

PillarNeSt-L: = 96,块数 = {6, 6, 4, 2, 2}。

在这里,表示第一阶段的数据通道数量。表I中列出了模型大小和理论计算复杂度(FLOPs)。

Backbone Pre-training

PillarNeSt旨在将来自大规模图像数据集(例如ImageNet)的 Backbone 预训练知识整合进来。由于作者的 Backbone 设计是基于ConvNeXt架构,作者想知道是否可以将用于预训练ImageNet的ConvNeXt权重作为初始化。然而,如上所述,PillarNeSt的每个阶段或PillarNeSt中的通道数与原始ConvNeXt设计不同。

为了解决这个问题,作者从两个方面引入了权重初始化适应:

  1. 从阶段视图来看,作者在stage-14阶段直接复制预训练ConvNeXt模型的权重,而作者的新增最后一个阶段(stage-5)则随机初始化。对于stage-14,如果块数小于ConvNeXt,作者只复制相应的块参数,根据块的标识。
  2. 从微观视图来看,作者复制预训练模型前通道(或块)的参数,而左通道(或块)的参数则随机初始化。

Discussion

作者的工作在 Backbone 扩展的角度上与PillarNet、FastPillars和PillarNeXt类似。然而,与它们相比,作者的PillarNeSt有许多不同之处。PillarNet简单地使用随机初始化的VGG、ResNet-18和ResNet-34作为2D Backbone 。它无法从统一的架构中扩展 Backbone ,并从图像预训练中受益。FastPillars使用结构重参化技术将VGG和ResNet-34转换为快速推理的VGG和ResNet-34。PillarNeXt是最接近作者的工作。

然而,它没有根据点云特征全面设计 Backbone ,没有在大核和更多块的早期阶段。作者的PillarNeSt旨在探索 Backbone 扩展和预训练对基于Pillar的3D目标检测的有效性。针对点云的特定设计表明,随着2D Backbone 的扩展,检测性能得到提高。此外,它是作者第一个展示基于点云的检测器可以直接从2D图像预训练中受益的工作。

IV Experiment

nuScenes数据集。nuScenes是一个大型的并经常使用的数据集。它包括从1000个场景中获取的多模态数据,包括来自六个周围摄像头的RGB图像,来自五个不同雷达的雷达点,以及来自一个激光雷达的点云数据。它被划分为700/150/150个场景进行训练/验证/测试。总共有11个类别,共有140万个已标注的3D边界框。作者使用平均精确度(mAP)和nuScenes检测得分(NDS)评估性能。NDS通过涵盖检测能力的多个方面提供了一个全面的评估指标。

Argoverse2数据集。Argoverse2(AV2)是一个大规模的数据集,用于远程感知,总共包含1000个场景。其中700个场景用于训练,150个场景用于验证,150个场景用于测试。AV2也采用了一种名为综合检测得分(CDS)的复合指标,作为mAP的补充。与nuScenes的NDS类似,CDS考虑了mAP和其他定位误差。AV2的感知范围达到200米(总面积为400m×400m),比nuScenes大得多。作者在AV2数据集上进行实验,以验证所提出方法在远程感知方面的性能。

实现细节。PillarNeSt模型使用Adam优化器以及mmdetection3d[11]框架中的一个周期学习率计划进行训练。所有消融实验均在8个V100 GPU上进行,而其他实验则在8个A100 GPU上进行。分别设置为1.0,1.0和0.25。此外,在训练期间,作者还使用了来自[48]的地面真值复制粘贴数据增强,但在最后5个epoch中禁用这种增强,如[39]所示。

对于nuScenes,使用一个周期的学习率策略,初始学习率为1e-3,使用AdamW优化器。权重衰减为0.01,动量范围为0.85至0.95。在水平平面上,将点云范围设置为[-54m, 54m],在垂直方向上,将点云范围设置为[-5m, 3m]。对于PillarNeSt,作者将Pillar大小设置为[0.15m, 0.15m, 8m]。

此外,遵循CenterPoint,作者在推理时使用无类别NMS作为后处理,分数阈值为0.2,归一化因子设置为0.5。对于AV2,作者使用Adam优化器,权重衰减为0.01,基本学习率为1e-4。点云范围在X轴和Y轴上设置为[-153.6m, 153.6m],在Z轴上设置为[-5m, 5m]。后处理与nuScenes相同。请注意,结果在水平平面上的范围为[-200m, 200m]。

Overall Results

Iii-A1 Strong Baseline.

在III-A节中,作者将CenterPoint-Pillar基线改进为一个强大的版本。如表V所示,作者的强基线在mAP和NDS方面分别达到了54.5%和63.5%,而原始基线在mAP和NDS方面分别达到了49.7%和60.1%。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

值得注意的是,在mAOE方面的巨大改进主要来自引入的IoU分支在CenterPoint头部,而fade策略对提高mAP和NDS指标做出了很大贡献。

Iv-A2 Comparison with State-of-the-Art on nuScenes

为了公平比较,作者在nuScenes验证/测试集上评估了所有作者的PillarNeSt模型,这些模型是以前在LiDAR上仅有的方法。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

如表II所示,作者的PillarNeSt-Large模型在NDS和mAP方面分别达到了70.4%和64.3%,超过了所有先前的方法。具体而言,作者的PillarNeSt-Large模型在NDS方面超过了以前先进的基于Pillar的方法PillarNeXt-B,提高了+1.6%,在mAP方面提高了+1.8%。

值得注意的是,作者的模型超过了所有基于Voxel的的方法,如LargeKernel3D和LinK。作者还展示了作者在nuScenes测试上的结果。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

如表III所示,作者的方法与所有点云3D目标检测方法相比,仍实现了最先进的性能(SOTA)。具体而言,作者的Base模型在NDS方面达到了71.3%,在mAP方面达到了65.6%,而作者的Large模型在NDS方面达到了71.6%,在mAP方面达到了66.9%。

Iv-A3 Comparison with State-of-the-Art on Argoverse2

作者还在长范围Argoverse2数据集的_val_集上评估了所提出的方法,结果如表IV所示。由于长范围的成本巨大,作者只报告了使用PillarNeSt-Base Backbone 的PillarNeSt-Base的结果。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

PillarNeSt-Base在平均指标上超过了现有的LiDAR-基于检测方法,分别提高了+5.4 mAP和+5.6 CDS。每个类别的评估结果也列出了,这显示了PillarNeSt在检测较大物体(如车辆、公共汽车、V-Trailer等)方面具有很大的优势。这些改进得益于PillarNeSt的大感受野。

Ablation Study

在这一部分,作者探索了作者的 Backbone 设计原则和扩展规则在nuScenes验证集上的有效性。对于作者的基准,四个阶段的块数设置为[1, 1, 1, 1],第一阶段通道数为48。

Backbone 预训练。 对于PillarNeSt,作者使用在ImageNet上预训练的2D卷积块进行初始化。在这里,作者将比较使用预训练模型与随机初始化的ConvNet的性能。如图3所示,利用预训练模型可以加速收敛并提高整体性能。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

在这个部分,作者深入研究了不同阶段的可伸缩性规律。对于作者的基准,四个阶段的块数设置为[1, 1, 1, 1]。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

如图4所示,每个阶段的实验仅修改对应阶段的块数,而其他阶段的块数保持不变。图4(a)显示了阶段-1的实验,其中阶段-1的块数分别为2、3、4和6。图4(b)进一步消融了阶段-2的块数。基准实验的块数分别为[2, 1, 1, 1]。阶段-2的块数分别为2、3、4和6。阶段-3和阶段-4的实验遵循类似的实践,将前一个阶段的块数设置为2。实验结果表明,增加早期阶段的块数会导致性能的巨大改进。而对于后期阶段,增加块数几乎不会带来任何性能改进。

更深层次的阶段。 在III-B部分,作者分析了增加更多深度阶段以覆盖大型物体的感知范围是否必要。这种分析得到了如表VI所示的结果验证。它表明,增加一个16的阶段(包括降采样和卷积神经网络块),在mAP和NDS方面提高了2.0%和1.3%,而仅增加了边缘计算成本。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

移除第一阶段降采样。如前所述,过早的降采样可能导致关键信息的丢失。为了验证移除第一阶段降采样对性能的影响,作者进行了实验并保留了第一阶段的降采样操作(见表VII)。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

结果显示,移除降采样提高了7.0%的mAP和5.4%的NDS,尽管引入了大量的计算成本。

Backbone 的输入通道数。 对于基于Pillar的方法,2D Backbone 的输入通道数量等于Pillar编码器输出的通道数。

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

表VIII展示了一个消融实验,以展示2D Backbone 输入通道数变化对性能的影响。结果表明,具有更大输入通道数的 Backbone 模型性能更好。然而,增加输入通道数会带来更多的计算成本。所展示的结果使作者能够根据输入通道数扩展 Backbone 的大小。

V Conclusion

在本文中,作者提出了一种基于Pillar的3D目标检测器PillarNeSt,通过探索2D Backbone 扩展和预训练。基于ConvNext块,作者明确提出了Pillar基2D Backbone 的设计规则和扩展原则。本文中 Backbone 扩展和预训练所展示的有效性为 Backbone 设计提供了有前景的方向。作者方法的核心在于对 Backbone 的改进。因此,未来对颈部和头部部分的修改有可能进一步提高点云3D检测器的性能。

局限性: 虽然作者提出了基于Pillar的 Backbone 扩展和预训练的有效性,但作者的方法也有一些局限性。如表VII所示,移除早期阶段的降采样可以显著提高性能,但会引入更多的计算成本。如何处理具有低计算成本的高分辨率伪图像表示值得未来探索。此外,一些生成预训练策略,如MAE,可以进一步应用于从Pillar编码器重建2D伪图像,以获得高质量的表示,从而产生良好的 Backbone 初始化,以用于点云3D目标检测。

参考

[1]. PillarNeSt: Embracing Backbone Scaling and Pretraining for Pillar-based 3D Object Detection

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

扫码加入👉「集智书童」交流群

(备注:方向+学校/公司+昵称

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待

PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待PillarNeSt | 参数只有10分之一,mAP精度却高8.5个点,ADAS超实时激光3D指日可待想要了解更多:

前沿AI视觉感知全栈知识👉「分类、检测、分割、关键点、车道线检测、3D视觉(分割、检测)、多模态、目标跟踪、NerF

行业技术方案👉AI安防、AI医疗、AI自动驾驶AI模型部署落地实战👉CUDA、TensorRT、NCNN、OpenVINO、MNN、ONNXRuntime以及地平线框架」

欢迎扫描上方二维码,加入集智书童-知识星球,日常分享论文、学习笔记、问题解决方案、部署方案以及全栈式答疑,期待交流!

免责声明凡本公众号注明“来源:XXX(非集智书童)”的作品,均转载自其它媒体,版权归原作者所有,如有侵权请联系我们删除,谢谢。
点击下方“阅读原文”,了解更多AI学习路上的「武功秘籍」

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy