MeshAnythingV2项目部署记录

MeshAnythingV2项目部署

该项目部署总体来说,十分顺利!

项目地址: https://github.com/buaacyw/MeshAnythingV2
环境要求:Ubuntu 22、CUDA 11.8

1 基础环境配置

1.拉取源代码

git clone https://github.com/buaacyw/MeshAnythingV2.git && cd MeshAnythingV2

2.创建虚拟环境,配置依赖项目

conda create -n MeshAnythingV2 python==3.10.13 -y
conda activate MeshAnythingV2
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
pip install flash-attn --no-build-isolation
pip install -U gradio

2 项目运行

1、相邻网格标记化和去标记化的实现(可选,非必须)

# We release our adjacent mesh tokenization implementation in adjacent_mesh_tokenization.py.
# For detokenization please check the function adjacent_detokenize in MeshAnything/models/meshanything_v2.py
python adjacent_mesh_tokenization.py

解释:这些脚本用于实现相邻网格的标记化和去标记化,主要用于模型的训练和研究目的。
对于用户而言,直接使用提供的命令行工具或 Gradio 界面即可完成从文本或图像到艺术家设计网格的生成。

2、有三种输入

  • 文本/图像
  • 网格mesh
  • 点云

文本/图像

对于文本/图像,建议先使用 Rodin将文本或图像实现到密集网格(我理解是obj格式)。然后将密集网格作为输入。

python main.py --input_dir rodin_result --out_dir mesh_output --input_type mesh --mc

参数解释:
–mc 启用 Marching Cubes 算法对输入网格进行预处理。
Marching Cubes 是一种常用于从点云或密集体素生成三角形网格的算法。
它的主要作用是将稀疏网格或点云数据转化为规则的、高质量的三角形网格。
在 MeshAnythingV2 的流程中,建议使用 Marching Cubes 对输入的网格进行预处理,以便与模型的训练数据对齐,生成更好的结果。
–input_dirrodin_result:指定输入网格的目录,新建rodin_result文件夹,目录中应包含 .obj 格式的网格文件。
–out_dir mesh_output:指定输出网格的存储目录。
–input_type mesh:指定输入类型为网格(mesh),而不是其他类型(如点云、图像等)。

网格

重要提示:如果您的网格输入不是由 Marching Cubes 生成的,我们建议您先使用 Marching Cubes 对网格进行预处理(只需添加 --mc)。

# folder input 文件夹包含的所有文件
python main.py --input_dir examples --out_dir mesh_output --input_type mesh

# single file input 一个文件
python main.py --input_path examples/wand.obj --out_dir mesh_output --input_type mesh

# Preprocess with Marching Cubes first 文件夹包含的所有文件 使用mc算法
python main.py --input_dir examples --out_dir mesh_output --input_type mesh --mc

# The mc resolution is default to be 128. For some delicate mesh, this resolution is not sufficient. Raise this resolution takes more time to preprocess but should achieve a better result.
# Change it by : --mc_level 7 -> 128 (2^7), --mc_level 8 -> 256 (2^8).
# 256 resolution Marching Cube example.
python main.py --input_dir examples --out_dir mesh_output --input_type mesh --mc --mc_level 8

参数解释:
–mc_level
设置 Marching Cubes 的分辨率等级,决定生成网格的细节程度。
默认值: --mc_level 7,即分辨率为 128( 2 7 2^7 27)。
更高分辨率:
–mc_level 8,分辨率为 256( 2 8 2^8 28),适用于更细致的网格。
注意: 分辨率越高,预处理时间越长,但细节表现更好。

点云

文件格式应为 .npy 文件,形状为 (N, 6),其中 N 为点的数量。前 3 列是坐标,后 3 列是法向量。

# inference for folder
python main.py --input_dir pc_examples --out_dir pc_output --input_type pc_normal

# inference for single file
python main.py --input_path pc_examples/grenade.npy --out_dir pc_output --input_type pc_normal

参数解释:
–input_path pc_examples/grenade.npy:指定单个输入点云文件的路径。
–out_dir pc_output:指定输出文件存储的目录路径。
–input_type pc_normal:输入类型为带法向量的点云。
结果:
代码会加载单个 .npy 文件进行推理,生成的输出文件存储在 pc_output 目录中。

3 重要说明

在 A6000 GPU 上生成网格大约需要 8GB 和 45 秒(取决于生成网格的面数)。
输入网格将被归一化为单位边界框。输入网格的向上向量应为 +Y,以获得更好的结果。
受计算资源限制,MeshAnything 是在面数少于 1600 的网格上进行训练的,无法生成面数超过 1600 的网格。输入网格的形状应该足够清晰;否则,仅用 1600 个面来表示它将非常困难。因此,前馈 3D 生成方法通常会由于形状质量不足而产生不良结果。我们建议使用 3D 重建、扫描、基于 SDS 的方法(如DreamCraft3D)或Rodin 的结果作为 MeshAnything 的输入。

更多示例请参阅https://huggingface.co/spaces/Yiwen-ntu/MeshAnything/tree/main/examples 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值