當前位置: 妍妍網 > 碼農

InstantMesh:單一影像構建三維世界模型,騰訊最新開源,訓練程式碼也公開了

2024-05-18碼農

計畫簡介

InstantMesh 是一個高效的三維網格生成框架,能夠從單張圖片生成三維模型。該計畫基於 LRM/Instant3D 架構,支持大範圍稀疏檢視重建。它提供了幾種不同的模型變體,並支持透過命令列或 Gradio 演示生成三維網格。此外,InstantMesh 提供了模型訓練程式碼,使得研究者可以進一步開發和最佳化技術。

掃碼加入交流群

獲得更多技術支持和交流

(請註明自己的職業)

DEMO

依賴和安裝

推薦使用 Python>=3.10, PyTorch>=2.1.0 和 CUDA>=12.1

conda create --name instantmesh python=3.10conda activate instantmeshpip install -U pip# Ensure Ninja is installedconda install Ninja# Install the correct version of CUDAconda install cuda -c nvidia/label/cuda-12.1.0# Install PyTorch and xformers# You may need to install another xformers version if you use a different PyTorch versionpip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121pip install xformers==0.0.22.post7# For Linux users: Install Triton pip install triton# For Windows users: Use the prebuilt version of Triton provided here:pip install https://huggingface.co/r4ziel/xformers_pre_built/resolve/main/triton-2.0.0-cp310-cp310-win_amd64.whl# Install other requirementspip install -r requirements.txt

使用

1.下載模型

在模型卡中提供了4種稀疏檢視重建模型變體和一個客製的 Zero123++ UNet 用於白底影像生成。

推理指令碼將自動下載模型。或者,你也可以手動下載模型,並將它們放在 ckpts/ 目錄下。

預設情況下,使用 instant-mesh-large 重建模型變體。

2.啟動本地 gradio 演示

要在本地機器上啟動 gradio 演示,只需執行:

python app.py

如果你的機器中有多個 GPU,演示應用程式將自動在兩個 GPU 上執行以節省記憶體。也可以強制它在單個 GPU 上執行:

CUDA_VISIBLE_DEVICES=0 python app.py

另外,你也可以使用 docker 執行演示。請按照 docker 目錄中的說明操作。

3.透過命令列執行

要透過命令列從影像生成3D網格,只需執行:

python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video

使用 rembg 來分割前景物件。如果輸入影像已經有一個透明遮罩,請指定 no_rembg 標誌:

python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video --no_rembg

預設情況下,指令碼會匯出帶有頂點顏色的 .obj 網格,如果你希望匯出帶有紋理對映的網格,請指定 --export_texmap 標誌(這將花費更長時間):

python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video --export_texmap

如果你希望使用其他重建模型變體,請在 configs 目錄中使用不同的 .yaml 配置檔。例如,使用 instant-nerf-large 模型進行生成:

python run.py configs/instant-nerf-large.yaml examples/hatsune_miku.png --save_video

註意:在使用 NeRF 模型變體進行影像到3D生成時,透過指定 --export_texmap 匯出帶有紋理對映的網格可能會在 UV 展開步驟中花費較長時間,因為預設的等值面提取分辨率為256。你可以在配置檔中設定較低的等值面提取分辨率。

訓練

要訓練稀疏檢視重建模型,請執行:

# Training on NeRF representationpython train.py --base configs/instant-nerf-large-train.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1# Training on Mesh representationpython train.py --base configs/instant-mesh-large-train.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1

還提供了 Zero123++ 的微調程式碼,因為它經常被請求。執行命令是:

python train.py --base configs/zero123plus-finetune.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1

計畫連結

https://github.com/TencentARC/InstantMesh

關註「 開源AI計畫落地 」公眾號

與AI時代更靠近一點