51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读

这篇具有很好参考价值的文章主要介绍了51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天要分享的是基于BEV的多模态、多任务、端到端自动驾驶模型FusionAD,其专注于自动驾驶预测和规划任务。这项工作首次发表于2023年8月2日,性能超越了2023 CVPR最佳论文UniAD模型。论文题目是FusionAD: Multi-modality Fusion for Prediction and Planning Tasks of Autonomous Driving,主要作者来自Udeer.ai、西湖大学和和菜鸟网络。

Abstract

构建多模态、多任务神经网络以实现准确和稳健的性能是自动驾驶感知任务的事实标准。然而,利用来自多个传感器的这些数据来联合优化预测和规划任务在很大程度上仍未得到探索。为此我们提出了 FusionAD,这是第一个融合来自两个最关键传感器(相机和 LiDAR) 信息的统一框架,超越了感知任务。具体来说,我们首先构建了一个基于transformer的多模态网络,以有效地产生基于融合的特征。与基于相机的端到端方法UniAD相比,我们建立了一个旨在融合模态感知预测和状态感知规划的模块。它利用了多模态特征,在这里称为 FMSPnP。我们在常用的基准nuScenes数据集进行了广泛的实验,FusionAD在检测和跟踪等感知任务上有最先进的性能。它平均超过基线15%,占用预测精度提高10%,ADE评分的预测误差从0.708降低到0.389,并将碰撞率从0.31%降低到仅0.12%。

Introduction

在过去的几年里,深度学习一直在加速自动驾驶 (Autonomous Driving,AD) 的发展。对于自动驾驶,AD算法通常将相机和激光雷达信号作为感知输入,然后直接输出控制命令。AD任务通常分为感知、预测和规划。在传统的范式中,AD中的每个学习模块分别使用自己的主干并独立执行学习任务。此外,预测和规划等下游任务通常依赖于感知结果的向量化表示,而高级语义信息通常是不可用的,如图所示。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

以前,基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹。最近的端到端学习方法开始将端到端学习表述为一个多任务学习问题,同时输出中间信息以及计划的轨迹。这些方法仅采用单一输入模式。另一方面,特别是通过融合激光雷达和相机信息进行感知任务,可以显著提高感知结果。最近,人们对BEV (Bird’s Eye View)感知的兴趣激增,特别是对于以视觉为中心的感知。这一发展显著提高了自动驾驶汽车的能力,并使视觉和激光雷达模式的融合更加自然。对于感知任务,已经证明了使用基于BEV融合的方法是非常有效的。然而,以端到端的方式使用来自多模态传感器的特征,在预测和规划任务中仍未得到探索。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

为此,我们提出了 FusionAD。据我们所知,这是第一个基于专注于自动驾驶预测和规划任务的BEV多模态、多任务端到端学习框架。我们从最近流行的以视觉为中心的方法开始来制定我们的pipeline。首先,我们设计了一个简单而有效的transformer架构,融合多模态信息,在BEV transformer 空间中产生统一特征。由于我们的主要重点是探索融合特征以增强预测和规划任务,为此制定了融合模态感知预测和状态感知规划的模块,称为FMSPnP。它结合了渐进式交互和细化,制定了基于融合的碰撞损失建模。与其他方法不同的是,FMSPnP 模块利用了如图所示的分层金字塔架构,以确保所有任务都可以从中间感知特征中受益。该方法更好地传播高级语义信息,并有效地共享不同任务之间的特征。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

我们在流行的自动驾驶基准nuScenes数据集上进行了广泛的实验,实验表明FusionAD显著优于目前最先进的方法。主要贡献总结如下:

我们提出了一种基于BEV融合的自动驾驶多感知、多任务、端到端的学习方法。与基于相机的BEV方法相比,基于融合的方法大大提高了性能。

我们提出了 FMSPnP 模块,该模块结合了模态自注意力和预测任务,以及宽泛的碰撞损失和与矢量化的自我信息融合以进行规划任务。实验研究表明,FMSPnP提高了预测和规划结果。

我们对多个任务进行了广泛的研究,以验证所提方法的有效性,实验结果表明,FusionAD在预测和规划任务中取得了SOTA结果,同时在中间感知任务中也保持具有竞争力的结果。

