lidar360合并分类归一化先做哪一个?

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

后台回复【高精地图综述】获取论文!

后台回复【领域综述】获取自动驾驶全栈近80篇综述论文!

后台回复【数据集下载】获取计算机视觉近30种数据集!

由于camera或激光雷达等传感器返回足够丰富的数据,researcher能够用不同的分辨率绘制不同类型的地图并使用它们在城市环境中实现高水平的车辆定位精度和稳定性。与现有SLAM方法相反,视觉地图定位依赖于预先构建的地图,仅关注通过避免误差累积或漂移来提高定位精度。一般将视觉地图定位定义为一个两阶段的过程,在位置识别阶段,通过将视觉传感器输出结果与一组已标记的感兴趣地图区域进行比较,确定车辆在地图中的初始位置。随后,在地图度量定位阶段,通过不断将视觉传感器的输出与正在穿越的地图当前区域对齐,跟踪车辆在地图上移动。论文汇总并讨论了两个阶段的基于激光雷达、基于相机和跨模态视觉地图定位的最新方法,以突出每种方法的优缺点。

多年来定位一直在探索阶段,大部分时间都与建图结合在一起,最终产生了两种截然不同的思想流派:第一种传统上称为同时定位和建图(SLAM),其中定位和建图在一个循环中同时执行,使得每一部分都可以利用另一部分的结果;第二种方法通过离线进行建图,并使用这些结果实现精确定位,从而将定位和建图解耦。

虽然SLAM被视为部署时间方面的最佳解决方案,此类系统所达到的精度不足以满足在城市环境中部署自动驾驶汽车所需的安全条件,因为它们有时会受到漂移的影响。除此之外,障碍物检测和跟踪方法仍在努力实现可信赖的一致结果,尤其是在出现遮挡或亮度突然变化等问题时,这使得通常有必要使用预先构建的地图作为参考,并最终检测相关环境信息,如交通灯和交通标志。

地图定位通常可分为两个主要步骤。首先,车辆必须在地图上找到其初始位置,特别是当没有其他传感器(如GPS)可提供初始区域时。这种情况下的解决方案是使用视觉位置识别方法,仅使用视觉传感器的输入和中间表示,可以在预构建的地图中找到最佳匹配。一旦找到初始位置,车辆可以开始在地图上导航,同时尽可能精确地跟踪其移动,称之为地图度量定位,该定位是通过在输入传感器提供的后续帧之间实施时间一致性以及空间一致性来实现的,空间一致性通过与地图的感兴趣区域匹配来保证,并且可以被视为对仅使用传感器输入计算的第一变换的校正。第二步以循环方式运行,只要定位误差保持在合理水平,保证传感器输出和地图感兴趣区域之间有足够的重叠。下图显示出了表示上述两个主要步骤中每个步骤所涉及的不同过程的框图:

定位方法,包括激光雷达传感器和camera。介绍并讨论每一个方案的优缺点。除此之外,还考虑了基于“跨模态”的定位情况,但与基于“传感器融合”的方法进行了明确区分:跨模态方法使用一个传感器输出,并尝试在使用不同模态传感器构建的地图中对其进行定位。另一方面,传感器融合方法使用来自两种模式的传感器输入,而不考虑地图类型。传感器融合方法和无地图定位方法已在[16]、[20]、[73]中叙述,因此在本论文中不再讨论,只关注单传感器、单地图定位方法。

大多数视觉地图定位方法(基于Camera和Lidar)包括两个主要步骤:位置识别,找到地图中的初始位置,然后是metric map定位,以在车辆在地图中移动时跟踪车辆。

位置识别代表着在预先构建的数据库中尽可能高效地找到输入传感器数据对应的的最佳匹配位置,上图显示了几种常见的基于Lidar和Camera的高精地图。下图显示了同一组预构建地图,但使用不同方法,首先是激光雷达地图,使用连续的激光雷达点云构建,这些点云使用配准方法对齐,并使用在线束平差进行微调。接下来是卫星地图,使用卫星图像和GPS测量构建,然后是OpenStreetMap(OSM),通过在卫星地图上跟踪相关对象构建。最后,通过将光线投射应用于建筑物分段,构建了模拟的二维激光雷达地图。

位置识别通常采用不同的方法,具体取决于所使用的传感器:当使用camera查找初始位置时,所使用的地图通常是top-view 2D map的变体,例如基于卫星的地图。虽然这些地图往往大小有限,因此易于光栅化和查询,但它们确实带来了另一个挑战,即cross-view方面:地图是从top-view拍摄的,而相机始终从地面拍摄正视图或全景360视图。这一挑战通常通过深度学习技术解决,深度学习技术更关注纹理,而不是图像中的物理结构方面。

Lidar不会出现任何视图差异,因为将其输出投影到新视图要容易得多,这使得可以使用传统方法和深度学习方法。然而,在处理基于Lidar传感器方法时,速度有时会降低,因为将地图中的所有密集数据处理到一个易于搜索的数据库可能需要更多的时间。

对于激光雷达,下图显示了典型的点云视图、BEV投影视图,最后是全景投影视图。

对于camera,下图显示了前视图摄像机、卫星视图、OSM视图,最后是卫星视图的所谓极轴投影,其目的是尽可能靠近地面视图:

一旦找到地图中的初始位置,车辆必须跟踪其在地图上的当前位置,这取决于map和使用的传感器,可以采用不同的方法。

在点云地图中进行激光雷达定位的情况,通常使用某种形式的点云配准来实现定位,通过找到两次数据之间的三维空间变换关系来对齐。准确的关键点提取和匹配往往是获得准确转换的关键,然而,较新的基于端到端深度学习的方法能够绕过这一点。另一方面,由于视点的急剧变化,自动驾驶汽车基于camera的地图定位往往更具挑战性。用于关键点提取和匹配的传统计算机视觉技术在试图在航空地图中定位地面捕获图像时通常会失败,这促使研究人员更加依赖深度学习来解决这一挑战。最后,可以组合两个传感器来解决metric map定位问题:使用单目相机图像预测深度图或使用光线投射生成模拟点云是用于解决激光雷达和相机之间交叉模态问题的常用方法。

高清点云地图已成为许多自动驾驶车辆的标配,基于激光雷达的位置识别变得非常受欢迎,早期许多方法尝试利用关键点检测和点云匹配完成。[5]基于随机抽样程序,使用 gestalt descriptor[4]的变体和编码关键点,然后使用最近邻投票方法进行匹配。[31]通过利用点之间的几何关系解决了基于关键点的位置识别任务:在使用高曲率点提取特征后,作者根据点云数据之间的距离及其共方位将其编码为二维直方图,从而生成特征,该特征随后用于使用近似最近距离匹配其他场景与当前场景的关系;

在[19]中,作者提出了SegMatch,这是一种基于分割结果的算法,用于构造特征描述符。分段匹配通过两步方法实现:首先使用随机森林分类器,然后使用RANSAC进行几何验证[24]。这一点最终在[68]中得到了扩展,通过在空间和时间特征池的两个阶段之后构建的手工时空描述符来扩展SegMatch描述符。

[28]的作者建议利用激光雷达传感器返回的强度场来构造一个强度增强的三维关键点描述符,名为ISHOT,该描述符按照概率投票和最近邻搜索相结合的策略进行匹配。[54]中使用了类似的方法,其中强度场是该方法的核心,但在这项工作中,强度数据首先使用全景投影投影到2D图像空间,然后使用传统的计算机视觉(CV)关键点提取器和编码器,在本例中为ORB[51]。随后是传统的CV匹配程序,依赖于PnP[24]和BoW[58]。将3D点云投影到2D以利用传统CV技术是处理激光雷达数据时使用的常用方法。[45]中提出了另一种利用该原理的方法,但这次使用了鸟瞰图(BEV)投影。提出了一个名为BVFT的适当描述符。

最近,深度学习越来越多地用于尝试解决激光雷达位置识别任务,首先将其纳入半手工方法,如[78]、[79],其中首先使用基于直方图的方法对点云进行预处理,以生成旋转不变表示,然后将其输入siamese neural networks,使用对比损失函数进行训练,以便为相似的点云生成相似的向量表示。类似地,[40]中的作者遵循了类似的策略,首先基于点云头顶投影的语义分割生成旋转不变表示,然后是用于特征提取的siamese neural networks和用于相似性预测的MLP。

