本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用你自己的视频训练 3D 高斯飞溅
本教程引导你通过拍摄的视频训练自己的三维高斯喷溅点云。您将 Gaussian Splatting 管道任务包提交 GitHub.ply 文件作为输出。任务完成后,您可以在任何高斯喷射查看器中查看结果,例如。 SuperSplat
该管道运行的单个任务是:
-
使用 nerF Studio splatfacto
、Splatfacto in the Wild 或 simple_trainer.py g splat 库示例 训练高斯飞溅 ,并将输出保存到您指定的文件中。 .ply
以下视频演示了 Deadline Cloud 上的 Gaussian Splatting 流水线工作流程。
预计时间:几个小时,包括农场设置。根据输入视频和您选择的设置,作业本身可能在 10 分钟内完成,也可能需要几个小时。
运行本教程会产生处理任务的 GPU 工作实例的费用。本了解您的培训工作成本节介绍如何审查这些费用。
概述
要完成本教程,请按照以下步骤操作:
-
完成先决条件。
-
设置你的农场。
-
拍摄拍摄对象的视频。
-
提交作
gsplat_pipeline业。 -
监控作业。
-
下载并查看 Gaussian Sp
.plylatting 文件。 -
清理资源。
先决条件
在开始之前,请完成以下设置:
-
https://aws.amazon.com/resources/create-account/
如果您还没有 AWS 账户,请创建一个帐户。
设置你的农场
你需要一个带有 CUDA GPU 队列的 Deadline Cloud 农场来运行 Gaussian Splatting 作业。要进行设置,请完成以下步骤:
-
按照 CUDA 农场示例 CloudFormation 模板
说明创建具有 CUDA GPU 队列且可以构建 conda 软件包的 Deadline Cloud 农场。 -
按照 nerF Studio 示例 conda 软件包配方
说明将 nerF Studio conda 包构建到 CUDA 农场的 Amazon S3 频道中。
注意
如果你只需要默认NERFSTUDIO(splatfacto)训练器,则无需部署 CUDA 农场 CloudFormation 模板或构建自定义 nERF Studio conda 软件包。最低要求是带有 GPU 队列的 Deadline Cloud 农场、conda-forge包含在 conda 频道中的队列环境以及 conda 软件包。ffmpeg colmap glomap nerfstudio cudaGSPLAT_SIMPLE_TRAINER和NERFSTUDIO_SPLATFACTOW训练器选项取决于仅在定制的 nERF Studio conda 软件包中可用的命令。
拍摄拍摄对象的视频
你可以使用智能手机等具有视频功能的摄像头,为你的高斯飞溅拍摄拍摄拍摄对象的视频。考虑以下提示:
-
使用宽视野,例如相机应用程序中的缩放级别 0.5。由于视野更宽,图像对之间可以使用的对象越多。 Structure-from-Motion
-
关闭视频防抖功能。将其关闭可以在所有帧之间保留相同的镜头光学效果,并且可以提高求解质量。
-
根据拍摄对象规划相机动作。要捕捉一个物体,例如长凳或自行车,在不同的高度和距离下围绕拍摄对象运行几次。要拍摄房间内部,请将摄像机朝内环绕房间外部,然后在不同的摄像机高度重复拍摄。要捕捉结构化程度较低的空间,例如外部地形,可以考虑如何在 Gaussian Splatting 中包含你想要的一切,以及如何从多个不同的角度捕捉所有空间。
-
以缓慢而稳定的动作捕捉视频。
-
继续移动相机。避免在单一位置停下来平移。
将您从摄像机拍摄的视频复制到计算机以提交给农场。
提交 gsplat_pipeline 作业
提交 Gaussian Splatting 作业
-
如果你没有 d eadline-cloud-samples GitHub 存储库的本地副本
,请将其克隆或以 ZIP 格式下载: git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles -
在
job_bundles目录中,运行以下命令:deadline bundle gui-submit gsplat_pipeline -
切换到Job-specific 设置选项卡,为输入视频文件和输出 Ply 文件选择路径。
-
选择提交,或先自定义设置。如果输入视频的复杂度更高,则可能需要增加 “近似图像数” 值。
你还可以选择使用哪个 Gaussian Splatting 训练器并为其自定义 CLI 选项。例如,要使用带有双边网格选项的蒙特卡罗马尔可夫链(MCMC)训练器来产生多达200万个间隔,请进行以下更改:
-
将高斯飞溅训练器从切换到。
NERFSTUDIOGSPLAT_SIMPLE_TRAINER -
将 gSplat Simple Trainer 选项文本从修改
--strategy.cap-max 1000000--strategy.cap-max 2000000为获得 200 万个间隔,从修改--no-use-bilateral-grid--use-bilateral-grid为启用双边网格选项。
注意
如果您选择的输入视频或选项需要比 CUDA 队列提供的更高的内存使用量,则需要更新该队列的最低设置。 Re-deploy 使用更新的参数值来创建您的 CloudFormation 模板,或者在 Deadline Cloud 控制台中编辑设置。
监控任务
提交任务后,您可以从 Deadline Cloud 监控器任务表中监控其状态。根据输入视频和您选择的设置,作业可能在 10 分钟内完成,也可能需要几个小时。
作业运行时,打开任务的快捷菜单,然后选择 “查看日志” 以打开日志视图。当管道完成其步骤时,它会更新任务运行详细信息中可见的状态消息。
如果您遇到错误,此视图中的日志输出可帮助您追踪原因。常见原因包括内存不足或无法解析摄像机姿势。在以下任何步骤中,流水线都可能失败:FFmpeg 帧提取、GLOMAP Structure-from-Motion 求解或 nERF Studio 训练。要解决错误,要么调整舰队基础架构,要么使用较低的图像分辨率或图像数量。
下载并查看 Gaussian Splatting .ply
下载和查看输出
-
作业成功完成后,在 Deadline Cloud 监视器的任务表中打开已完成任务的快捷菜单,然后选择下载输出。根据您的设置,它要么显示下载进度,要么提供可用于下载的 CLI 命令。Deadline Cloud 会将
.ply文件保存到您在提交作业时选择的位置。 -
要在浏览器中查看结果,请打开SuperSplat 编辑器
网站并将文件从操作系统的文件浏览器拖到 SuperSplat 页面上。 -
切换 Show/Hide Splats 选项,然后在场景中旋转和移动,找到拍摄的主题。
使用 SuperSplat,你还可以编辑你的高斯飞溅。例如,您可以选择一个球体,反向选择,然后删除球体外部的间隙来裁剪场景。该SuperSplat 文档.ply文件导入到您选择的工具中。
了解您的培训工作成本
Deadline 云监控器包括使用情况浏览器功能,该功能可以估算您运行的作业的成本,显示每次训练的成本。如果您愿意在 CUDA-capable实例可用且中断率足够低的非高峰时段运行测试,则现货 CUDA 队列的成本低于按需队列。使用量资源管理器不会显示任务运行时间之外的成本,例如空闲工作人员实例时间或 Amazon S3 存储桶上的存储空间。
清理
为避免持续收费,请清理您为本教程创建的资源:
清理教程资源
-
如果您部署了 CUDA 农场 CloudFormation 模板,请从 CloudFormation 控制台中删除 CloudFormation 堆栈。
-
如果您使用现有农场并专门为本教程创建了 GPU 队列,请停止或删除该队列。如果您使用的是预先存在的共享队列,请将其保留在原处。
后续步骤
你可以拆分、编辑和混音gsplat_pipeline任务包以满足你的需求。您可以自定义自己的三维重建管道,也可以按照相同的模式在 Deadline Cloud CUDA 农场上运行不同的 CUDA 工作负载。示例 READM
-
使用 Open Job Description CLI 在任何地方运行任务
,例如在本地或 Amazon EC2 实例上,而不是在您的农场上运行任务。 -
按照任务开发进度示例中的模式,将管道的单个任务分解为多个由依赖关系连接的 Open Job Description 步骤。 GitHub
不同的步骤可以在不同的队列上运行,例如用于提取帧的 CPU-only 队列和用于训练的 GPU 队列。 -
将管道拆分为多个具有不同结构的作业。例如,一项任务需要解决一 Structure-from-Motion 次,另一项任务是迭代尝试不同变体的高斯喷射训练参数。
相关资源
以下资源提供了其他信息: