View a markdown version of this page

從您自己的影片訓練 3D 高斯潑濺 - 截止日期雲端

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從您自己的影片訓練 3D 高斯潑濺

本教學課程會逐步引導您從擷取的影片訓練自己的 3D 高斯潑濺點雲。您可以將 GitHub 上的高斯潑濺管道任務套件提交至截止日期雲端陣列。任務採用影片檔案做為輸入,並產生高斯潑濺.ply檔案做為輸出。當任務完成時,您可以在任何高斯潑濺檢視器中檢視結果,例如 SuperSplat

管道會執行單一任務:

  1. 使用 FFmpeg 影片處理工具擷取影片影格。

  2. 使用 COLMAPGLOMAP Structure-from-Motion,儲存針孔模型和無失真影像。

  3. 使用 NeRF Studio splatfactoWild 中的 Splatfactosimple_trainer.py gsplat 程式庫範例訓練高斯潑濺,並將輸出儲存到您指定的.ply檔案。

下列影片示範在截止日期雲端上的高斯潑濺管道工作流程。

預估時間:數小時,包括陣列設定。根據輸入影片和您選擇的設定,任務本身可以在 10 分鐘內完成,或需要數小時。

執行本教學課程會產生處理任務的 GPU 工作者執行個體費用。了解訓練任務的成本 本節說明如何檢閱這些成本。

概觀

若要完成本教學課程,請遵循下列步驟:

  1. 完成先決條件。

  2. 設定您的陣列。

  3. 擷取主體的影片。

  4. 提交gsplat_pipeline任務。

  5. 監控任務。

  6. 下載並檢視高斯潑濺.ply檔案。

  7. 清除資源。

先決條件

開始之前,請先完成下列設定:

  1. 如果您還沒有AWS 帳戶,請建立帳戶。

設定您的陣列

您需要具有 CUDA GPU 機群的截止日期雲端陣列,才能執行高斯潑濺任務。若要設定,請完成下列步驟:

  1. 遵循 CUDA 陣列範例 CloudFormation 範本指示,建立具有 CUDA GPU 機群且可建置 conda 套件的截止日期雲端陣列。

  2. 遵循 NeRF Studio 範例 conda 套件配方指示,在 CUDA 陣列的 Amazon S3 通道中建置 NeRF Studio conda 套件。

注意

如果您只需要預設 NERFSTUDIO(splatfacto) 訓練程式,則不需要部署 CUDA 陣列 CloudFormation 範本或建置自訂 NeRF Studio conda 套件。最低需求是具有 GPU 機群的截止日期雲端陣列、conda-forge包含在 conda 通道中的佇列環境,以及 conda 套件 ffmpeg colmap glomap nerfstudio cudaGSPLAT_SIMPLE_TRAINERNERFSTUDIO_SPLATFACTOW培訓人員選項取決於僅在自訂建置的 NeRF Studio conda 套件中可用的命令。

擷取主體的影片

您可以使用智慧型手機等具備影片功能的攝影機,為您的高斯潑濺拍攝主體的影片。請考慮下列秘訣:

  • 使用寬廣的視野,例如相機應用程式中的縮放等級 0.5。透過更寬廣的視野,影像對之間有更多常用的物件,以便從Structure-from-Motion。

  • 關閉影像穩定功能。關閉此功能可在所有影格之間保留相同的鏡頭光學,並可提高求解的品質。

  • 根據主體規劃攝影機動作。若要擷取物件,例如長凳或自行車,請在不同的高度和距離圍繞主體繞行數次。若要擷取房間內部,請跟隨房間外部,攝影機朝內,並在不同的攝影機高度重複。若要擷取較不結構化的空間,例如外部地形,請考慮如何在高斯潑濺中包含您想要的一切,以及如何從多個不同的角度擷取所有空間。

  • 以緩慢且穩定的動作擷取影片。

  • 繼續移動攝影機。避免從單一位置停止和平移。

將您從相機擷取的影片複製到電腦,以提交至陣列。

提交 gsplat_pipeline 任務

提交高斯潑濺任務
  1. 如果您沒有 deadline-cloud-samples GitHub 儲存庫的本機副本,請將其複製或下載為 ZIP

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles
  2. job_bundles目錄中,執行下列命令:

    deadline bundle gui-submit gsplat_pipeline
  3. 切換到任務特定的設定索引標籤,並同時選取輸入影片檔案輸出層檔案的路徑。

  4. 選擇提交,或先自訂設定。如果輸入視訊的複雜性較高,您可能需要增加大約影像計數值。