[41]中提出了另一种半手工方法。在这里,作者首先生成点云的superhead投影,然后处理它们以生成两种类型的描述符:全局描述符,使用NETVlad架构[2]生成;基于特征的描述符,使用SuperPoint架构[17]生成。这两个描述符被组合起来,并使用SuperGlue 算法实现匹配[52]。

地面车辆采集的图像与从航空地图提取的图像之间的视点差异很大,基于camera的位置识别非常具有挑战性。因此,大多数成功的方法都依赖于深度学习。这一点首先在[65]中得到证明,依靠Faster R-CNN[49]来检测建筑物,然后使用使用对比损失训练的siamese network进行匹配。对比损失和 triplet损失在试图解决这一挑战时非常流行。[32]中通过简化从目标检测到CNN特征提取的第一阶段,使用NetVLAD架构的编码阶段[2]。

[43]中作者建议在训练和测试期间将颜色编码的方向图附加到输入查询,[86]中进一步说明了方向对齐的重要性,作者表明,使用首先在方向方面预对齐的图像进行训练,产生一个连体网络,该网络能够生成激活图,在不同视图中指向类似对象时表现更好。使用GRAD-CAM[53]生成的激活图也可以在测试期间用于近似两个视图的最佳对齐方向。

[57]介绍了最佳特征传输[15]的使用,以便于在两个视图中提取相似的特征。这是以一种允许在网络上进行端到端训练的方式实现的,并在所有指标上显示出了巨大的改进。虽然大多数作品使用了对比损失或三重损失的变体,但[30]中的作者提出了自己的度量,这种损失与应用于航空图像以减少视点间隙的极坐标变换相结合,用于根据训练示例的难度为其分配不同的权重,以强调有意义的硬样本并移除有问题的样本。文献中大多数交叉视图地理定位工作中的另一个典型假设是航空图像和地面图像之间的一对一匹配假设。这在测试期间并不总是成立的,并且是[87]中的主要动机:在这项工作中,作者不仅尝试预测两个样本之间的匹配分数,还使用回归分支预测了两个输入之间基于纬度和经度的偏移。此外,除了triplet 和回归损失外,作者还引入了基于IOU的损失,以更好地从半正样本中学习(即具有非零偏移的航空样本)。

最近,由于attention模型在计算机视觉[29]中的成功,更多的工作一直在尝试使用注意机制[67]和transformer架构[18]来解决这项任务,从[55]开始,作者提出使用空间感知位置嵌入模块来处理地面和极坐标变换后的航空图像,其任务是对由主干网络提取的对象特征之间的相对位置进行编码。[85]尝试了一种纯transformer架构,该架构不使用CNN作为特征提取的预处理步骤:这是通过遵循两阶段程序完成的。在第一步,使用三重损失训练两种传统的视觉transformer(ViT)架构,以生成街道和鸟瞰图的嵌入特征。在第二阶段,从第一阶段生成的空中注意力图被用作裁剪和放大图像最相关部分的指南。然后使用新生成的航空图像,使用另一个ViT对航空嵌入进行微调。

由于缺少精确的高清点云地图,研究人员一直试图通过使用免费的、有时是开源的地图(如卫星地图或OpenStreetMaps)来解决将激光雷达点云作为输入时的位置识别难题。解决这一问题通常需要使用深度学习,因为不仅要处理模态上的差异,而且view上的差异也同样需要考虑。[62]中提出了一种方法,其中通过卫星图像预测occupancy map,使用光线投射生成模拟的top-view激光雷达图像,然后将其与传感器输入的top-view投影相结合,并输入DGCNN架构[69],以预测变换偏移,而且在NetVLAD体系结构中生成可用于位置识别的嵌入。

[13]中OSM被用作主地图,通过利用建筑物和道路信息,使用光线投射生成模拟的top-view激光雷达图像,该图像使用前面讨论的[35]描述符与激光雷达传感器的输入进行匹配。

