NeRF和3DGS

  • 一、传统三维表征方法
    • 1.1 显示表征
    • 1.2 隐式表征
  • 二、NeRF(Nerual Radiance Field)
    • 2.1 NeRF场景表示
    • 2.2 NeRF训练流程
    • 2.3 NeRF体渲染
    • 2.4 NeRF位置编码
    • 2.5 NeRF体素分层采样(Volume Hierarchical Sampling)
    • 2.6 NeRF网络结构
    • 2.7 NeRF总结
    • 2.8 NeRF相关研究
  • 三、3DGS
    • 3.1 3DGS"显示"三维特征
    • 3.2 3DGS原理介绍
    • 3.3 3DGS前向渲染
      • 3.3.1 坐标系变换
      • 3.3.2 颜色渲染(alpha-blending)
      • 3.3.3 按图像块Tile并行化渲染
    • 3.4 3DGS优化训练过程
    • 3.5 3DGS相关研究
    • 3.6 3DGS相关研究点

一、传统三维表征方法

1.1 显示表征

在这里插入图片描述

补充:

  • 多边形网格:明确的拓扑关系,便于可视化,内存占用低;非结构化网格生成难度高;
  • 体素:难以支撑高精度、大规模场景重建;
  • 点云:易获取(可直接通过激光雷达深度相机采集),无需复杂预处理;缺乏拓扑关系,难以直接表征孔洞遮挡等表面连续性关系;噪声,数据缺失;存储计算效率低。
    在这里插入图片描述

1.2 隐式表征

在这里插入图片描述
蓝色三角形:相机的视场范围
绿色:物体截面;

二、NeRF(Nerual Radiance Field)

2.1 NeRF场景表示

思想:将场景表达为与空间信息相关的可优化的函数,并通过优化方法拟合该函数。

在这里插入图片描述

函数输入:采样点位置+观测方向,五维向量;
函数参数化为一个全连接的深度神经网络,将输入信息处理后输出相应空间位置的体素密度以及依赖观测方向的RGB颜色;
再利用提渲染技术将颜色俺体素密度沿相机光纤进行积分渲染相应像素的颜色,此渲染过程可微,像素颜色真值已知;所以可通过最小化所有相机射线渲染颜色与真实像素的误差来优化此全连接网络,即场景的表示。

在这里插入图片描述

在这里插入图片描述

2.2 NeRF训练流程

观测角度也做自变量原因:不同角度的光影有区别变化。
在这里插入图片描述
1)光线采样
对于每张训练图像中的每个像素根据相机位姿生成一条从相机中心穿过该像素的光纤,随后沿光线在近处远处截断平面之间均匀或分层采样多个3D点。

2)神经网络预测

将每个采样点的3D坐标以及观测方向输入多层感知机MLP,输出该位置的集合不透明度和从观测方向看到的颜色。

3)体渲染
沿光线积分3D点的密度和颜色合成2D像素颜色(此过程可微,公式中仅包含+、-、exp三种可微运算,为后续可优化提供条件)。

4)损失计算与优化
计算渲染像素颜色与真实像素之间的均方误差,并通过梯度下降的方法更新MLP参数逐步最小化损失函数。

2.3 NeRF体渲染

NeRF体渲染(Volunme Rendering)公式理解
在这里插入图片描述
包含两个部分:(1)射线上颜色的积累;(2)射线上各采样点的累计不透明度

  • 累计透射率
    在这里插入图片描述
    穿过推土机密度场和辐射场的一条射线从tn出发射向无穷远tf处,该射线传播到多远处会停止?

在这里插入图片描述

  • 颜色累计
    在这里插入图片描述
    在这里插入图片描述
    o:坐标原点;d:描述射线方向的单位向量

在这里插入图片描述

核心思路:假设在两个采样点之间的密度颜色都是均匀且固定的,采样间隔相距越小最终累计颜色越精确。

在这里插入图片描述

2.4 NeRF位置编码

在这里插入图片描述

