目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

528次阅读
没有评论

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

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

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

本文重新审查了在图像中检测目标的管道。对于任何目标检测器,获得的边界框Proposals或查询需要分类并回归到真实边界框。最终预测的常见解决方案是直接最大化每个Proposals与真实边界框之间的重叠,然后采用胜者通吃排名或非极大值抑制。在这项工作中,作者提出了一种简单而有效的替代方法。

对于Proposals回归,作者解决了一个更简单的问题,即回归到Proposals和真实边界框之间的交集区域。这样,每个Proposals只指定包含目标的哪一部分,避免了需要将Proposals回归到其视觉范围之外的问题。反过来,作者替换了胜者通吃策略,并通过对一个目标周围的Proposals群进行回归交集的求并,获得最终的预测。

作者的重新审查方法对检测管道进行了最小更改,可以插入到任何现有方法中。作者证明本文的方法可以直接改进基于交点的回归和分组,突显了其效用。

1 Introduction

目标检测是计算机视觉中一个长期存在的挑战,其目标是在图像库中空间上定位和分类目标框。在过去的十年中,由于检测管道各个阶段的许多进步,目标检测取得了惊人的进展。目标检测Backbone的演变,从R-CNN的基础性转变到Faster R-CNN,以及改变范式的YOLO架构,再到最近将Transformer网络集成进来,代表了在增强特征提取和检测能力方面取得的重要进展。

此外,目标检测损失函数的演变,包括Focal Loss和IOU感知损失,解决了类不平衡和精确定位等挑战,进一步推动了自动化检测能力的提高。无论选择Backbone、阶段数量还是优化,所有这些工作都获得了一组Proposals框、网格框或查询。为了得到它们的最终检测,Proposals框需要进行空间对齐分类和回归,然后(可选地)执行非极大值抑制,以删除所有但最高得分的BBox。

换言之,共识是让每个Proposals框解决与真实目标位置之间的交集与并集对齐,然后采用胜者通吃的方法在空间区域内获得最佳BBox。在本文中,作者重新审查了准确目标定位和最优候选选择的基本问题。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

作者识别出了目标检测的两种问题,并提出了一种简单的解决方案。首先,任何目标检测器的目标,无论其架构如何,都是要准确地学习能够独立表示图像中真实目标的Proposals框。如图1所示,这通常是一个不恰当的问题。在检测器的正向传播过程中,Proposals框会被生成,通常只捕获到在其范围内的真实目标的一部分。学习进行完美的真实对齐会导致一个盲目修复的问题。

其次,在所有检测器的正向传播过程中,总是会出现多个与一个真实目标相关的Proposals或查询。尽管它们提供了真实目标的互补视图,但非极大值抑制或排名只起到排除重复检测的作用。这样,这些方法忽略了被丢弃的Proposals中的有价值信息。

作者提出了一种简单的方法:将Proposals到真实值的回归问题和Proposals到候选选择的分类问题分解为更容易解决的交集和并集问题。

作者做出了以下贡献:

(1) 基于交点的回归: 作者为Proposals的回归设定了一个新的目标:不是预测与真实值的交点,而是只预测交集的区域。因此,作者只在Proposals的视觉范围内回归到真实值。

(2) 基于交点的分组: 给定一组具有预测到的真实值交点的Proposals,作者通过求交区域取并集来形成最终的预测。换句话说,作者不是只选择一个区域中最确信的Proposals,而是利用群众的智慧来形成最终的预测。

这两个阶段对现有的目标检测管道进行了最小的更改。作者只改变了回归头的目标为交点,并在 winner-takes-all 之后修改了后处理,采用了一个分组过程。因此,作者的方法可以直接插入手头的任何目标检测器。尽管其技术简单,但这种分解直接提高了检测性能。作者展示了作者的重新审查方法如何通过多个数据集改进了规范检测和实例分割方法,特别是在评估时的高重叠阈值处。随着分类和回归性能的持续改善,作者最后进行了一个受控实验,表明作者的方法从未来的进展中受益更多,成为下一代目标检测器的首选形式。

2 Related Work

Object Detection Architectures

随着深度学习架构的发展,目标检测也取得了各种进步。这些架构可以广泛地分为单阶段、两阶段和基于Transformer的检测器,每种都有其独特的特性和优点。

单阶段检测器,如SSD,YOLO系列(包括YOLOv3,YOLOv4,YOLOX,YOLO-Lite),RetinaNet,EfficientDet,CornerNet,CenterNet,和FCOS,优先考虑速度,在一次性预测中直接预测目标类别和边界框。RetinaNet引入了Focal Loss以解决类别不平衡和小型物体检测问题,而EfficientDet利用了可扩展的EfficientNet Backbone进行效率。CornerNet,CenterNet和FCOS的创新重点是无锚方法,以提高实时效率。