主要介绍基于激光雷达、camera和基于交叉模态的方法,讨论如何使用单个传感器尽可能精确地跟踪车辆在地图上的位置。

就精度而言,使用预先构建的地图进行激光雷达定位是自动驾驶车辆最成功的方法,这是由于此类地图通常具有丰富的细节。2D激光雷达定位在机器人领域有着大量研究,尤其是在室内场景中。相比之下,我们将主要关注3D激光雷达,它更适合户外场景,并且适用于自动驾驶汽车。

早期的方法,如[38],依靠传感器融合和粒子滤波器在点云地图中定位配备激光雷达的车辆。[80]通过设计可在地图和传感器输入点云之间匹配的手工特征,并基于点簇大小频率直方图,提出了一种激光雷达地图定位解决方案。一些工作,如[8]仅依赖于激光雷达传感器返回的强度场,[83]中讨论了一种结合特征和滤波器的方法,以处理因下雨条件产生的噪声激光雷达数据:特征提取基于每个点的位置和反射率,接着是粒子滤波器(处理垂直特征)和直方图滤波器(处理地面特征)的组合。[71]中作者从NDT里程计算法[46]中获得灵感,并建议使用高斯混合映射(GMM)。通过使用地平面xy作为二维网格,网格中的每个单元都可以使用一维高斯混合来填充,该混合可以模拟该单元高度上的分布。使用高效的多分辨率分支和边界搜索来匹配单元并将传感器点云与地图对齐。[33]中还探讨了将三维地图压缩为二维表示以获得更快的结果,提出使用建筑物足迹生成简化的基于线段的地图,然后将其与无损检测结合起来解决定位难题。

如果使用的是完整3D地图,有时可以访问交通灯或车道等标签,这有助于定位。[27]中建议利用车道信息,使用激光雷达实现车道水平精度。主要根据道路的高度信息提取道路,然后使用激光雷达传感器返回的强度场检测车道,最后,利用粒子滤波实现了地图匹配和姿态跟踪。[26]是基于车道的定位的扩展,但使用交通标志(使用点法线提取)作为地标,[11]中作者使用标杆和路缘在高清地图中定位车辆。提出了极点成本函数和抑制成本函数,并将其融合以生成车辆位置的粗略猜测。

深度学习在识别位置上非常受欢迎,因此研究人员自然也会尝试将其用于此任务。首先,一些方法仅依赖于其他神经网络的结果来改进其定位pipelines:[50]提出了一种将激光雷达里程测量与segmap位置识别相结合的系统,以减少激光雷达位置漂移。这是通过利用匹配段并将其对齐以微调激光雷达里程计获得的变换来实现的。[82]中作者提出了一种借助语义分割的多载体协作方法。例如,在两辆车的情况下,所提出的系统在两辆汽车的输入之间实施几何和语义一致性匹配。这将生成一个加权矩阵,该矩阵随后用于期望最大化算法,以将点云与地图对齐。

还有一些端到端方法,[12]中作者使用了siamese network,该网络处理从点云(语义标签、点位置等)生成的不同线索的全景投影,并预测两个量:表示两个输入之间重叠的相似度得分和相对偏航角。将预测与粒子滤波器结合以实现激光雷达地图定位。[44]中作者提出了一个网络,试图学习传统定位系统和地面实况之间的残值。首先提取相关特征,并将其输入 miniPointNet [48],以生成相应的特征描述符。然后在解空间(x,y,z)中构造cost volume,并用三维卷积神经网络进行正则化。此外,在网络结构中添加了一个RNN分支,以保证位移预测的时间平滑性。遵循最新方法,[22]建议使用注意机制来解决点云高清地图中的自定位挑战。定位过程分为两个阶段:首先,通过组合kNN和局部注意力实现点关联的地标关联步骤,然后是全局点云匹配,其中第一步中的关联被输入到姿态回归网络中,该网络主要包含全局注意力/池化层,然后是MLP。

当涉及到使用camera的度量地图定位时,该任务通常会遇到与尝试解决位置识别步骤时相同的问题,这意味着视点上的巨大差异。除此之外,还必须应对传统的里程计和地图定位挑战,如位置误差的累积或地图和传感器输出之间缺乏足够的重叠。

