在人工智能与计算机视觉领域,3D重建技术一直是研究热点之一。从单张二维图像中恢复出三维场景和物体的结构,对于虚拟现实、增强现实、机器人导航等诸多领域都有着重要的应用价值。Meta公司近期推出的SAM 3D模型,为这一领域带来了重大突破,它能够从单张2D图像中准确地重建出物体和人体的3D模型,包括其形状、姿态和纹理等细节信息。
一、项目概述
SAM 3D是Meta公司基于SAM系列推出的一款先进的3D重建模型,包含SAM 3D Objects和SAM 3D Body两个子模型。SAM 3D Objects能够从单张图像重建出物体和场景的详细3D模型,具备多视角一致性和复杂场景处理能力;SAM 3D Body则专注于人体姿态、骨骼和网格的高精度恢复,即使在非标准姿势、遮挡和部分出画等复杂情况下也能表现出色。
二、核心功能
(一)SAM 3D Objects
1. 单图3D重建:能够从单张二维图像中预测物体的三维结构,包括深度估计、网格重建、材质与表面外观估计。
2.多视角一致性:生成的3D模型在不同视角下保持一致,适合多视角查看和交互。
3.复杂场景处理:支持复杂遮挡、非正面视角和弱光场景下的重建,具有强大的泛化能力。
4. 应用场景:适用于数字孪生、机器人感知、室内外场景重建、自动驾驶环境理解等领域。
(二)SAM 3D Body
1. 人体姿态与网格恢复:支持从单张图像恢复人体的三维姿态、骨骼结构和可动画网格,支持高精度的手部、脚部及肢体关键点恢复。
2. 高鲁棒性:能处理非标准姿势、遮挡和部分出画的情况,适合复杂的实际场景。
3. 应用场景:适用于虚拟人建模、动作捕捉、数字资产制作、游戏开发等。
三、技术揭秘
(一)多头预测结构
SAM 3D通过多头预测结构,同时输出深度、法线、遮罩和网格等多模态信息,提升重建的准确性和完整性,在处理复杂场景和遮挡时表现出色。
(二)大规模数据训练与弱监督学习
SAM 3D采用大规模数据引擎,结合人类标注和AI生成数据,利用弱监督学习减少对高质量标注的依赖,增强模型的泛化能力。
(三)Transformer编码器 - 解码器架构
SAM 3D Body采用Transformer架构,支持基于提示的预测(如掩码和关键点),实现高精度人体姿态和网格重建,适应复杂姿势和遮挡。
(四)创新数据标注引擎
通过人类标注员评估模型生成的3D数据,SAM 3D的数据引擎高效标注大规模真实世界图像,弥补3D数据稀缺的不足。
(五)优化与高效推理
SAM 3D采用扩散模型等技术优化推理速度,实现低显存占用和快速重建,适合在常见硬件上实时运行。
四、应用场景
(一)室内外场景重建
SAM 3D Objects能够从单张照片重建建筑、室内布局等场景的3D模型,为虚拟设计、建筑可视化和数字孪生提供强大支持。通过精确的深度估计和网格重建,它能够快速生成逼真的3D场景,帮助设计师和工程师更好地规划和展示空间布局,提升设计效率和用户体验。
(二)自动驾驶环境理解
在自动驾驶领域,SAM 3D能够帮助系统快速理解复杂环境的3D结构。通过从单张图像中恢复出道路、车辆、行人等物体的三维信息,SAM 3D为自动驾驶系统提供了更准确的环境感知能力,从而提高自动驾驶的安全性和可靠性,使其能够在复杂路况中做出更合理的决策。
(三)单图人体恢复
SAM 3D Body可以从单张照片生成高精度的人体姿态和网格,广泛应用于虚拟角色建模。它能够精确恢复人体的骨骼结构和表面纹理,即使在遮挡和复杂姿势下也能表现出色。这使得虚拟角色更加逼真,为影视、游戏和虚拟现实等领域提供了高效的内容创作工具,降低了建模成本和时间。
(四)低成本动作捕捉
无需复杂设备,SAM 3D Body通过单张图像实现动作捕捉,适用于影视、游戏等前期制作。它能够实时捕捉人体的动作和姿态,生成可动画的3D网格,从而为动作捕捉提供了一种低成本、高效的解决方案,降低了制作门槛,提升了创作效率。
(五)3D模型生成
SAM 3D Objects能够从单张图像快速生成可在AR/VR中自由查看的3D模型,极大地提升了内容创作效率。通过精确的几何和纹理重建,它能够生成高质量的3D模型,为增强现实和虚拟现实应用提供了丰富的素材,丰富了用户体验。
(六)虚拟场景构建
结合其他模型(如SAM),SAM 3D可以构建逼真的虚拟场景,用于沉浸式体验。通过将物体和人体的3D模型放置在同一个场景中,SAM 3D能够生成高度一致的虚拟环境,为虚拟现实、游戏开发等领域提供了强大的技术支持,增强了用户的沉浸感和交互体验。
五、快速使用
(一)环境准备
# 1、创建并激活环境conda create -n sam_3d_body python=3.11 -yconda activate sam_3d_body# 2、安装 Python 依赖pip install pytorch-lightning pyrender opencv-python yacs scikit-image einops timm dill pandas rich hydra-core hydra-submitit-launcher hydra-colorlog pyrootutils webdataset chump networkx==3.2.1 roma joblib seaborn wandb appdirs appnope ffmpeg cython jsonlines pytest xtcocotools loguru optree fvcore black pycocotools tensorboard huggingface_hub# 3、安装 Detectron2pip install 'git+https://github.com/facebookresearch/detectron2.git@a1ce2f9' --no-build-isolation --no-deps# 4、安装 MoGe(可选)pip install git+https://github.com/microsoft/MoGe.git
(二)单图人体重建实践
1. 下载模型:
hf download facebook/sam-3d-body-dinov3 --local-dir checkpoints/sam-3d-body-dinov3
2. 运行演示脚本:
python demo.py \--image_folder <path_to_images> \--output_folder <path_to_output> \--checkpoint_path ./checkpoints/sam-3d-body-dinov3/model.ckpt \--mhr_path ./checkpoints/sam-3d-body-dinov3/assets/mhr_model.pt
3. 使用Python代码进行重建:
import cv2import numpy as npfrom notebook.utils import setup_sam_3d_bodyfrom tools.vis_utils import visualize_sample_together# Set up the estimatorestimator = setup_sam_3d_body(hf_repo_id="facebook/sam-3d-body-dinov3")# Load and process imageimg_bgr = cv2.imread("path/to/image.jpg")outputs = estimator.process_one_image(cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB))# Visualize and save resultsrend_img = visualize_sample_together(img_bgr, outputs, estimator.faces)cv2.imwrite("output.jpg", rend_img.astype(np.uint8))
(三)单图物体重建实践
1、使用Python代码进行重建
import sys# import inference codesys.path.append("notebook")from inference import Inference, load_image, load_single_mask# load modeltag = "hf"config_path = f"checkpoints/{tag}/pipeline.yaml"inference = Inference(config_path, compile=False)# load image and maskimage = load_image("notebook/images/shutterstock_stylish_kidsroom_1640806567/image.png")mask = load_single_mask("notebook/images/shutterstock_stylish_kidsroom_1640806567", index=14)# run modeloutput = inference(image, mask, seed=42)# export gaussian splatoutput["gs"].save_ply(f"splat.ply")
2、查看完整演示:
单物体重建:https://github.com/facebookresearch/sam-3d-objects/blob/main/notebook/demo_single_object.ipynb
多物体重建:https://github.com/facebookresearch/sam-3d-objects/blob/main/notebook/demo_multi_object.ipynb
六、结语
SAM 3D的出现为3D重建领域带来了新的希望和可能性。它凭借其强大的单图重建能力、对复杂场景的高鲁棒性以及高效的推理速度,有望在众多领域得到广泛应用。无论是室内外场景重建、自动驾驶环境理解,还是虚拟人建模、动作捕捉等,SAM 3D都能提供有力的支持。
七、项目地址
项目官网:https://ai.meta.com/sam3d/
GitHub仓库:
SAM 3D Body :https://github.com/facebookresearch/sam-3d-body
SAM 3D Objects:https://github.com/facebookresearch/sam-3d-objects
技术报告:https://ai.meta.com/research/publications/sam-3d-body-robust-full-body-human-mesh-recovery/
点亮“关注”,设为“星标”,精彩不迷路!与你携手探索AI的无限可能,精彩内容持续更新!🚀

