目录
mast3r
https://github.com/naver/mast3r
InstantSplat
https://github.com/NVlabs/InstantSplat
unik3d
搞定任意相机的3D重建 ,去畸变:
https://github.com/lpiccinelli-eth/unik3d
在线演示demo:
https://huggingface.co/spaces/lpiccinelli/UniK3D-demo
环境搭建:
cuda版本有要求
export VENV_DIR=<YOUR-VENVS-DIR>
export NAME=unik3d
python -m venv $VENV_DIR/$NAME
source $VENV_DIR/$NAME/bin/activate
# Install UniK3D and dependencies (more recent CUDAs work fine)
pip install -e . --extra-index-url https://download.pytorch.org/whl/cu121
# Install Pillow-SIMD (Optional)
pip uninstall pillow
CC="cc -mavx2" pip install -U --force-reinstall pillow-simd
# Install KNN (for evaluation only)
cd ./unik3d/ops/knn;bash compile.sh;cd ../../../
If you use conda, you should change the following:
python -m venv $VENV_DIR/$NAME -> conda create -n $NAME python=3.11
source $VENV_DIR/$NAME/bin/activate -> conda activate $NAME
推理代码:
from unik3d.models import UniK3D
model = UniK3D.from_pretrained("lpiccinelli/unik3d-vitl") # vitl for ViT-L backbone
import numpy as np
from PIL import Image
# Move to CUDA, if any
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
# Load the RGB image and the normalization will be taken care of by the model
image_path = "./assets/demo/scannet.jpg"
rgb = torch.from_numpy(np.array(Image.open(image_path))).permute(2, 0, 1) # C, H, W
predictions = model.infer(rgb)
# Point Cloud in Camera Coordinate
xyz = predictions["points"]
# Unprojected rays
rays = predictions["rays"]
# Metric Depth Estimation
depth = predictions["depth"]