在两阶段目标检测领域,R-CNN家族包括R-CNN,Fast R-CNN,Faster R-CNN(引入了端到端训练与Region Proposal Networks),Mask R-CNN(增加了分割功能),Cascade R-CNN(通过多阶段框架提高准确性),以及Libra R-CNN(解决训练不平衡问题)。改进包括TridentNet,它处理了规模变化并使用并行分支,以及额外的方法,如Grid R-CNN用于精确定位和Double-Head R-CNN,它区分了分类和边界框回归,进一步丰富了领域。

Transformer基础的模型,如DETR,Deformable DETR,TSP-FCOS,Swin Transformer和ViT-FRCNN彻底改变了目标检测。DETR将检测视为集合预测,Deformable DETR增加了可变形注意力以进行聚焦图像分析,TSP-FCOS将Transformer与FCOS集成以处理尺度变化,Swin Transformer采用层次方法,而ViT-FRCNN将Vision Transformer与Faster R-CNN结合以进行特征提取。进一步的改进包括Boxer Transformer,DINO,DAB-DETR,UP-DETR,Dynamic DETR和Conditional DETR,提高了训练效率和动态预测,强调了Transformer在目标检测中的适应性。

尽管方法各异,但在这三种范式中,一个共同的方面是存在一个在Proposals阶段之后的分类和边界框回归阶段。在这个阶段,每个Proposals框都被要求独立解决交集与并集问题,这是一个固有的不恰当的问题。Proposals框往往存在错位,只捕捉到在其范围内的一部分真实值。

此外,非极大值抑制或排名阶段会丢弃所有Proposals框,除了得分最高的那个,尽管Proposals框提供了关于真实值的互补视角。作者通过将问题分解为独立的交集和并集阶段来解决这些问题,从而得到一个更容易且性能更好的检测管道。

Post-processing for Object Detection

在回归阶段之后,从众多候选检测中选择最佳回归的Proposals确保了准确性,其中非极大值抑制(NMS)是选择最佳Proposals的关键技术,通过消除冗余检测来实现。传统的NMS虽然有效,但已被诸如Soft-NMS等变体所超越,它们调整置信度而不是丢弃检测,从而在拥挤场景中提高了性能。学习NMS引入了适应性,通过将抑制标准集成到神经网络训练中来实现。

进一步的改进,如IoU感知NMS和距离IoU(DIoU)NMS,考虑了边界框之间的重叠和空间关系以实现更精确的检测。此外,Matrix NMS利用矩阵操作进行高效的抑制,而Adaptive NMS则根据目标密度动态调整阈值以实现更准确的抑制。此外,ASAP-NMS优化了处理速度,而Fitness NMS则同时考虑检测分数和空间适应性以实现更准确的抑制,从而进一步丰富了目标检测的后处理技术。

改进的后处理技术解决了从每个位置的Proposal集群中选择单个获胜者的限制。然而,所有技术仍然假设每个个体框已经与相应的真实框完全对齐,主要目的是删除重复检测。在本工作中,作者通过使用同一位置的所有Proposal形成最终的物体检测输出,通过对非极大值抑制管道进行最小的调整来实现。

3 Method

传统目标检测中的框回归问题涉及学习一个映射函数,该函数将一个Proposal框转换为接近真实框,其中分别表示Proposal框的左上角和右下角的坐标以及真实框的左上角和右下角的坐标。通常,这是通过在预测框和真实框之间最小化损失来实现的。然而,这种方法通常存在挑战:Proposal框通常严重错位,只有Proposal框的范围内可以看到部分真实值

因此,函数被迫扩展到其初始覆盖范围之外,实际上需要预测超出其可见范围的部分。这种情况下,被迫推断出不在中的的一部分。然后,对于一个真实目标,提供互补视图,所有Proposal框按非极大值抑制或排名进行排序,只选择一个候选项。这假设交集与并集问题已经解决,只起到在同一区域内排除重复检测的作用。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

为了解决这些问题,首先,作者在第3.1节重新定义任务为一个交集学习问题。对于单个Proposal框,作者只要求解决与真实框的交集对齐,即只需要回归到与真实值共享的部分。然后,在代替Proposal框中丢弃互补信息的方法中,作者在第3.2节战略性地学习利用这些碎片。给定一组Proposal框及其已识别的交集,作者可以用并运算符替换非极大值抑制,其中作者识别出所有在同一区域内的Proposal框的并集,作为最终的目标检测。图2显示了这两个更简单的任务如何导致最终的物体检测。

