本文所有命令与配置均照搬 InstantMesh 官方仓库 README(github.com/TencentARC/InstantMesh,main 分支)与官方模型卡(huggingface.co/TencentARC/InstantMesh),未作任何改动与发挥。信息核验日期:2026-11-01。
一、项目介绍
InstantMesh 是腾讯 ARC 实验室开源的"单图高效 3D 网格生成"前馈式框架,官方 README 副标题为"Efficient 3D Mesh Generation from a Single Image with Sparse-view Large Reconstruction Models",论文 arXiv:2404.07191。它基于 LRM/Instant3D 架构,从单张图片直接前馈推理出 3D 网格,不需要逐图优化(per-shape optimization),推理速度大幅提升。
官方仓库同时发布了推理代码、训练代码、模型权重与 Hugging Face Gradio 在线 Demo。README 列出 4 个稀疏视图重建模型变体,并提供一个定制的 Zero123++ UNet(用于白底图像生成)。项目已支持双 GPU 运行以节省显存,也提供 Docker 一键部署方式。
二、功能拆解
按官方 README「Features and Todo List」「How to Use」一节:
| 功能 | 说明 |
|---|---|
| 单图生成 3D | 输入一张图片,前馈式输出 3D 网格 |
| 4 种重建模型变体 | 默认 instant-mesh-large,另有 instant-nerf-large 等 |
| 白底图像生成 | 定制 Zero123++ UNet,配合 rembg 自动分割前景 |
| Gradio 本地 Demo | 一行 python app.py 启动 Web 界面 |
| 双 GPU 自动分摊 | 多卡机器自动用 2 张 GPU 节省显存 |
| 命令行批量推理 | python run.py 直接产出 .obj 网格 |
| Docker 部署 | 官方 docker/ 目录提供容器方案 |
| 训练代码 | 提供稀疏视图重建模型与 Zero123++ 微调训练脚本 |
| 导出 .obj + 顶点色 / 纹理贴图 | 默认顶点色;--export_texmap 导出带纹理贴图网格 |
| 保存旋转视频 | --save_video 导出 360° 预览视频 |
三、官方/GitHub 链接
- GitHub 仓库:https://github.com/TencentARC/InstantMesh
- 论文:https://arxiv.org/abs/2404.07191
- 模型权重(Hugging Face):https://huggingface.co/TencentARC/InstantMesh
- 在线 Gradio Demo:https://huggingface.co/spaces/TencentARC/InstantMesh
- Replicate Demo:https://replicate.com/camenduru/instantmesh
- Colab Demo:https://colab.research.google.com/github/camenduru/InstantMesh-jupyter/blob/main/InstantMesh_jupyter.ipynb
- ComfyUI 节点(社区):https://github.com/jtydhr88/ComfyUI-InstantMesh
- Docker 部署:https://github.com/TencentARC/InstantMesh/tree/main/docker
四、环境要求
官方 README「Dependencies and Installation」一节明确:
- Python:推荐 Python >= 3.10。
- PyTorch:PyTorch >= 2.1.0。
- CUDA:CUDA >= 12.1(官方示例安装 cuda 12.1.0)。
- GPU:官方提供双 GPU 自动分摊显存模式;单 GPU 可通过
CUDA_VISIBLE_DEVICES=0强制。具体显存数值 README 未给出。 - Ninja:构建所需,官方通过
conda install Ninja安装。 - 操作系统:官方未限定;依赖 conda + CUDA,主流 Linux 服务器为主要场景。
- 模型权重:推理脚本会自动从 Hugging Face 下载;也可手动下载放到
ckpts/目录。
五、部署步骤
以下命令全部照搬官方 README「Dependencies and Installation」一节。
命令 1:创建并激活 Conda 环境
conda create --name instantmesh python=3.10
conda activate instantmesh
pip install -U pip
逐段解释:
conda create创建名为 instantmesh、Python 3.10 的环境;conda activate激活;pip install -U pip升级 pip。
执行成功后预期输出参考: 命令行提示符前出现 (instantmesh)。
命令 2:安装 Ninja 与指定版本 CUDA
conda install Ninja
conda install cuda -c nvidia/label/cuda-12.1.0
逐段解释:
conda install Ninja安装 Ninja 构建工具(官方注释"Ensure Ninja is installed");conda install cuda -c nvidia/label/cuda-12.1.0从 nvidia 频道的 cuda-12.1.0 标签安装官方 CUDA 12.1 工具链(官方注释"Install the correct version of CUDA")。
执行成功后预期输出参考: conda 解析依赖后提示 Preparing transaction: done、Verifying transaction: done。
命令 3:安装指定版本 PyTorch 与 xformers
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
pip install xformers==0.0.22.post7
逐段解释:
--index-url指定 PyTorch 官方 cu121 wheel 源,安装 torch 2.1.0 / torchvision 0.16.0 / torchaudio 2.1.0 三件套;xformers 0.0.22.post7 与该 PyTorch 版本匹配(官方注释"You may need to install another xformers version if you use a different PyTorch version")。
执行成功后预期输出参考: pip 下载并安装完成,输出 Successfully installed torch-2.1.0 ... xformers-0.0.22.post7。
命令 4:安装项目其余依赖
pip install -r requirements.txt
逐段解释:克隆仓库后在根目录执行,按 requirements.txt 安装 diffusers、rembg、gradio、opencv 等运行时依赖。
执行成功后预期输出参考: Successfully installed ...。
命令 5:启动本地 Gradio Demo
python app.py
逐段解释:官方 README「Start a local gradio demo」原文。首次运行会自动从 Hugging Face 下载 4 个重建模型变体与 Zero123++ UNet 权重到
ckpts/(官方:"Our inference script will download the models automatically. Alternatively, you can manually download the models and put them under theckpts/directory.")。
执行成功后预期输出参考: Gradio 启动并打印本地访问 URL(形如 http://127.0.0.1:7860)。
命令 6(多 GPU 机器强制单 GPU):
CUDA_VISIBLE_DEVICES=0 python app.py
逐段解释:官方 README 原文——多 GPU 机器上 demo 会自动用 2 张卡省显存;
CUDA_VISIBLE_DEVICES=0环境变量强制只可见 0 号卡,单卡运行。
命令 7(Docker 方式,可选):
官方 README:"Alternatively, you can run the demo with docker. Please follow the instructions in the docker directory."——具体 Dockerfile / 构建命令以仓库 docker/ 目录内 README 为准。
六、配置参数详解
1. 模型变体选择(官方「How to Use」):
| 配置文件 | 模型 | 说明 |
|---|---|---|
configs/instant-mesh-large.yaml |
instant-mesh-large | 默认,网格表示,直接输出 .obj |
configs/instant-nerf-large.yaml |
instant-nerf-large | NeRF 表示 |
官方:"Please use a different .yaml config file in the configs directory if you hope to use other reconstruction model variants."
2. 命令行参数(官方原文):
| 参数 | 作用 |
|---|---|
--save_video |
同时导出 360° 旋转预览视频 |
--no_rembg |
输入图已带 alpha 蒙版时跳过 rembg 前景分割 |
--export_texmap |
导出带纹理贴图的网格(默认导出带顶点色的 .obj;纹理贴图更耗时) |
3. 训练相关参数(官方提供,非部署必需):
python train.py --base configs/instant-nerf-large-train.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1
python train.py --base configs/instant-mesh-large-train.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1
python train.py --base configs/zero123plus-finetune.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1
逐段解释:
--base指定训练配置;--gpus 0,1,...,7指定 8 卡训练;--num_nodes 1单节点。官方说明因数据集体积过大无法公开训练集。
七、启动与运维
- 前台启动 Gradio:
python app.py;Ctrl+C停止。 - 命令行批处理:
python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video(官方原文)。 - 后台常驻 / 开机自启:官方 README 未提供。
- 修改端口:官方未在 README 中给出端口配置项;如需修改 Gradio 监听,请在
app.py中 Gradio launch 处自行指定。 - 模型缓存位置:默认自动下载到 Hugging Face 缓存;手动下载需放到仓库
ckpts/目录(官方原文)。 - 输出位置:命令行脚本默认在脚本运行目录附近输出
.obj与旋转视频(具体路径以脚本实现为准)。 - 双 GPU 分摊:多卡机器上
python app.py自动使用 2 张卡;单卡机器用CUDA_VISIBLE_DEVICES=0 python app.py。
八、实操验证
- 完成环境部署后执行
python app.py,等待模型自动下载完成(首次需下载数 GB 权重)。 - 浏览器打开 Gradio 提示的本地地址。
- 在界面上传一张目标物体图片(如官方示例
examples/hatsune_miku.png,或任意主体清晰的图片)。 - 点击生成,等待前馈推理完成。
- 验证命令行方式(官方原文):
python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video
逐段解释:用默认
instant-mesh-large配置,对examples/hatsune_miku.png生成 3D 网格并保存旋转视频。预期输出参考: 当前目录生成.obj网格文件与一段 360° 旋转预览视频。
- 验证已带 alpha 图:
python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video --no_rembg
逐段解释:
--no_rembg告诉脚本输入图已有透明通道,跳过 rembg 分割。
- 验证导出纹理贴图:
python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video --export_texmap
逐段解释:
--export_texmap导出带纹理贴图的网格;官方警告 NeRF 变体下 UV 展开较慢。
九、故障排查
案例 1:xformers 与 PyTorch 版本不匹配
- 报错原文(常见形式):
ERROR: Cannot install xformers==0.0.22.post7 and torch==2.1.0 because these package versions have conflicting dependencies或运行时xformers has unsupported torch version。 - 报错原因:官方 README 注释——"You may need to install another xformers version if you use a different PyTorch version"。
- 分步解决:严格按官方版本组合安装:
torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0+xformers==0.0.22.post7;若换了 PyTorch 版本,需自行选择匹配的 xformers 版本(参考 https://github.com/facebookresearch/xformers )。
案例 2:CUDA 版本不匹配
- 报错原文(常见形式):
RuntimeError: CUDA error: no kernel image is available for execution on the device或安装 torch 后torch.cuda.is_available()返回 False。 - 报错原因:官方要求 CUDA >= 12.1;示例用 cuda 12.1.0 + cu121 的 PyTorch wheel。
- 分步解决:① 执行官方命令
conda install cuda -c nvidia/label/cuda-12.1.0;② 用官方--index-url https://download.pytorch.org/whl/cu121安装 cu121 wheel;③ 不要混用系统 CUDA 与 conda CUDA。
案例 3:rembg 前景分割效果差 / 不需要分割
- 报错现象:输入图已自带透明背景,但脚本又跑了一遍 rembg 导致结果异常。
- 报错原因:官方 README 明确——"If the input image already has an alpha mask, please specify the
no_rembgflag"。 - 分步解决:在命令后追加
--no_rembg,如官方示例python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video --no_rembg。
案例 4:单卡显存不足
- 报错现象:
CUDA out of memory。 - 报错原因:官方支持多 GPU 自动分摊,但单卡显存不足以同时加载多视图扩散与重建模型。
- 分步解决:① 在多卡机器上直接
python app.py,官方自动用 2 张 GPU;② 或参考官方 docker/ 目录使用 Docker 部署;③ 必要时切换到显存占用更小的模型变体(configs/ 下其他 yaml)。
十、升级、回滚与卸载
升级: 官方未提供专门升级命令;在仓库目录 git pull 后重新 pip install -r requirements.txt 同步依赖。
回滚: 官方未提供一键回滚;git checkout <旧 tag> 后重装依赖。
卸载: 执行 conda env remove -n instantmesh 删除环境;删除仓库目录与 ckpts/ 权重缓存(下次需重新下载)。
十一、商用许可合规说明
- 许可证:Apache License 2.0(仓库 LICENSE 为标准 Apache-2.0 全文)。
- Apache-2.0 允许自由使用、修改、分发与商用;分发时须保留版权声明与许可文本,修改过的文件须标注变更。
- 模型权重(huggingface.co/TencentARC/InstantMesh)与 Zero123++ 等第三方依赖按其各自许可证单独授权;商用前请确认所用模型与素材的许可条款。