[6]基于OSM中道路网络的图形表示和两台camera的输入,提出了最早的解决方案之一。使用相同的设置,在[3]中,提出的方法依赖于OSM中表示的建筑结构,而不是道路网络。这里,使用过滤和聚类从输入点云中提取建筑物几何体,并使用基于正交性的二维评分函数对OSM建筑物数据进行评分,以跟踪车辆在OSM中的位置。

[71]中的作者选择使用卫星地图,通过使用立体相机生成的深度信息,训练了一个地面卫星字典,使其能够匹配两个视图中的特征。定位是通过首先从地面视图中提取特征及其特征向量,然后将包含特征的航空图像与最近的特征向量进行组合来实现的。[34]中,只有一台单目相机用于在卫星地图中查找车辆位置,这是通过训练连体神经网络来预测地面图像和空中感兴趣区域(ROI)之间的相似性得分来实现的。然后使用预测的相似性分数更新粒子滤波器[64]中的权重,以便在地图中定位单目相机。

虽然有多种方法依赖于视觉特征的提取和匹配,但其他方法提出了依赖于视觉地标的提取与匹配。[59]中使用的地标是极点。作者首先通过使用立体相机生成的视差图像,结合边缘检测和逻辑回归,通过检测极点来构建极点图。随后,通过以相同的方式检测极点,然后使用该信息更新粒子滤波器来实现定位,粒子滤波器与卡尔曼滤波器[64]耦合,用于额外的传感器融合。

作为[55]的扩展,在[74]中提出了另一种传感器融合方法,以利用通常可用的噪声GPS测量:使用修正的三重态损失函数,作者认为,可以使用预先定义的感兴趣区域中地面和极坐标变换航空图像的粗略GPS测量来计算能够相应缩放每对图像贡献的权重。该方法的有效性后来通过将其与粒子滤波器相结合来证明,同一位作者后来在[56]中提出了一种更先进的方法,其中除了极坐标变换外,还引入了几何约束投影变换,从而生成更逼真的地面图像。此外,还提出了一种新的细粒度交叉匹配解决方案:基于其基线网络的预测,选择相应的航空图像,并用粗略的GPS位置进行标记。然后,作者使用他们提出的投影变换和一组预定义位置对航空图像进行变换。最后,使用SSIM相似性损失函数来选择最佳匹配函数。

最后一种相机地图表示法是谷歌街景,它有时仍然被使用(尽管由于其稀疏性而不是很受欢迎)。[1]的作者根据GPS将Google StreetView中最接近的全景图像转换为一组八幅直线图像,然后使用SIFT特征进行传统的基于单应性的特征匹配,以跟踪车辆位置。

已经提出了多模式方法来处理某些边缘情况,例如只能使用camera但没有激光雷达传感器的自动驾驶汽车,或者没有高清点云地图的区域。这通常导致引入和使用其他预处理步骤,如语义分割、光线投射或深度预测。

首先,论文讨论试图在基于camera的地图(如卫星地图或类似OSM的地图)上定位激光雷达点云的方法:

在[76]中,作者提出了一种手工制作的4位语义描述符,基于OSM裁剪图像和激光雷达语义范围图像中的建筑物和交点位置,并将其与粒子滤波器相结合以实现全局地图定位。这项工作表明,语义分割可以成为打破多模态问题的一个很好的工具,随后的工作利用了这一点,例如[21],作者从OSM和输入点云中提取道路和建筑物。然后使用这些提取的区域使用传感器输入生成BEV激光雷达点云图像,并使用OSM和光线投射生成BEV模拟点云图像。最后,使用道路约束粒子滤波器来对齐不同的俯视图图像并跟踪车辆在OSM中的位置。

对于卫星地图,[47]的作者还利用激光雷达点云和卫星图像语义分割结果的相关性,以优化粒子滤波器的软成本函数。最近提出了更先进的基于深度学习的方法:在[61]和[63]中,对生成对抗网络(GAN)[14]进行了训练,以基于输入卫星作物生成合成俯视激光雷达图像。然后将合成和真实激光雷达图像都馈送到神经网络,以级联方式预测帧间位移值,首先预测旋转值,然后使用旋转值预测平移偏移。