Intersection-based Regression

作者将回归任务重新定义为一个交集学习问题。取而代之的是,每个Proposal框的任务是回归到真实目标的可视部分,即Proposal框和真实框之间的交集。这使得映射函数具有明确的定义,使得学习这样的转换更容易。

定义为BBox的交集。新的任务是学习一个映射函数,使得。为了监督学习,交集的计算如下:

 

(2) (3)

这个任务的损失函数定义如下:

在回归训练中,的值可以是1或2,分别对应在回归训练中应用损失。作者方法的第二方面涉及有策略地利用一个真实值目标生成的多个Proposal框中包含的部分信息。

Intersection-based Grouping

在传统的目标检测方法中,选择一个Proposal框来代表最终的检测,而其余的Proposal框则被丢弃。然而,作者的方法并不丢弃这些包含有价值但分散的信息的Proposal框,而是学习有效地合并这些片段。因此,作者的方法生成的GT物体表示更加全面和准确。

让作者定义一个GT物体的所有Proposal框集合,以及相应的与GT框的交集集合。作者的目标是找到一个最佳的交集组合来最好地表示GT物体。作者定义一个组合函数,该函数接受一个交集集合并输出一个边界框。任务是学习这个函数,使得它最小化组合框和GT框之间的损失:

作者的模型通过交集回归来理解Proposal的局部性质。交集的组合分为两阶段:分组和回归,如下所述。

分组: 为了进行分组,作者引入了一个分组函数,它将Proposal集映射到一个组。每个组的一个子集,表示图像中的一个潜在目标。分组函数的设计是为了将可能属于同一目标的Proposal分组在一起。这是通过考虑Proposal之间的空间重叠和语义相似性来实现的。一旦将Proposal分组,作者就可以将对应于每个组的Proposal的交集组合起来,得到一组组合框。每个组合框是表示由组代表的目标的候选边界框。

最后,作者进行一次回归步骤来细化组合框。作者定义一个回归函数,将每个组合框映射到一个最终的目标框。回归函数的学习目标是使目标框和真实框之间的损失最小化:

在这个过程中,是组合框的第i个坐标,是对应于的真实框的第i个坐标的第j个Proposal。这种方法将来自多个Proposal的有价值信息集成到一个单一的增强Proposal中。与其选择一个单一的最优候选并丢弃其他Proposal,作者的方法从每个Proposal中提取和合并最相关的方面,从而构建一个更准确地表示目标GT物体的候选项。

将分解集成到现有的目标检测器中只需要进行一些更改。对于基于交点的回归,作者只需要将回归头的目标坐标从真实框改为Proposal和真实框之间的交点区域。为了通过基于交点的分组获得最终的物体检测输出,作者需要对Proposal进行排序和聚类,类似于非极大值抑制。而不是只保留顶部的BBox,作者取同一聚类中所有回归交点的并集作为输出。尽管这种方法很简单,但作者证明,分解目标检测中的交点与并集对性能有直接影响。

4 Experiments

Datasets, Evaluation and Implementation

在作者的实验设置中,作者对两个广泛认可的数据集进行全面的评估,分别是COCO和PASCAL VOC,涵盖了计算机视觉的两个关键任务:目标检测和实例分割。这些数据集选择的原因是它们的多样性和复杂性,为评估作者提出的方法的 effectiveness 提供了一个坚固的平台。

MS-COCO 2017: 这是一个在目标检测和实例分割方面广泛认可的标准基准数据集。它包括80个目标类别,其中训练集有118k张图像,评估集有5k张图像。该数据集以其多样性而著称,包含广泛的物体和场景。每张图像最多有93个目标实例,平均7个目标。

PASCAL VOC: 作者使用了2007年和2012年的版本。VOC2007数据集包括5011张训练图像和4952张测试图像。此外,VOC2012数据集提供了额外的11540张训练图像。该数据集包括20个目标类别,以其详细的物体检测注释而著称。VOC2007中的4952张图像用于测试。

评估标准: 作者遵循文献中为这两个数据集任务建立的评估协议进行评估。对于COCO [21],作者使用从0.5到0.95的IoU阈值范围内的平均精确度(mAP)mAP at specific IoU thresholds (0.5 and 0.75),多个尺度(小,中和大)和平均召回(AR)指标。对于PASCAL VOC [11],作者使用0.5,0.6,0.7,0.8和0.9的IoU阈值处的mAP指标。对于实例分割,作者使用从0.5到0.95的IoU阈值范围内的平均精确度(mAP)mAP across IoU thresholds from 0.5 to 0.95和跨越多个尺度(小,中和大)。这些提供了对模型性能的全面评估。