Related work

BEV Perception

BEV感知方法在自动驾驶中用于感知周围环境,引起了人们广泛的关注。基于相机的BEV方法将多视角摄像机图像特征转换为BEV空间,无需后处理重叠区域即可实现端到端感知。LSS 和BEVDet 使用基于图像的深度预测来构建视锥,并提取图像BEV特征进行地图分割和3D对象检测。在此基础上,BEVdet4D和SoloFusion通过将当前帧BEV特征与对齐的历史帧BEV特性相结合来实现时间融合。BEVFormer使用带有transformer的时空注意力来获得时间融合的图像BEV特征。这些方法提高了对动态环境的理解,增强了感知效果。但是基于相机的感知方法距离感知精度不足,LiDAR可以提供准确的位置信息,然其点云又是稀疏的。为了解决这个问题,之前的一些方法探索了融合多模态数据以进行感知。BEV是基于Lidar的感知算法的一个共同视角,将多模态特征转换为BEV空间有助于融合特征的融合。BEVFusion将LSS方法得到的图像BEV特征与Voxelnet得到的LiDAR BEV特征连接起来,得到融合的BEV特征,提高了感知性能。SuperFusion进一步提出了基于多模态地图感知的多阶段融合。

Motion Forecasting

由于VectorNet方法取得的成功,现在主流运动预测(或轨迹预测)方法通常利用高清地图和基于矢量的障碍物表示来预测agent的未来轨迹。在此基础上,LaneGCN和PAGA通过改进的地图特征(如车道连接属性)来增强轨迹-地图匹配。此外,某些基于锚点的方法对地图附近的目标点进行采样,从而能够基于这些点进行轨迹预测。然而,这些方法严重依赖于预先收集的高清地图,这使得它们不适合地图不可用的区域。

矢量化预测方法往往缺乏高级语义信息,需要高清地图辅助,因而,最近的工作开始使用原始感知信息进行轨迹预测。PnPNet提出了一种新的跟踪模块,该模块从检测任务中在线生成目标轨迹,并利用轨迹级特征进行运动预测,但其总体框架基于CNN,运动预测模块相对简单,只有单模输出。由于transformer应用于检测和跟踪,VIP3D成功地借鉴了以前的工作,提出了第一个基于transformer的联合感知预测框架。UniAD进一步合并了更多的下游任务,并提出了一个面向规划的端到端自动驾驶模型。在前辈的基础上,我们对运动预测任务进行了更精细的优化,并引入了细化机制和模型注意力,大大提高了预测指标。

Learning for Planning

模仿学习(IL)和强化学习(RL)已被用于规划。IL 和 RL 用于端到端方法 (使用图像和/或激光雷达作为输入)或矢量化方法(使用矢量化感知结果作为输入)。虽然使用中间感知结果进行规划可以提高泛化和透明度,但矢量化方法存在后处理噪声和感知结果的变化。早期的端到端方法,如ALVINN和PilotNet,通常直接输出控制命令或轨迹,而缺乏中间结果/任务。相反,P3、MP3、UniAD学习了一个端到端的可学习网络,该网络执行联合感知、预测和规划,可以产生可解释的中间表示,提高了最终的规划性能。然而,它们要么只使用激光雷达输入,要么利用相机输入,这限制了它们的性能。Transfuser方法同时使用激光雷达和相机输入,但不在BEV空间中,只执行很少的AD学习任务作为辅助任务。为了解决这个问题,我们提出了一种基于BEV融合的、统一的多模态、多任务框架,该框架同时融合激光雷达和相机输入。

Method

我们提出的FusionAD的整体网络架构如图所示。最初,使用基于BEVFormer的图像编码器将相机图像映射到BEV空间。然后,这些再与BEV空间中的激光雷达特征相结合。再经过时间融合之后,融合的 BEV 特征将用于通过基于查询的方法进行检测、跟踪和映射任务。随后,token被转发到运动和占用预测任务和规划任务。我们把辅助模态感知预测和状态感知规划模块简称为FMSPnP。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

BEV Encoder and Perception