类似vision transformer,像素坐标(x,y)输入网络之前,利用三角函数对其进行类似傅里叶变换操作。
与VIT不同之处在于,VIT进行位置编码是使网络能够注意到图像块之间的相对位置信息。NeRF是为了带训练优化的场函数mlp可以更好地拟合高频信息,更具体讲,神经网络对于相近的输入有着相近的输出,现实中,观测位置的小变化也会引起观测结果的细节存在巨大改变。神经网络可能会以一种偏向于平均的方式进行拟合,反映到渲染结果会形成模糊笑果。引入位置编码将位置与视角方向映射到高维且高频空间后,再作为神经网络输入,此时微小的输入变化也会引起编码结果的巨大变化,间接提高了神经网络的输出对于输入微小变化的敏感度。

2.5 NeRF体素分层采样(Volume Hierarchical Sampling)

在这里插入图片描述
普通情况下密度场中存在大片空白区域,若采用均匀采样,极有可能导致在信息密集的区域采样不足,而在无信息的空白区域过度采样,极大浪费资源(网络训练过程中会对空区域进行过度拟合)。

故采用多层级采样。

首先大尺度采样,判断密度场的密度集中区域;
再对密度集中区域进行精细采样。
最终采样结果包含两个部分:粗采样和精采样。

2.6 NeRF网络结构

在这里插入图片描述
全连接+Relu激活层。
位置编码后的位置量→5层网络编码→再次将位置信息接入到第5层的激活层之后(避免多层编码后网络对于原始位置信息的遗忘)→3层全连接,输出256维的特征向量,解码该向量可计算出采样点的体素密度;此处对于密度的计算只考虑采样点的未知量,对颜色的计算需要考虑未知量和观测视角方向;即在第9层会将前8层编码的特征向量与经过位置编码的视角方向进行串联→随后经过128维的全连接层→最后输出网络预测的在相应空间位置与观测视角相关的采样点颜色。
其中位置编码后的坐标由原来的三维升维到60维,视角方向编码由2维升到24维。

2.7 NeRF总结

在这里插入图片描述

2.8 NeRF相关研究

在这里插入图片描述
在这里插入图片描述

Nvidia提出,NeRF研究工作者集大成之作。
在这里插入图片描述

三、3DGS

3.1 3DGS"显示"三维特征

在这里插入图片描述

  • 1、各向异色的3DGS经过训练后仍然保留了原始的三维几何信息,NeRF不具备,因为NeRF的渲染是通过对神经辐射场中的采样点经过MLP解码实现,其实际上是将三维点的位置信息隐藏在了训练好的MLP中,不利于直观理解。
    3DGS重建场景放大可看到很多半透明椭球叠加,可从细节上拟合细节处纹理,进而展现逼真渲染效果。

在这里插入图片描述

  • 2、NeRF是依赖黑盒式神经网络构建依赖关系。

3.2 3DGS原理介绍

在这里插入图片描述

  • 将3DGS重建场景投射到不同视角的相机平面,颜色形状均都是不同的。其中形状的各向异性,是由于它本身是一个三维椭球而非正球体;颜色的各向异性则是通过球谐函数实现。
  • 可实现快速的抛雪球渲染与反向传播。抛雪球计算机图形学中经典概念,把三维点视作雪球朝相机平面进行泼洒,雪球在平面扩散开,当有很多大大小小不同形状、颜色各异的雪球进行泼洒和叠加时便形成期望渲染的图像。这种方法无需像NeRF一样进行光线采样。这是3DGS比NeRF更快的主要原因之一。另外,这样的抛溅过程显示可微,因此3DGS源码无论在前向渲染还是梯度反向传播阶段均利用cuda手动计算而非深度学习中常用的pytorch自动求梯度的方式。
  • 根据反向传播计算出的梯度,自适应调整3DGS的数量。若空间某一处的3DGS太大,无法拟合高纹理区域的细节,则像细胞一样分裂成两个或多个。