作者使用三种基础检测器测试作者的方法:Faster R-CNN [35],Mask R-CNN [16]和YOLO v3 [33]。这种选择的目的是探索涵盖单阶段和两阶段检测器更广泛的体系结构。

对于COCO数据集,作者使用Faster R-CNN和Mask R-CNN,并使用特征金字塔网络[22]和ResNet101[15]和ResNet50Backbone。这些模型配置为图像大小为1333800,随机水平翻转增强,512个Proposal。使用随机梯度下降[1]训练,批处理大小为2个GPU,初始学习率为0.02(在8和11个epoch时减少10倍),权重衰减为,动量为0.9。这些模型在12个epoch内进行训练。YOLO v3,实现时使用Darknet-53Backbone,是作者在COCO上的另一个关键实验组件。该模型使用图像大小为608608,并采用随机翻转增强。作者使用批处理大小为64,随机梯度下降优化器学习率0.001,动量为0.9,权重衰减为0.0005。YOLO v3的训练时间为273个epoch。

对于PASCAL VOC数据集,作者专门使用Faster R-CNN与ResNet50和ResNet101Backbone进行训练。训练配置与COCO设置相同,但根据数据集的特点进行了调整。训练持续时间为4个epoch,在第三个epoch后学习率减少。

Ablations

在表1中,作者将基于交点的回归与传统的回归方法进行了比较。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

在这个实验中,作者训练了两个网络:一个采用作者的方法即基于交点的回归并基于交点的分组;另一个采用传统的边界框回归,并采用类似的分组,但使用回归的Proposal。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

在将作者的交点与分组技术应用在Faster R-CNN上的实验中,作者实现了平均平均精度(mAP)40.3,相较于Faster R-CNN的单独mAP 39.4有了显著的提高。相比之下,使用传统的回归方法与分组过程相结合,得到的mAP仅为39.6,这强调了作者的交点与分组方法的重要性。图3显示了在作者的方法训练过程中,与传统方法相比,作者的公式具有更低的回归损失。

为了阐明基于交点分组阶段在目标检测中的影响,作者对两个基线模型进行了消融研究:Faster R-CNN 和Mask R-CNN 。这个实验旨在了解在将此阶段的Proposal数量从2个增加到更高数量时,如何影响平均平均精度(mAP)等检测性能。在作者的方法中,在交点回归阶段之后,作者对Proposal进行了类似于非极大值抑制的排序和分组。然后,作者调整了分组Proposal的数量,从2个增加到更高的数量,进行了细化,并观察了相应的mAP变化。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

结果如图4所示,对于Faster R-CNN和Mask R-CNN都是一致的模式。作者注意到,当将组合Proposal的数量从2增加到5时,mAP增加,达到峰值性能。然而,当将Proposal数量组合到更多时,mAP开始下降。这种趋势表明,在最大程度提高检测精度时,有一个最佳的Proposal组合数量,而在作者的实验中,5是最有效的。

Comparison with Others

在PASCAL VOC数据集上进行检测比较。作者的方法在Faster R-CNN上进行了测试,使用了ResNet50和ResNet101Backbone,展示了显著的性能改进,如表2所示。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

值得注意的是,在高IoU阈值下,平均精确度取得了4.5 AP和5.8 AP的增加,分别超过了使用ResNet50和ResNet101Backbone的基准Faster R-CNN模型。高IoU阈值性能表明作者的方法在准确定位方面的熟练程度,因为它衡量了Proposal和真实值之间的必要重叠以进行正确预测。这与作者使用物体Proposal的互补信息来增强物体检测的精度的方法相符。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

在Tab. 3中,作者研究了将作者的方法与MS-COCO数据集上的典型目标检测器结合使用时的有效性。作者的实验结构涵盖了各种场景,包括三种不同的基准模型和多个Backbone。具体来说,作者在Faster R-CNN和Mask R-CNN上进行测试,每个使用ResNet50和ResNet101 Backbone。此外,作者还将在单阶段检测器YOLOv3上结合作者的方法,以扩大作者的比较范围。

结果很明确:作者的方法在所有设置上(0.9 mAP超过Faster R-CNN,1.2 mAP超过Mask R-CNN,对于ResNet101)和指标(包括精度和召回率)中实现了相对的改进。这些改进涵盖了大部分场景,特别是对于大型物体(在ResNet101上,0.9 mAP超过Faster R-CNN和2.1 mAP超过Mask R-CNN)。这种一致的性能提升,无论选择Backbone还是检测器类型,都是可见的。值得注意的是,作者的方法在两阶段检测器(Faster R-CNN和Mask R-CNN)和单阶段检测器(YOLOv3)上的成功,突显了其灵活性。它不仅与检测器无关,而且可以有效地适应不同的体系结构范式。这种适应性突出了作者方法的可扩展性和广泛适用于各种物体检测场景的潜力。

实例分割在MS-COCO数据集上的应用: 为了证明作者方法的可扩展性,作者将其应用扩展到实例分割任务,并在Mask R-CNN上进行了测试,使用了两种不同的Backbone:ResNet50和ResNet101,如表4所示。在COCO数据集上的实验表明,分割性能得到了显著改进。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

具体来说,作者的方法在ResNet50Backbone上实现了平均精度(mAP)的0.7点增加,在ResNet101Backbone上实现了0.9点增加。这些结果强调了作者的方法不仅能够增强物体检测,而且能够在不同的Backbone架构上显著提高实例分割任务的性能。

定性结果: 在图5中,作者展示了将作者的方法与Faster R-CNN进行比较以进行物体检测的定性结果,并突出了几个关键优势。从左到右,作者的方法消除了错误的’人’预测,准确地定位了整个物体,如鸟,并明显区分了单个实例,如将第三只猫视为一个独立的实体,从而减少了总体错误预测。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

然而,在拥挤场景中,作者的方法的有效性有所限制,如图5中的第五张图像所示,作者的方法相对于基准技术的改进不明显。作者展示了作者的方法在实例分割方面的性能,如图6所示。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

局限性: 如图5中的定性结果所示,作者的方法在拥挤场景中面临挑战,由于作者采用将多个物体实例合并为单个Proposal的方法,因此经常将多个物体实例合并为一个Proposal。这个问题可以通过开发更先进的分组策略来缓解,这是未来改进作者方法的一个方向。

5 Oracle Experiment: Evaluating the Potential of Intersection Grouping

作者证明作者可以改进现有的目标检测器。随着时间的推移,分类质量可能会提高。然后,问题变成了传统和重新审查的方法之间的差异会收敛还是越来越大。因此,作者进行了一个占卜实验。目的是展示在理想条件下,作者交点学习和部分信息利用策略所固有的优势。

在这个占卜实验中,作者模拟了一个理想的情况,即一个子集的Proposal的真实标签已知。具体来说,作者考虑了六个阶段:20%,40%,50%,60%,80%和100%,分别表示已知真实标签的比例。作者考虑了两种场景:

交集分组: 在这里,作者对每个Proposal进行交点回归。然后,作者将那些与同一真实目标(利用已知的真实标签)具有交点与并集(IoU)重叠大于0.5的Proposal分组在一起。最后,作者将这些交叠区域组合起来并对其进行细化,以形成最终的边界框。

最确信Proposal选择: 在这个场景中,作者对每个Proposal进行边界框回归。然后,作者将这些回归的Proposal按照上述方法分组。从这些分组中,作者选择具有最高置信度的Proposal作为目标的代代表界框,这个过程类似于基准方法。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

结果和讨论。表5中的结果揭示了与传统方法相比,使用作者的方法在目标定位准确性方面有显著提高。从图7中可以看出,随着每个Proposal的分类标签准确性的提高,作者的方法在相对于传统技术的检测性能方面表现出显著增加。这种改进的原因是,正确分类的Proposal,每个覆盖GT的局部,在分组时共同贡献出更全面的表现。

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

传统方法,通常选择一个Proposal,往往错过了GT值的重要部分。相比之下,作者的方法通过组合这些分割的局部,实现了显著的性能提升。结果清楚地表明,随着该领域的进一步发展,使用作者的重新审视的观点相对于传统方法将变得更加有利。

6 Conclusion

本文通过关注Proposal框与真实框的交点,并更好地利用被丢弃的Proposal信息,重新审视了目标检测流水线。作者的关键贡献,即基于交点的回归和基于交点的分组,已被证明可以显著提高目标定位精度和Proposal的全面性。作者的方法的有效性通过在COCO数据集上的实验得到验证,显示了在各种检测器和实例分割上的改进。值得注意的是,作者的方法还在PASCAL VOC数据集上实现了更高的平均精确度。

参考

[1].Revisiting Proposal-based Object Detection.

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

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

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

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点

目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点目标检测涨点小Trick | 回顾Proposal-Based目标检测,启发小改NMS即可带来涨点想要了解更多:

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

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

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

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

 

Read More 

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