您也可以選取要使用的 Gaussian Splatting 訓練師,並為其自訂 CLI 選項。例如,若要使用 Monte Carlo Markov 鏈 (MCMC) 訓練器搭配雙邊網格選項來產生高達 200 萬個潑濺,請進行下列變更:

  1. 高斯潑濺訓練器從 切換NERFSTUDIOGSPLAT_SIMPLE_TRAINER

  2. GSplat Simple Trainer 選項文字從 修改--strategy.cap-max 1000000--strategy.cap-max 2000000,以取得 200 萬個潑濺,以及從 --no-use-bilateral-grid修改為 --use-bilateral-grid,以啟用雙邊網格選項。

注意

如果您選取需要高於 CUDA 機群提供之記憶體用量的輸入影片或選項,則需要更新機群的最小設定。使用更新的參數值重新部署 CloudFormation 範本,或從截止日期雲端主控台編輯設定。

監控工作

提交任務後,您可以從截止日期雲端監控任務表中監控其狀態。根據輸入影片和您選擇的設定,任務可能會在 10 分鐘內完成,或需要數小時。

任務執行時,開啟任務的內容選單,然後選擇檢視日誌以開啟日誌檢視。隨著管道逐步完成,它會更新任務執行詳細資訊中可見的狀態訊息。

如果您遇到錯誤,此檢視中的日誌輸出可協助您追蹤原因。常見原因包括記憶體不足或無法解決相機姿勢。管道可能會在下列任何步驟期間失敗:FFmpeg 框架擷取、GLOMAP Structure-from-Motion解析,或 NeRF Studio 訓練。若要解決錯誤,請調整機群基礎設施或使用較低的影像解析度或影像計數。

下載並檢視高斯潑濺 .ply

下載並檢視輸出
  1. 當任務成功完成時,請在截止日期雲端監視器的任務資料表中開啟已完成任務的內容選單,然後選擇下載輸出。根據您的設定,它會顯示下載進度,或顯示您可以用來下載的 CLI 命令。Deadline Cloud 會將.ply檔案儲存到您在提交任務時選取的位置。

  2. 若要在瀏覽器中檢視結果,請開啟 SuperSplat Editor 網站,然後將檔案從作業系統的檔案瀏覽器拖曳到 SuperSplat 頁面。

  3. 切換顯示/隱藏潑濺選項,然後在場景中旋轉和移動,以尋找擷取的主體。

使用 SuperSplat,您也可以編輯 Gaussian Splatting。例如,您可以選取球體、反轉選取範圍,並刪除其外部的碎片來裁切場景。SuperSplat 文件說明如何使用編輯器,或者您可以將.ply檔案匯入您選擇的工具。

了解訓練任務的成本

截止日期雲端監視器包含用量總管功能,可預估您執行的任務成本,並顯示每項訓練的費用。如果您願意在具備 CUDA 功能的執行個體可用且中斷率夠低的離峰時間執行測試,則 Spot CUDA 機群的成本會低於隨需機群。用量總管不會顯示任務執行時間以外的成本,例如閒置工作者執行個體時間或 Amazon S3 儲存貯體上的儲存體。

清除

為了避免持續收費,請清除您為此教學課程建立的資源:

清除教學課程資源
  1. 如果您已部署 CUDA 陣列 CloudFormation 範本,請從 CloudFormation CloudFormation 主控台刪除堆疊。

  2. 如果您使用現有的陣列並特別為此教學課程建立 GPU 機群,請停止或刪除該機群。如果您使用預先存在的共用機群,請將其保留在原處。

後續步驟

您可以分開、編輯和重新混合gsplat_pipeline任務套件,以符合您的需求。您可以自訂自己的 3D 重建管道,或遵循相同的模式,在截止日期雲端 CUDA 陣列上執行不同的 CUDA 工作負載。範例 README 會詳細說明下列指示:

  • 使用開放任務描述 CLI 在任何地方執行任務,例如本機或 Amazon EC2 執行個體,而不是在您的陣列上執行。

  • 遵循 GitHub 上任務開發進度範例中的模式,將管道的單一任務分解為依相依性連線的多個開放任務描述步驟。不同的步驟可以在不同的機群上執行,例如用於擷取影格的 CPU 機群,以及用於訓練的 GPU 機群。

  • 將管道分割成具有不同結構的多個任務。例如,一個任務解決Structure-from-Motion一次,第二個任務反覆嘗試不同的高斯潑濺訓練參數。

下列資源提供其他資訊: