[NeurIPS 2023] Official code of "One-2-3-45: Any Single Image to 3D Mesh in 45 Seconds without Per-Shape Optimization"
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 |
One-2-3-45 对如何利用二维扩散模型进行三维AIGC进行了创新性思考,提出了一种新颖的仅前向范式,避免了耗时的优化过程。
最新动态
[2023年11月14日]
请查看我们的新工作 One-2-3-45++!
[2023年10月25日]
我们发布了用于评估的渲染脚本以及无痛推理的API。
[2023年9月21日]
One-2-3-45 被 NeurIPS 2023 接受。我们在新奥尔良见!
[2023年9月11日]
已发布训练代码。
[2023年8月18日]
发布了推理代码。
[2023年7月24日]
我们的演示达到HuggingFace的前四热门,并在本周 Spaces 中被推荐!特别感谢HuggingFace支持这个演示!
[2023年7月11日]
在线交互式演示发布!只需45秒即可探索并创建您自己的3D模型!
安装
硬件需求:一张内存大于等于18 GB 的NVIDIA GPU(例如RTX 3090或A10)。已在Ubuntu上测试。
提供两种环境设置方法:
传统安装
步骤1:安装Debian包。
sudo apt update && sudo apt install git-lfs libsparsehash-dev build-essential
步骤2:创建并激活conda环境。
conda create -n One2345 python=3.10
conda activate One2345
步骤3:克隆仓库至本地机器。
# 确保已安装git-lfs。
git lfs install
git clone https://github.com/One-2-3-45/One-2-3-45
cd One-2-3-45
步骤4:使用pip安装项目依赖项。
# 确保CUDA版本与PyTorch匹配。
# 示例:CUDA 11.8的安装
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
export PATH="/usr/local/cuda-11.8/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH"
# 安装PyTorch 2.0.1
pip install --no-cache-dir torch==2.0.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 安装依赖项
pip install -r requirements.txt
# 安装 inplace_abn 和 torchsparse
export TORCH_CUDA_ARCH_LIST="7.0;7.2;8.0;8.6+PTX" # CUDA架构。根据您的硬件进行修改。
export IABN_FORCE_CUDA=1
pip install inplace_abn
FORCE_CUDA=1 pip install --no-cache-dir git+https://github.com/mit-han-lab/torchsparse.git@v1.4.0
步骤5:下载模型检查点。
python download_ckpt.py
Docker镜像安装
选项1:拉取并运行(包含完整环境和检查点)。(~22.3G)
# 拉取包含完整仓库的Docker镜像。
docker pull chaoxu98/one2345:demo_1.0
# 运行容器会自动启动一个互动演示。
# 将为您提供类似XXXXXXX.gradio.live的公共URL。
docker run --name One-2-3-45_demo --gpus all -it chaoxu98/one2345:demo_1.0
选项2:仅环境安装。(~7.3G)
# 拉取包含所有项目依赖项的Docker镜像。
docker pull chaoxu98/one2345:1.0
# 启动名为One2345的Docker容器。
docker run --name One-2-3-45 --gpus all -it chaoxu98/one2345:1.0
# 在容器中获取bash shell。
docker exec -it One-2-3-45 /bin/bash
# 克隆仓库到本地机器。
git clone https://github.com/One-2-3-45/One-2-3-45
cd One-2-3-45
# 下载模型检查点。
python download_ckpt.py
# 查看入门指南进行推断。
开始(推理)
首次运行需要更长的时间来编译模型。
每张图像的预期时间成本:在NVIDIA A6000上约40秒。
# 1. 命令脚本
python run.py --img_path PATH_TO_INPUT_IMG --half_precision
# 2. 交互式演示(Gradio),带有友好的Web界面
# 输出将提供一个URL
# 本地:127.0.0.1:7860;公共:XXXXXXXX.gradio.live
cd demo/
python app.py
# 3. Jupyter笔记本
example.ipynb
APIs
我们提供了便捷的Gradio APIs,以轻松预处理现实世界或文本生成的图像,并从中重建3D网格。
开始,用API URL初始化Gradio客户端。
from gradio_client import Client
client = Client("https://one-2-3-45-one-2-3-45.hf.space/")
# 示例输入图像
input_img_path = "https://huggingface.co/spaces/One-2-3-45/One-2-3-45/resolve/main/demo_examples/01_wild_hydrant.png"
单图转3D网格
generated_mesh_filepath = client.predict(
input_img_path,
True, # 图像预处理
api_name="/generate_mesh"
)
高度估计
如果输入图像的角度(高度)未知,则可以使用此现成算法!
elevation_angle_deg = client.predict(
input_img_path,
True, # 图像预处理
api_name="/estimate_elevation"
)
图像预处理:分割、缩放和重新定位
我们采用了Segment Anything模型(SAM)进行背景移除。
segmented_img_filepath = client.predict(
input_img_path,
api_name="/preprocess"
)
训练自己的模型
数据准备
我们使用Objaverse-LVIS数据集进行训练,并使用Blender将选定形状(具有CC-BY许可)渲染为2D图像。
下载训练图像。
从这里下载所有One2345.zip.part-*文件(总共5个文件),然后使用以下命令将其合并为一个.zip文件:
cat One2345.zip.part-* > One2345.zip
解压缩训练图像zip文件。
使用以下命令将zip文件解压缩到您指定的目录(YOUR_BASE_FOLDER):
unzip One2345.zip -d YOUR_BASE_FOLDER
下载元文件。
从这里下载One2345_training_pose.json和lvis_split_cc_by.json并将它们放在训练图像相同的目录(YOUR_BASE_FOLDER)内。
您的文件结构应如下所示:
# One2345是之前步骤中的基目录
One2345
├── One2345_training_pose.json
├── lvis_split_cc_by.json
└── zero12345_narrow
├── 000-000
├── 000-001
├── 000-002
...
└── 000-159
训练设置
在配置文件./reconstruction/confs/one2345_lod_train.conf中,指定trainpath、valpath和testpath为数据准备步骤中使用的YOUR_BASE_FOLDER,然后运行以下命令:
cd reconstruction
python exp_runner_generic_blender_train.py --mode train --conf confs/one2345_lod_train.conf
实验日志和检查点将保存在./reconstruction/exp/目录下。
相关工作
引用
如果您发现我们的代码对您的研究或项目有帮助,请引用我们的论文:
@article{liu2023one2345,
title={One-2-3-45: 从单张图像到3D网格,无需逐模型优化,在45秒内完成},
author={刘明华, 徐超, 贾海安, 陈凌浩, Varma T, 慕昆德, 徐泽祥, 苏皓},
journal={神经信息处理系统进展},
volume={36},
year={2024}
}
请注意,原文中的论文标题和作者列表保持原样,未做中文翻译调整,以确保准确性。
项目介绍
官方代码:《一键快速转换:任意单张图片至三维网格,45秒内完成,无需逐形状优化》【此简介由AI生成】