没有合适的资源?快使用搜索试试~ 我知道了~
软件X 17(2022)100956原始软件出版物tx2_fcnn_node:一个开源ROS兼容工具,用于单眼深度重建Kirill Muravyev,AndreyBokovskiy,Konstantin Yakovlev俄罗斯科学院联邦研究中心ar t i cl e i nf o文章历史记录:2021年7月21日收到2021年12月1日收到修订版2021年12月14日接受保留字:自主导航机器人操作系统深度重建基于视觉的同时定位与地图构建a b st ra ct我们提出了tx2_fcnn_node将各种单目深度重建神经网络无缝集成到基于ROS的机器人软件(这是机器人领域的事实标准)。我们的工具简化了在真实机器人和仿真中部署、评估和比较深度重建神经网络的过程。我们用一组可以现成使用的预编译神经网络来补充我们的软件,其中一些能够在运行板载紧凑型嵌入式平台时表现出近乎实时的性能,例如Nvidia Jetson TX2,现在在学术界和工业界都经常使用版权所有©2021作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v0.2.1指向此代码版本所用代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-21-00133Code Ocean compute capsule N/A法律代码许可证MIT使用git的代码版本控制系统使用C、C++的软件代码语言、工具和服务编译 要求, 操作 环境依赖性ROS,CUDA,CuDNN,CuBLAS,Gstreamer,glib,TensorRT,OpenCV如果可用,链接到开发人员文档/手册https://github.com/CnnDepth/tx2_fcnn_node/blob/master/README.md支持问题电子邮件kiril.yandex.rubokovoy@isa.ru,软件元数据当前软件版本v0.2.1指向此版本可执行文件的永久链接N/A法律软件许可证MIT计算平台/操作系统LinuxROS Kinetic或更高版本,TensorRT 5.0或更高版本,CUDA 9.0或更高版本,CUDNN + CuBLAS,GStreamer-1.0,glib2.0如果可用,请链接到用户手册-如果正式出版,请在参考列表中引用该出版物https://github.com/CnnDepth/tx2_fcnn_node/blob/master/README.md技术支持电子邮件kirill. yandex.ru,bokovoy@isa.ru1. 动机和意义深度学习的最新进展使得有效解决计算机视觉中最具挑战性的问题之一-单目深度重建成为可能。这个问题是*通讯作者。电子邮件地址:bokovoy@isa.ru(Andrey Bokokovich).https://doi.org/10.1016/j.softx.2021.100956对于移动机器人来说非常重要,因为单目摄像机广泛用于各种机器人系统上,并且通常这种摄像机是机器人的唯一的外感受传感器。然而,在不断改进的方法之间仍然存在差距对于深度重建和真实(和模拟)机器人,因为前者不太适合于在(随机)机器人系统上的平滑部署。因此,深度重建方面的许多进步对于机器人从业者来说是不可用的,2352-7110/©2021作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx基里尔·穆拉维耶夫、安德烈·博科夫和康斯坦丁·雅科夫列夫软件X 17(2022)1009562××学术界和工业界。我们的软件旨在通过利用机器人社区中广泛使用的机器人操作系统(ROS)[1]框架来填补这一空白,并为用户提供自动传输使用不同库(PyTorch [2],TensorFlow [3]等)创建和训练的可执行ROS模块,该可执行ROS模块又与通常在机器人控制系统内使用的其他ROS模块(例如,同时定位和映射模块)兼容。因此,来自工业界和学术界的用户可以快速测试他们的神经网络,以便在广泛的机器人应用(勘探,导航,监控等)中进行深度重建。事实上,存在各种各样的软件,用于深度重建,建设(DR)。通常情况下,该软件以公开可用的代码库的形式出现,该代码库伴随着描述用于深度重建的新颖神经网络架构的某篇论文举几个例子:[4对于用户来说,编译、使用、比较不同的DR网络并将其集成到机器人项目中是一个耗时且不平凡的过程,其中深度重建是数十个同时启动的模块之一。我们的主要目标是统一启动和运行神经网络架构的方式,以便在ROS中进行深度重建为了创建我们的工具,我们选择了C和C++编程语言,这是机器人社区中最常用的语言。我们的软件针对NVidia Jetson等现代嵌入式计算机上的近实时使用进行了优化。在传统PC上运行也是可能的到提升深度重建算法的性能,我们利用TensorRT1技术对用户透明。这项技术专门用于加速神经网络的推理。我们提供了一系列预编译的这些网络先前由我们在[10]中描述,并且包含应用于网络的解码器部分的若干增强,以便提高深度重建的质量和效率。第一个增强是利用卷积运算来替换上卷积块,第二个增强是使用非瓶颈卷积来实现更快的去卷积。这两种修改都提高了深度重建的整体性能。我们希望我们的软件能让从业者从这是学术界和工业界的一个共同点,可以轻松地使用不同的神经网络进行深度重建实验,并轻松地将它们嵌入到基于ROS的移动机器人控制系统中。2. 软件描述我们的工具为用户提供了基于神经网络的任意深度重建的能力,无缝地集成到任何支持ROS的机器人控制系统中。它可以可以在任何平台(嵌入式或PC)上使用NVidia图形卡和基于Linux的操作系统,安装ROS和CUDA。特别是,它可以用于NVidia Jetson嵌入式计算机广泛使用的移动机器人现在。出于效率原因,我们使用了专门为提高计算性能而设计的TensorRT框架2.1. 软件构架我们的工具包有一个典型的结构为基于ROS的软件。工具包的实用程序被组织在两个ROS模块(节点)中,可以通过rosrun或roslaunch命令执行,并可以通过流主题中的消息与其他ROS节点交互。这些节点在图中可视化。1.一、执行深度重建的节点称为tx2_fcnn_node。它以单目图像作为输入,并预测深度图,全卷积神经网络(FCNN)模型。除了FCNN重构的深度图之外,它还输出与这些深度图同步的输入图像以及相机信息-相机的校准参数。机器人控制系统中使用的其他基于ROS的节点(例如SLAM模块)通常需要这些参数。我们的深度重建节点支持存储为TensorRT2引擎的神经网络模型。利用TensorRT显著提高了执行各种神经网络的效率操作并减少推理的总体运行时间。为了从神经网络模型准备TensorRT引擎,使用节点fcrn_engine_builder,它会自动将经过训练的神经网络转换为TensorRT引擎。此节点的代码包含用于某些层的几个插件的实现,这些插件通常用于DR网络,但默认情况下TensorRT不这些插件将在下面描述。2.2. 软件功能和代码片段2.2.1. 将神经网络模型转换为TensorRT我们的tx2_fcnn_node可与存储为TensorRT引擎的神经网络模型一起使用。TensorRT是一个为快速实时神经网络推理而优化的框架。在我们的实验中,我们见证了TensorRT与Ten- sorflow和PyTorch等常见深度学习框架相比的5倍加速。因此,我们提供了一个工具包,用于将神经网络模型转换为TensorRT格式。它被实现为fcrn_engine_builderROS节点。该节点采用以UFF格式存储的深度重建网络模型,并输出该网络的TensorRT引擎,可供我们的深度重建节点使用。UFF是不同深度学习框架的统一格式。神经网络的UFF文件包含其架构及其所有层的参数和权重。使用Tensorflow或PyTorch训练的神经网络模型可以使用uffpython包转换成UFF格式。3TensorRT并不支持所有的神经网络层。为了支持为流行的深度反射网络创建引擎,我们为神经网络层实现了三个插件上采样插件实现GPU操作,该操作使用最近邻方法将张量的空间维度增加两倍切片插件裁剪张量,使其高度减少1。它可能需要基于ResNet的交织插件实现了[11]中提出的一种交织操作,相当于解池和5 × 5卷积的组合(见图2)。为了加快计算速度,交错在我们的插件中被实现为单个GPU操作。要从UFF文件创建TensorRT引擎,应执行以下命令:的神经网络。 我们用另一种工具来补充我们的工具它能够将经过训练的神经网络传输到TensorRT引擎进行深度重建。还提供了一系列预编译的国家或最先进的1 https://developer.nvidia.com/tensorrt网站。2 https://developer.nvidia.com/tensorrt网站。3 https://docs.nvidia.com/deeplearning/tensorrt/api/python_api/uff/uff.html网站。基里尔·穆拉维耶夫、安德烈·博科夫和康斯坦丁·雅科夫列夫软件X 17(2022)1009563图1.一、 软件架构由两个ROS节点组成。tx2_fcnn_node将图像流作为输入,并输出估计的深度图(以及典型机器人控制任务所需的其他数据深度通过存储用户指定的神经网络模型的TensorRT引擎重建要获得此引擎,可以使用fcrn_engine_builder它将任意神经网络(以UFF格式存储)转换为TensorRT引擎。rosrun tx2_fcnn_node fcrn_engine_builder图二. 交错操作。图片来源:[11]。tx2_fcnn_node有几个可调参数,包括--uff=./ fcnn_model.uff--engine=./test_engine.trt--高度=240--宽度=320在上面的示例中,存储在文件fcnn_model.uff中的模型被转换为名为test_engine.trt的引擎。2.2.2. 在线单目深度重建我们软件的基本功能是在ROS中运行基于神经网络的单眼深度重建。此功能作为tx2_fcnn_nodeROS节点实现。节点由用户定义的TensorRT引擎(包含神经网络)参数化。它从机器人系统接收图像流,并输出预测的深度图以及一些辅助数据(见图1)。输入图像可以从以下两个来源获取:1. ROS主题(默认主题为/image)。2. 直接从机器人输入宽度和高度、输入源(内部相机或ROS主题)、TensorRT引擎的路径和相机校准文件。所有参数的完整说明可参见随附文档。请注意,没有参数来调整tx2_fcnn_node。它的性能完全取决于用户指定的神经网络(编译为Ten- sorRT)。显然,使用不同的神经网络会导致不同的性能:与权重较少的网络相比,权重较大的网络可能会产生质量更好的结果。但是,后者可能比前者更快。该模块可以通过rosrun命令启动rosrun tx2_fcnn_node tx2_fcnn_node输入宽度:=320输入高度:=240_engine_name:=test_engine.trt_calib_name:=tx2_camera_calib.yaml或者通过roslaunch命令:roslaunch tx2_fcnn_node cnn_only.launch基里尔·穆拉维耶夫、安德烈·博科夫和康斯坦丁·雅科夫列夫软件X 17(2022)1009564× ××××××图三. 提供深度重建网络架构。见图4。 由神经网络驱动的密集单目vSLAM的管道,用于深度重建。2.2.3. 神经网络我 们 的 软 件 支 持 使 用 任 意 深 度 重 建 神 经 网 络 ( 转 移 到TensorRT引擎),将单个图像作为输入并输出相同分辨率的深度图。在我们最近的工作[10]中,我们描述和评估了一系列专门为室内环境中的快速深度重建而设计的神经网络。我们提供这些网络作为我们软件的补充。4每个网络拥有一个传统的编码器-解码器架构。编码器是ResNet-50 [12],解码器由增加输入张量空间维度的五个块组成。不同的网络具有不同的解码器块。第一种块是上采样+ nonbt。它由上采样层和[13]中建议的非瓶颈块解编码器块的第二种变化是interl。它是[11]中提出的上卷积的快速变体它由四个卷积组成,内核为2 2,2三,三二、三3,以及交织操作,其合并这些卷积的输出在一起(见图2)。解码器块的第三个也是最快的变体是深度卷积-它是上采样、深度可分离卷积、批量归一化、11卷积和ReLU非线性的组合。所提供的网络的架构在图中可视化。3.第三章。所有提供的模型都是在NYU Depth v2数据集[9]上进行预训练的所提供的网络的相对误差约为0.17-0.18,RMSE约为0.6-0.7米的测试部分的数据集。为了使深度重建网络适应具有更宽视场的相机,其中一些网络进一步对从Habitat simulator [16]中的Gibson[14]和Matterport3D [15]数据集收集我们所有的模型都具有实时性能(即640 480张图像的深度重建速度超过30 FPS),在配备传统GPU(如GeForce RTX 2060)的PC上。此外,模型与dependency解码器demonstrate接近的实时性能(24 FPS)的NVidia Jet- son TX 2与320 240输入分辨率。这种嵌入式计算机被广泛用于机器人由于其紧凑,低能耗的配置文件,和大量的计算能力。3. 说明性实例在这里,我们描述了我们的工具如何可以用作基于视觉的同时定位和映射(vSLAM)管道的一部分,这在许多实际场景和用例中是需要的,如自主环境探索、救援任务等。首先,我们的tx2_fcnn_node处理来自机器人相机的图像第二,这些深度图(与图像同步)由第三方RGB-D SLAM模块用于创建环境的密集全局地图该流水线在图4中可视化。我们在实验中使用RTAB-MAP [17]作为vSLAM模块,然而,我们的软件对所使用的vSLAM方法是不可知的。请注意,该管道既可以用于真实机器人,也可以用于仿真。接下来,我们将更详细地描述这两种情况3.1. 在配备Jetson的机器人上运行vSLAM为了在配备Jetson的机器人上启动vSLAM,首先在Jetson计算机上安装ROS,CUDA和TensorRT。然后按照我们的repo中描述的那样构建我们的软件最后,构建RTAB-MAP ROS包.5之后,准备UFF文件,存储将用于深度重建的训练神经网络。下载我们准备的网络运行4 UFF文件可在http://pathplanning.ru/public/ECMR-2019/engines/上获得。5http://wiki.ros.org/rtabmap_ros。基里尔·穆拉维耶夫、安德烈·博科夫和康斯坦丁·雅科夫列夫软件X 17(2022)1009565图五. 具有深度重建的单眼vSLAM。在本实验中,vSLAM管道在Jetson TX2计算机上运行。输入图像和重建的深度图显示在左下角。右侧片段以点云和八角图格式描绘vSLAM地图见图6。单 目vSLAM在栖息地模拟器中进行深度重建。左-输入图像和重建的深度图;右- vSLAM图(点云)和轨迹。脚本download_models.sh。然后,要创建TensorRT引擎,请转到我们包中的引擎目录,并启动fcrn_engine_builder节点,如第2.2.1节所述。现在使用以下命令启动vSLAM管道:roslaunch tx2_fcnn_node rtabmap_cnn.launch。当 机 器 人 运 行 时 , 可 以 通 过 ROS 主 题 /rgb/image 、/depth/image 、 /mapPath 、 /oc-tomap_occupied_space 在RViz中观察输入图像、FCNN预测的深度图以及SLAM图和姿势。示例如图所示。五、这种可视化是在我们的实验中在走廊般的环境中获得的我们使用了带有内置单目摄像头的NVidia JetsonTX2。vSLAM过程的视频可在https://youtu.be/ayjvfzm-C7s上获得。3.2. 在模拟环境在模拟器中运行vSLAM算法对于它们的评估是有用的,因为使用模拟器允许进行大量的可再现实验。此外,利用模拟器通常允许精确地测量姿态和地图估计的误差。为了在照片逼真的模拟器Habitat中执行vSLAM,我们,和Habitat-API。7最后,下载场景(最流行的场景集合是Gibson [14]和Matterport3D [15])并设置Habitat配置。要使用Habitat执行我们基于ROS的软件,请从我们的repo构建并运行Habitat ROS绑定。8要从虚拟摄像机观察图像并控制虚拟代理,请运行以下命令:roslaunch habitat_ros keyboard_agent.launch现在构建并安装tx2_fcnn_node工具包,通过运行download_models.sh脚本下载深度重建网络,并准备为Habitat微调的模型的TensorRT引擎:rosrun tx2\_fcnn\_node fcrn\_engine\_builder--uff=./ resnet\_depthwise\_320x240\_habitat.uff--uffInput=tf/Placeholder--output=tf/Reshape--高度=240--宽度=320--engine=./ test_engine.trt--fp16现在,使用创建的TensorRT引擎,可以使用以下命令启动单眼vSLAM管道:roslaunch tx2_fcnn_nodertabmap_cnn_habitat.launch首先,安装ROS、CUDA和TensorRT。接下来,安装habitat-sim67https://github.com/facebookresearch/habitat-api。6https://github.com/facebookresearch/habitat-sim。8https://github.com/cnndepth/habitat_ros。基里尔·穆拉维耶夫、安德烈·博科夫和康斯坦丁·雅科夫列夫软件X 17(2022)1009566之后,我们可以在RViz中观察重建的深度图和VSLAM构建的环境栖息地环境、估计深度和vSLAM地图的示例如图所示。六、4. 影响我们的主要目标是为机器人从业者和研究人员提供易于使用的软件,以便将各种深度重建神经网络顺利集成到基于ROS的机器人控制系统中。我们的工具可以在任何支持CUDA和TensorRT(主要是Nvidia GPU)和Nvidia嵌入式计算机的计算机上使用。目标操作系统是Linux。tx2_fcnn_node允许交换不同的神经网络架构进行深度重建,无论使用什么库来创建和训练它们(例如PyTorch,TensorFlow等)。这是通过利用TensorRT框架并将神经网络转换到该框架(通过我们提供的辅助ROS节点)来实现的。我们的工具可以用于需要获得从相机到周围物体的距离的不同场景,SLAM是此类场景中最明显的例子我们用一系列预编译的深度重建神经网络来补充我们的软件。其中一些显示近实时性能(高达24FPS)的广泛使用的机器人NVidia Jetson车载计算机。我们的工具包在作品中提到[18,19]作为一种能够在嵌入式系统上实时运行FCNN的工具。在[20]中,它也被用作导航堆栈的一部分对未知环境的视觉探索。在这项工作中,tx2_fcnn_node与SLAM、目标设置和路径规划算法并行运行。模拟实验表明,具有我们的深度反射节点的勘探管道能够仅基于单目相机在完全自主的模式下构建密集和合理的地图。我们的软件的另一个应用可能是对象导航任务。在[21,22]中,在执行导航到对象的真实移动机器人(ClearpathHusky9)上使用了tx2_fcnn_node(在最初不知道场景的地图的情况下)基于来自单目视频摄像机的流来生成图像。该节点与基于深度学习的探索和对象导航方法并行实时工作。据报道,这种导航管道成功地完成了对机器人的一系列测试5. 结论我们介绍了一种软件,它允许机器人研究人员和开发人员无缝地将单目深度重建功能添加到他们的控制系统中。该软件用C/C++编写,与ROS兼容(支持ROS的所有日志记录、它可以在不同的硬件平台上运行,包括广泛使用的NVidia Jetson嵌入式计算机。我们的代码是开源的,这使得工具包可以使用,修改和探索。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作确认这项研究得到了俄罗斯联邦科学和高等教育部的支持,项目编号为075-15- 2020-799。引用[1]Quigley M,Conley K,Gerkey B,Faust J,Foote T,Leibs J,et al. ROS:An Open-Source Robot Operating System.在:ICRA开放源码软件研讨会,卷。号33.2. 2009年p. 五、[2]Paszke A , Gross S, Massa F ,Lerer A, Bradbury J, Chanan G , et al.PyTorch : An imperative style , high-performance deep learning library.在:神经信息处理系统的进展。2019年,第32页8026-37[3]Abadi M , Barham P , Chen J , Chen Z , Davis A , Dean J 等 人 ,Tensorflow:一个大规模机器学习系统。第12届USENIX操作系统设计与实现研讨会,vol.16。2016. p. 265比83[4]Alhashim I,Wonka P.通过迁移学习进行高质量的单眼深度估计。2018年,arxiv电子印刷品,URLhttps://arxiv.org/abs/1812.11941。[5]Ma F,Carlone L,Ayaz U,Karaman S.用于资源受限深度重建的稀疏感测。IEEE/RSJ智能机器人与系统国际会议。2016年。p. 96比103[6] Ma F,Karaman S.稀疏到密集:根据稀疏深度样本和单个图像进行深度预测。IEEE International Conference on Robotics and Automation(IEEE机器人与自动化国际会议)2018年p. 4796-803[7]Godard C,Mac Aodha O,Firman M,Brostow GJ.深入研究自我监督的单目深度估计。IEEE/CVF计算机视觉国际会议2019年。p. 3828-38.[8]放大图片Mahjourian R,Wicke M,Angelova A.使用3D几何约束从单目视频中无监督学习深度和自我运动。IEEE计算机视觉与模式识别会议。2018. p.5667-75[9][10]杨文,李文,李文.室内分割和支持RGBD图像的推断。在:欧洲计算机视觉会议。2012. p. 746-60[10]放大图片创作者:J.基于视觉的实时深度重建与Nvidia Jetson上一篇:欧洲移动机器人会议2019. p. 1比6[11]使用全卷积残差网络进行更深的深度预测。上一篇:3D视觉国际会议2016年。p. 239比48[12]何克,张X,任S,孙杰,深度残差学习图像识别。IEEE计算机视觉与模式识别会议。2016.第770- 778页。[13] Romera E,Alvarez JM,Bergasa LM,Arroyo R. Erfnet:用于实时语义分割的高效残差分解Convnet。IEEE Trans In- tell Transp Syst 2017;19(1):263-72. http://dx.doi.org/10.1109/TITS.2017的网站。2750080。[14]Xia F,Zamir AR,He Z,Sax A,Malik J,Savarese S. Gibson Env:Real-world perception for embodied agents. IEEE计算机视觉与模式识别会议。2018年p. 9068-79[15]Chang A,Dai A,Funkhouser T,Halber M,Niessner M,Savva M,et al.Matterport3D : Learning from RGB-d data in indoor environments. 2017年,arXiv预印本arXiv:1709.06158。[16]Savva M,Kadian A,Maksymets O,Zhao Y,Wijmans E,Jain B,et al.Habitat:A platform for embodied AI research. IEEE/CVF计算机视觉国际会议。2019年。p. 9339-47[17]Labbé M,Michaud F. RTAB-Map是一个开源的激光雷达和视觉同步定位和地图库,用于大规模和长期在线操作。J Field Robotics 2019;36(2):416-46.http://dx.doi的网站。org/10.1002/rob.21831。[18]放大图片作者:Jensen M.消防应用中增强现实的嵌入式深度学习系统。IEEE机器学习与应用国际会议。2020.第1224- 1230页。[19]Menshchikov A , Shadrin D , Prutyanov V , Lopatkin D , Sosnin S ,Tsykunov E,et al.实时检测猪草:由深度学习授权的无人机平台。IEEETransComput2021;70(8):1175-88.http://dx.doi.org/10.1109/TC.2021.3059819.[20]Muravyev K,Bokoya A,Yakovlev K.用视觉SLAM增强导航的探索算法在:俄罗斯人工智能会议。2021. p. 197-212[21]Staroverov A , Yudin DA , Belkin I , Adeshkin V , Solomentsev YK ,Panov AI.使用深度神经网络和分层强化学习进行实时对象导航。IEEE Access2020;8:195608-21. http://dx.doi.org/10.1109/ACCESS.2020.3034524.[22]Staroverov A,Panov AI.用于对象导航任务的地标策略优化。2021年,arXiv预印本arXiv:2109.09512。9https://clearpathrobotics.com/husky-unmanned-ground-vehicle-robot/。
下载后可阅读完整内容,剩余1页未读,立即下载
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)