在这里插入图片描述

  • 首先从一组图像中恢复出场景的系数点云和相机位姿,这一过程通常是通过colmap实现。
  • 利用点云初始化3DGS,即赋予其初始的颜色、尺寸、不透明度等属性。
  • 利用相机内外参将3DGS投影到相机平面
  • 利用可微的光栅化方法渲染得到一张图像。有了图像后即可与相应的真值图像进行比对,计算损失函数。并沿蓝色箭头反传梯度。
  • 梯度两个作用。其一,用来更新3DGS的属性值,即上方蓝色箭头传播方向;其二,用来指导自适应密度控制,通过对梯度进行一定的阈值判断来决定各个3DGS到底是分裂克隆还是删除。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二维高斯分布大体呈现椭圆形状,离椭圆中心越远的地方数值越小。
均值和方差依旧用来控制概率分布的中心位置与形状;增加的相关系数ρ控制该分布的旋转角度。

在这里插入图片描述
三维高斯分布类似一个椭球,椭球在三维空间中的位置由均值决定,形状和姿态由协方差矩阵决定。
考虑到标准三维高斯分布的形状是正球体,而任意圆球都可以通过仿射变换变为椭球,所以实际上协方差矩阵就是从标准高斯分布到任意高斯分布的仿射变换,因此可将协方差矩阵进一步拆解为尺度矩阵与旋转矩阵的组合形式。
在这里插入图片描述
R为旋转矩阵,一个行列式唯一的正交矩阵;
S为尺度矩阵,一个三维的对角矩阵,对角线的元素对应椭球三个主轴的缩放尺度。
此处协方差矩阵的拆解还有另一个好处,高斯分布要求协方差矩阵式半正定的,但随着训练优化的不断进行,直接对协方差矩阵做梯度下降时无法保证这一特性,而将其进行拆解为缩放和旋转矩阵即有效保证协方差矩阵的半正定性。

更详细数学推导可见博文:场景重建——3DGS重建和闭环仿真相关概念综述。

除了位置和形状,3DGS还具备颜色和不透明度(此处和NeRF一致)。

  • 颜色
    在这里插入图片描述
    球谐函数,一组定义在球面上的特殊函数。在计算机图形学领域,通常用它来表示近似的光照或颜色的分布。
    阶数l为0时,止呕一个球谐基且为常数,也就是说无论输入的方式是什么永远返回一个固定颜色;当阶数升高时,对应球谐系数变多,且数值依赖于输入的视角方向,这就意味着可以用它来实现各向异性的颜色表示。
    在3DGS源代码中,初始球谐函数阶数设为0,随着训练优化过程的进行,逐步增加到3,初始设为0是由于在训练初始阶段相较于3DGS的颜色,其位置信息更能影响渲染质量。因此为了提高训练效率,在初始阶段会将球谐函数阶数设为0。最终增长到阶数3后不会再继续增长,因为一般情况下,三阶的球谐函数已可以拟合绝大多数场景的各向异性的颜色细节。

3阶情况下,各个球谐基的具体公式:在这里插入图片描述
一共16个球谐基,每一组球谐基对应RGB3原色中的一个,为了形成最终的颜色,需要训练的球谐系数16*3=48个。

3DGS模型需要优化的属性值。

在这里插入图片描述
在优化过程中,算法会根据反传回来的梯度,也就是损失函数相对于以上各个属性的偏导数不断更新迭代这些变量。

3.3 3DGS前向渲染

3.3.1 坐标系变换

在这里插入图片描述
传统图形学渲染管线中,坐标系变换用于将世界坐标系中的3D位置信息映射到图像空间,这个流程主要由三部分组成:

  • 相机变换,刚体变换,一般通过旋转矩阵与位移向量将物体从世界坐标系转换至相机坐标系。

  • 投影变换,相机空间中的点映射到xyz三个坐标范围都在-1~1之间的立方体中,该立方体被视为规范化视图体积,即NDC标准化坐标。
    在针孔摄像模型假设前提下,所以实际上存在一个如下上方视椎体,在该视椎体里,发射的光线并不是平行的,在原始NeFR中不存在次问题,因为NeRF本来就是从每条不同方向的光线上进行采样,再通过查询的方式来确认相应坐标的采样点的属性等。
    但在3DGS中,每次都计算不同方向的射线和哪些高斯椭球有接触是比较麻烦的,所以希望能在一个对于不同光线都是平行的空间里完成这一步骤,如此,便不需要每次都计算光线和高斯是否接触。
    在这里插入图片描述

  • 视角变换,viewpoint transformation。用来将NDC标准立方体沿Z轴压扁,并将得到的22正方形映射到WH的屏幕空间。

与传统SLAM不同在于,传统视觉SLAM在做完世界坐标系to相机坐标系的转化后会利用内参矩阵直接将三维点投影到相机的归一化平面。

椭球投影到平面

在这里插入图片描述
Σ:3DGS的三维协方差矩阵。
Σ:投影到2D屏幕后的二维协方差矩阵。
W:从世界坐标系到相机坐标系的转换矩阵,即相机变化。
J:投影变换的一阶导数,即雅克比矩阵。

大致思路:三维椭球体经过仿射变换后投影到二维平面,呈现的不一定是椭圆,而是如图右侧呈现出局部被扭曲的形状,而为了后续方便计算,希望投影结果仍然是一个椭圆形,也就是继续用二维协方差矩阵表示。
所以需要采取一定的近似方法,便引入了对投影变换的局部反射近似。其本质是对该过程进行一个一阶泰勒展开。
通过以上过程,即可获知将3D高斯泼溅到屏幕所产生的2D高斯位置信息。

3.3.2 颜色渲染(alpha-blending)

在计算颜色之前,需要首先计算泼溅的2DGS在屏幕上会影响哪些像素,而被影响的像素应该呈现怎样的透明度呢?

在这里插入图片描述

论文中利用高斯分布的在这里插入图片描述原理,即服从正态分布的随机变量有99%或几乎所有的观测值都会落在均值正负3三个标准差的范围范围内。

具体来说,首先以均值为中心,取2D高斯的长轴,即较大的标准差,它的三倍为半径做圆,以此划定高斯分布对周边的影响范围。距离2DGS中心越远的像素其透明度也应该越低。

随后通过alpha-blending渲染,给定任意像素位置,可通过前面讲的投影变换计算出像素与所有影响到它的3DGS的距离,即这些高斯的深度。目的是形成一个经过排序的高斯列表。便可以利用alpha-blending的方式来计算该像素的颜色。

N高斯点颜色的加权和就是该像素最终的颜色C。α是最终的不透明度,它是通过3DGS的不透明度和2D高斯的概率分布密度决定,对应物理含义为高斯点在概率密度越低的地方越不可见。
逐像素渲染较慢。

3.3.3 按图像块Tile并行化渲染

在这里插入图片描述
为了实现快速光栅化而做的并行化操作。

为了降低为每个像素计算有序列表的计算成本,3DGS将精度从像素级别转移到块级别。如上图图(b)所示,3D高斯最初将图像划为多个不重叠的图像块,这些图像块在论文中成为Tile。每个块包含16*16像素。

3DGS进一步确定哪些图像块与这些投影的高斯,也就是2D椭圆相交。考虑到一个投影的高斯可能覆盖多个块,一种合理的方式是复制高斯,为每个副本分配一个标识符即块的ID。
复制后如图(c)所示,3D高斯会将各自的块ID与每个高斯视图变换得到的深度值结合,得到一个未排序的字节列表,其中高位代表块ID,低位表示深度。如此,排序后的列表就可直接用于渲染,如图(c)和图(d)所示。

每个块和像素的渲染都是独立进行的,因此这一过程非常适合并行计算,这样做的另一个好处是每个块的像素都可以访问一个公共的共享内存,并保持一个统一的读取系列,从而提高渲染的并行执行效率。

至此已可以利用3DGS渲染出建模后的三维世界的图片,再计算其与真实图片的差异,也就是loss function,见下节。

3.4 3DGS优化训练过程

反向传播梯度:更新优化3D高斯的均值、协方差矩阵、不透明度和球谐函数并指导3D高斯群体的自适应密度的控制策略。
在这里插入图片描述
D-SSIM:基于结构相似性的损失函数,同时考虑深度信息,可以衡量两个图片在结构亮度对比度上的相似性。