激光雷达地图中定位camera数据的方法:

在尝试定位激光雷达地图中的视频数据时,立体相机是自然选择,因为可以处理它们的输出以将数据从2D转换为3D,这使得其与点云的对齐更加容易:一些早期尝试这一点的工作包括[75],其中作者使用点云地图,首先生成合成深度图像,然后继续估计高度,使用v-视差图测量横向和俯仰角。然后使用高度信息进行动态对象移除,最后将合成深度图像与立体深度图像进行匹配和对齐。类似地,在[36]中提出的方法试图在3D激光雷达地图中定位立体相机,在这种情况下,首先依靠视觉里程来提供变换的初始猜测,然后使用合成深度图和立体深度图残差对齐进行微调。

然而,更具挑战性的任务是在3D点云地图中定位单目相机图像,因为它们在定义上不包含任何深度或3D信息。一些早期尝试包括[7],这表明可以使用束调整的结果生成一组3D点,这些点可以称为局部重建,随后用于按照与ICP类似的方案将相机里程计与3D地图对齐。[70]提出了另一种基于合成地图视图和相机图像之间相关性的方法。

然而,这一次合成图像是使用激光雷达传感器返回的强度而不是深度数据填充的,因此生成与相机图像具有更接近视觉特性的合成图像。使用位于初始姿态猜测周围的离散数量的可能合成图像,作者使用归一化互信息(NMI)对其进行评估,并确定正确的车辆姿态。寻找能够在两种模式中匹配的特征可能具有挑战性,然而[81]中显示,表示线的特征可以帮助我们实现这一目标。在检测到3D和2D视图中的线后,作者排除了从相机角度看不到的3D线,然后继续使用各种几何特性(如长度、方向等)为所有线构建特征向量,并在两个视图中进行匹配。这使得可以在3D地图中跟踪相机图像。与所有其他挑战一样,涉及深度学习的解决方案很快显示出巨大的潜力:在[10]和[9]中,作者提出了CMRNET,这是一种神经网络,能够将RGB相机图像和合成深度图图像作为输入进行处理,并预测两个输入之间的相对姿态。

CVUSA[72]:由44416对全景地面和航空/卫星图像组成,具有标准化方向和对齐的GPS位置。这些图像是从美国各地收集的,描绘了街道乡村和城市场景。该数据集主要用于评估位置识别方法。CVACT[43]:类似于CVUSA数据集,但包含137218对图像。该数据集也主要用于研究位置识别方法。KITTI[25]:最受欢迎的户外测程评估大规模数据集之一:它包含22个序列,使用安装在汽车顶部的Velodyne HDL-64E记录,激光雷达扫描,然后预处理以补偿车辆的运动。该数据集可用于评估两种映射度量定位方法和位置识别方法。KITTI-360[42]:对KITTI数据集的更新,使用类似的激光雷达设置在同一城市,包含超过100k的激光扫描,行驶距离为73.7公里。在构建数据集时特别注意地理定位对齐,确保在与OSM或卫星地图对齐时获得更准确的结果。与之前的KITTI数据集类似,该数据集也可用于评估地图度量定位方法和位置识别方法。

基于Lidar,对于基于激光雷达的方法,经典方法和基于深度学习的方法都有其独特的优点和缺点:如[35]等方法提供了一种简单、灵活的方法以及解决该任务的快速方法。然而,准确度并不总是希望的那样好,并且该方法可能需要从一个场景到另一个场景的大不相同的匹配阈值。另一方面,像[23]或[79]这样的方法提供了很高的准确性,但代价是一个复杂的过程和更高的复杂度。

下图展示了KITTI数据集上多种度量地图定位方法的结果,使用不同的视觉传感器和不同模式的地图。虽然LiDAR激光雷达定位似乎是当今自动驾驶行业最受欢迎和最精确的方法,但点云地图上的立体视觉定位似乎有很大的潜力。使用两种不同的方法,大多数KITTI序列的误差小于0.5m,因此不可能忽略这种传感器组合。

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

}

我要回帖

更多关于 快速排序和归并排序哪个好 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信