我们从FusionFormer中获得灵感,提出了一种新的多模态时间融合框架,用基于transformer的架构进行三维目标检测。为了提高效率,我们采用类似于BEVFormer的循环时间融合技术。与FusionFormer不同,我们使用BEV格式的特征作为LiDAR分支的输入,而不是体素特征。多模态时间融合模块包括6个编码层,首先利用一组可学习的BEV查询器分别使用points cross-attention和image cross-attention融合LiDAR特征和图像特征,然后,我们通过时间自注意力将生成的特征与前一帧的历史BEV特征融合。查询由前馈网络更新,然后作为下一层的输入。经过6层融合编码后,这将为后续任务生成最终的多模态时间融合BEV特征。

LiDAR 首先对原始LiDAR点云数据进行体素化,然后根据SECOND网络生成LiDAR BEV特征。

Camera 多视角相机图像首先通过骨干网进行特征提取,然后,利用FPN网络生成多尺度图像特征。我们进一步开发了以下技术来有效地提高融合模块的性能。

Points Cross-Attention

在points cross-attention过程中,每个BEV查询只与其对应的参考点周围的LiDAR BEV特征交互。这种交互是使用可变形注意力实现的:

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

其中 Qp 表示点 p = (x, y) 处的BEV查询,BLiDAR表示LiDAR分支输出的BEV特征。P是BEV空间中坐标p=(x,y)在LiDAR BEV空间中的投影。

Image Cross-Attention

为了实现image cross-attention,我们参照了BEVFormer类似的方法。每个BEV查询都以类似于pillar表示。在每个pillar沿 Z 轴采样固定数量的 Nref 3D 参考点。image cross-attention过程如下所示:

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

其中 Vhit 表示可以投影参考点的相机视图的数量,i 是相机视图的索引,Fi 表示第 i 个相机的图像特征,P (p, i, j) 表示 BEV 查询 Qp 到第 i 个相机的图像坐标系中的 3D 参考点 (x, y, zi) 的投影。

Temporal Self-Attention

我们还参考了BEVFormer来实现时间自我注意。具体来说,我们的方法涉及基于车辆在帧之间的运动的历史帧 BEV 特征的时间对齐。然后我们使用时间自注意力来融合历史帧 BEV 特征,如下所示:

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

其中B 't−1表示时间对齐后时间戳t−1处的BEV特征。由于我们对预测和规划增强感兴趣,对于感知中的检测、跟踪和映射任务,我们主要遵循UniAD论文中的设置。

Prediction

得益于信息量更大的BEV特征,预测模块能接收到更稳定、更细粒度的信息。在此基础上,为了进一步捕获多模态分布并提高预测精度,我们引入了模态自注意力和细化网络。设计细节可以在下图中找到Design of the prediction module in FMSPnP。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

Context-Informed Mode attention

在UniAD中,使用数据集级的统计锚点来辅助多模态轨迹学习,并应用锚点间自注意力来提高锚点的质量。然而,由于这些锚点没有考虑历史状态和地图信息,它们对多模态学习的贡献是有限的。因此,我们稍后考虑添加此操作。在运动查询检索所有场景上下文以捕获代理-代理、代理-地图和代理-目标点信息后,我们引入 mode self-attention来实现各种mode之间的相互可见性,从而获得更好的质量和多样性。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

其中MHSA表示多头自注意。Qu 表示获取上下文信息的查询。

Refinement Network

可变形注意力使用统计锚作为参考轨迹与 Bev 特征交互。如前所述,由于需要特定的场景信息,该参考轨迹增加了后续学习的难度。我们引入了一个Refinement Network,使用Motionformer生成的轨迹作为更精确的空间先验,查询场景上下文,并在这个阶段预测地面真实轨迹和先验轨迹之间的偏移量。如下所示:

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

Anchorp 表示空间先验,一个简单的MLP将用于对Motionformer输出的轨迹进行编码,在时间维度上执行maxpool得到它。Xm表示Motionformer输出轨迹的端点。

 Planning

在评估过程中,我们无法访问高清 (HD) 地图或预定义的路线。因此,我们依靠可学习的命令嵌入来表示导航信号(包括左转、右转和保持前进)来指导方向。为了获得周围的嵌入,我们将由自我查询和命令嵌入组成的计划查询输入到BEV特征中。然后,我们将其与由 MLP 网络处理的自我车辆嵌入进行融合,以获得状态嵌入。然后将此状态嵌入解码为未来的航路点 ^τ。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

为了确保安全,在训练过程中,除了简单的imitation L2 loss外,我们还将碰撞损失的可微分collision loss纳入,如下设计。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

其中 λimi = 1, λcol = 2.5, ^τ 是原始规划结果,~τ 表示规划标签,b 表示场景中预测的代理。碰撞损失由下式计算:

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

Trainning

我们利用三阶段训练进行多传感器、多任务学习。在第一阶段,我们只训练BEV编码器和感知任务;在第二阶段,我们固定BEV编码器并训练感知、预测和规划任务;而对于可选的第三阶段,我们进一步训练占用和规划任务,固定所有其他组件。

Experiments

Experiment Setup

我们使用 32 个 A100 GPU 进行实验训练,使用 nuScenes 数据集,包括在波士顿和新加坡捕获的 1000 个驾驶场景。每个场景跨越大约 20 秒,nuScenes 提供了 140 万个 3D 边界框,其中包含 23 个不同的类别,以 2Hz 采样。我们遵循业界常用评估方法来评估端到端自动驾驶任务的性能。具体来说,使用 mAP 和 NDS 来评估检测任务,AMOTA 和 AMOTP 来评估跟踪任务,IoU 来评估映射任务,而且使用端预测精度 (EPA)、平均位移误差 (ADE)、最终位移误差 (FDE) 和错误率 (MR) 来评估运动预测的性能。对于未来的占用率预测,我们使用FIERY中采用的近(30 × 30m)和远(100 × 100m)范围的度量未来视频全景质量(VPQ)和IoU。我们采用位移误差(DE)和碰撞率(CR)来评价规划性能,其中碰撞率被认为是主要指标。

Experiment Results

The results of motion forecasting FusionAD remarkably outperforms

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

The results of occupancy prediction FusionAD remarkably outperforms

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

 Planning Results: FusionAD achieves the stateof-the-art performance

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

Ablation Studies

消融实验相对来说做得少些。

FMSPnP模块相关的消融研究如表五和表六所示。很明显,细化网络和self-attention模块对提高预测结果有显著贡献。同时对规划结果而言,当过去轨迹矢量化表示和自我状态相融合时,观察到显著的改进。

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

Qualitative Results

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读,自动驾驶,智慧城市,transformer,gpt-3,迁移学习,人工智能

Discussion

虽然所提出的方法表现出很强的定量和定性性能,但它仍然依赖于基于规则的系统对输出进行后处理,以实现可靠的现实世界性能。此外,目前的研究工作主要使用规划任务的开环结果来评估学习的规划器,这可能无法有效地衡量其性能。用真实世界的感知数据以闭环方式评估规划器带来了挑战。尽管如此,端到端框架下的预测结果仍然很有希望,并且有可能在此框架内进一步改进规划模块。 

Conclusions

我们提出了FusionAD,这是一种利用BEV融合来促进多感知、多任务、端到端的学习新方法,从而显着增强自动驾驶领域的预测和规划任务。该方法强调了将统一的端到端框架有效地扩展到基于融合方法的潜力。与仅依赖于基于相机的BEV的端到端学习方法相比,在预测和规划任务上都有显着的性能改进,同时也提高了感知性能。

https://arxiv.org/abs/2308.01006文章来源地址https://www.toymoban.com/news/detail-820376.html