自适应密度控制策略包括三种:
在这里插入图片描述

  • 每100次迭代会删除几乎透明的高斯点,不透明度α小于一定阈值的3D高斯;克隆一个相同大小的副本,并沿着位置梯度方向进行摆放;分裂可能会导致密度不合理的增加,所以采用4,每迭代3000次,重置不透明度。

3.5 3DGS相关研究

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.6 3DGS相关研究点

在这里插入图片描述
up主讲得很好:3DGS原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89849.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89849.shtml
英文地址,请注明出处:http://en.pswp.cn/web/89849.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

035_ClaudeCode_MCP_介绍

035_ClaudeCode_MCP_介绍 摘要 Model Context Protocol(MCP)是一个开放的标准化协议,专为大型语言模型提供上下文数据而设计。作为Claude Code生态系统的重要组成部分,MCP如同"AI应用程序的USB-C端口",提供…

Python 程序无法找到 Oracle 的 64 位客户端库 (libclntsh.so)

数据库错误: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help 这个错误表明 Python 程序无法找到…

Kubernetes常用命令总结

文章目录Kubernetes常用命令总结1. 集群管理命令kubectl cluster-infokubectl get nodeskubectl describe node <node-name>kubectl top nodes2. Pod相关命令kubectl get podskubectl get pods -o widekubectl describe pod <pod-name>kubectl logs <pod-name&g…

roboflow使用教程

如何利用roboflow标注自己的训练集、调用开源数据集 官网&#xff1a;Roboflow: Computer vision tools for developers and enterprises&#xff08;国内代理进不去&#xff09; 先注册登陆进去 训练自己的数据集 点击“New Project”,名字按照自己的需求来 我不想写了&am…

IDEA中使用Tomcat两种方式

Catalogue1 集成本地Tomcat2 Tomcat Maven插件&#xff08;推荐&#xff09;1 集成本地Tomcat 将本地Tomcat集成到Idea中&#xff0c;然后进行项目部署即可 点击编辑配置 点击加号 添加local的Tomcat 配置Application Server 可以修改一下Name 至此&#xff0c;配置完成 …

服务器上的文件复制到本地 Windows 系统

在 Windows 上通过 SSH 连接到 Linux 服务器后&#xff0c;如果需要将服务器上的文件复制到本地 Windows 系统&#xff0c;可以使用以下几种方法&#xff1a;方法 1&#xff1a;使用 scp&#xff08;Secure Copy&#xff09;命令 scp&#xff08;基于 SSH 的安全复制&#xff0…

大语言模型置信度增强实战指南

LLM怎么简单增强置信度 在大语言模型(LLM)的应用中,“置信度增强”核心目标是提升模型输出的可靠性(减少错误/幻觉) 并让模型更清晰地表达自身的不确定性(避免“一本正经地胡说”)。常用方式可分为“输出优化”“知识补充”“校准调整”三大类, 一、基于“推理过程优…

NLP:人名分类器案例分享

本文目录&#xff1a;一、案例介绍&#xff08;一&#xff09;关于人名分类&#xff08;二&#xff09;人名分类数据预览二、案例步骤&#xff08;一&#xff09;导入工具包&#xff08;二&#xff09;数据预处理1. 获取常用的字符数量2. 国家名种类数和个数3.读数据到内存4.构…

3分钟实战!用DeepSeek+墨刀AI生成智能对话APP原型图

如今&#xff0c;AI生成原型图已经逐渐成为产品经理的一项常用辅助技能&#xff0c;不仅能加快设计进程&#xff0c;还能显著提升前期沟通效率。最近我尝试将大语言模型工具与AI原型工具结合测试&#xff0c;目标是看看是否能生成更高质量的原型页面。直到我使用DeepSeek墨刀AI…

CentOS网络配置与LAMP环境搭建指南

一、CentOS配置网络1、查看网卡名称ifconfig2、找到网卡对应配置文件网卡存放路径 &#xff1a;/etc/sysconfig/network-scriptscd /etc/sysconfig/network-scripts3、修改网卡对应配置文件使用 vi/vim 打开文件&#xff0c;查看以下内容vim ifcfg-ens33将ONBOOTno 改为 ONBOOT…

TinyMCE 富文本编辑器在 vue2 中的使用 @tinymce/tinymce-vue

TinyMCE是一款功能强大、高度可定制的富文本编辑器。官方文档 TinyMCE DOCS tinymce-vue包的版本4及更高版本支持Vue.js 3。但不支持Vue.js 2.x。对于Vue.js 2。X应用程序&#xff0c;使用tinymce-vue版本3。 安装TinyMCE和Vue集成包 npm install tinymce/tinymce-vue3 tiny…

LP-MSPM0G3507学习--04GPIO控制

关键函数&#xff1a; DL_GPIO_readPins(GPIO_Regs* gpio, uint32_t pins):同时读一组端口DL_GPIO_writePins(GPIO_Regs* gpio, uint32_t pins)&#xff1a;同时写一组端口DL_GPIO_setPins(GPIO_Regs* gpio, uint32_t pins)&#xff1a;对指定某组端口的某管脚置高DL_GPIO_cle…

LVS(Linux virtual server)-实现四层负载均衡

一、简介LVS:Linux Virtual Server&#xff0c;负载调度器&#xff0c;内核集成&#xff0c;章文嵩&#xff0c;阿里的四层SLB(Server LoadBalance)是基 于LVSkeepalived实现LVS 官网: http://www.linuxvirtualserver.org/二、LVS运行原理2.1LVS 的集群结构2.2lvs相关概念RS&am…

Kubernetes CNI网络插件性能瓶颈排查与优化实践

Kubernetes CNI网络插件性能瓶颈排查与优化实践 CNI&#xff08;Container Network Interface&#xff09;是 Kubernetes 网络层的核心组件&#xff0c;不同 CNI 插件实现了容器间网络通信、多租户隔离、流量限速等功能。然而在大规模集群或高并发业务场景下&#xff0c;CNI 插…

20250720-6-Kubernetes 调度-nodeName字段,DaemonS_笔记

一、污点与容忍&#xfeff;1. 给节点添加污点&#xfeff;1&#xff09;命令格式基本语法&#xff1a;kubectl taint node [node] keyvalue:[effect]示例&#xff1a;kubectl taint node k8s-node1 gpuyes:NoSchedule操作说明&#xff1a;与打标签命令类似&#xff0c;将"…

微软开源项目 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C++软件异常排查从入门到精通系列教程…

研发知识系统选型实战:从 Notion 到 Gitee Wiki 的迭代经验

关键词&#xff1a;知识管理、版本控制、协作编辑、国产平台、研发效能 在日常研发管理中&#xff0c;知识管理平台往往被视为“非核心工具”&#xff0c;但它的好坏直接影响着团队交接效率、文档可用性以及协作深度。过去几年&#xff0c;我们团队先后使用过 Notion、Confluen…

从一开始的网络攻防(三):sqlmap快速上手

一、确定目标 使用sqlmap的第一步是确定探测的目标&#xff0c;一般有四种&#xff1a; 数据库URL文件Google批量扫 环境 Target IP: 192.168.8.133 Port: 13306(Mysql)、8088(sqli_labs) mysql&#xff1a; docker pull的最新mysql sqlmap github&#xff1a;https://g…

《Anaconda 精简路径治理》系列 · 番外篇Conda 虚拟环境路径结构方案全解——六种路径布局对比、优劣与治理建议

Python 多版本环境治理理念驱动的系统架构设计&#xff1a;三维治理、四级隔离、五项自治 原则-CSDN博客 Anaconda 路径精简后暴露 python 及工具到环境变量的配置记录-CSDN博客 【终极实战】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具协同 AnacondaPyCharm&#xff1a;构建…

容器基础知识3-kubectl、kubeadm 和 kubelet,kube-proxy

kubectl、kubeadm 和 kubelet&#xff0c;kube-proxy的概念和关系一、kubeadm&#xff1a;K8s 集群的 “搭建工程师”核心定位如果把 K8s 集群比作一栋大楼&#xff0c;kubeadm 就是负责 “打地基、搭框架” 的工程师&#xff0c;专门用来快速搭建 K8s 集群的工具。具体工作内容…