到了这里,关于51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenAI】Python:(3) 基于 Gym-CarRacing 的自动驾驶项目 | 路径训练功能的实现 | 规划与决策 | 路径平滑 | 利用公式进行目标速度预测

         猛戳订阅!  👉 《一起玩蛇》🐍 💭 写在前面:  本篇是关于多伦多大学自动驾驶专业项目的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个版本,经过修改以支持模拟汽车在赛道上行驶的物理过

    2024年02月22日
    浏览(55)
  • 用于自动驾驶的基于深度学习的图像 3D 目标检测:综述

    论文地址:https://ieeexplore.ieee.org/abstract/document/10017184/ 准确、鲁棒的感知系统是理解自动驾驶和机器人驾驶环境的关键。自动驾驶需要目标的 3D 信息,包括目标的位置和姿态,以清楚地了解驾驶环境。 摄像头传感器因其颜色和纹理丰富且价格低廉而广泛应用于自动驾驶中。摄

    2024年02月03日
    浏览(55)
  • 自动驾驶轨迹预测

    目录 神经网络轨迹预测综述: 比较新的轨迹预测网络 Uber:LaneRCNN[5] Google:VectorNet[6] Huawei:HOME[7] Waymo:TNT[8] Aptive:Covernet[9] NEC:R2P2[10] 商汤:TPNet[11] 美团:StarNet[12]。行人 Aibee:Sophie[13]。行人 MIT:Social lstm[14]。行人 中科大:STGAT[15]。行人 百度:Lane-Attention[16] 【自动驾驶

    2024年02月02日
    浏览(72)
  • 自用纯C语言实现任务调度(可用于STM32、C51等单片机)

      这个任务调度模块的实现是形成于毕设项目中的,用在 STM32 中,断断续续跨度2个月实现了一些基本功能,可能后面再做其他项目时会一点点完善起来,也会多学习相关知识来强化模块的实用性和高效性,毕竟用自己自主实现出来的功能还是蛮舒心的。   整体上的结构

    2023年04月09日
    浏览(49)
  • 自动驾驶之行人轨迹预测数据集

    ETH: Univ. + Hotel; 750 pedestrians exhibiting complex interactions UCY: Zara01, Zara02 and Uni. 780 pedestrians 单应性矩阵,SLAM中的当用多个不同相机拍摄同一个三维平面需要考虑的矩阵,适应场景为平面情况 商场 这个数据集是用双鸟瞰相机对平面拍摄 将成群行走的人标出,ID和obsmat中一样,每一

    2024年02月11日
    浏览(41)
  • 自动驾驶路径规划——路径规划入门须知

    目录 前言  1.无人驾驶关键技术  2.路径规划基本概念与分类 2.1 路径规划基本概念 2.1.1 路径规划需要解决的问题  2.1.2 路径规划——现在的研究  2.2路径规划的分类 2.3路径规划的流程 3.行为决策  声明        这个学期学校开设了相应的课程,同时也在学习古月居机器人学

    2023年04月08日
    浏览(44)
  • 【自动驾驶汽车量子群粒子过滤器】用于无人驾驶汽车列车定位的量子粒子滤波研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 对于无人

    2024年02月15日
    浏览(50)
  • 【自动驾驶】模型预测控制(MPC)实现轨迹跟踪

    bilibili的DR_CAN讲解的MPC模型预测控制器 知乎上一个比较通俗易懂的解释 模型预测控制 轨迹跟踪模型预测控制(MPC)原理与python实现 DR_CAN笔记MPC MPC控制笔记 模型预测控制(MPC)的核心思想就是以优化方法求解最优控制器,其中优化方法大多时候采用二次规划(Quadratic Programmin

    2024年02月02日
    浏览(53)
  • [自动驾驶算法][从0开始轨迹预测]:二、自动驾驶系统中常用的坐标系及相应的转换关系

    写在前面:上一篇文章中,我们介绍了坐标转换的基础知识,接下来,我们将介绍由汽车的传感器到全局定位会涉及到的若干个坐标系统。 下图是自动驾驶系统中常见的坐标系统: ​ 一般来说, 典型的定位和建图场景情况,不同坐标系之间的关系如下: ​ 环境传感器数据

    2024年01月16日
    浏览(49)
  • 【论文阅读】MARS:用于自动驾驶的实例感知、模块化和现实模拟器

    paper code 如今,自动驾驶汽车可以在普通情况下平稳行驶,人们普遍认识到,真实的传感器模拟将在通过 模拟解决剩余的极端情况方面 发挥关键作用。为此,我们提出了一种基于神经辐射场(NeRF)的自动驾驶模拟器。与现有作品相比,我们的作品具有三个显着特点: (1)实例

    2024年02月08日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包