请参阅 3D 形状完成的生成模型论文。
该存储库包含用于从 3D 形状完成的生成模型中进行训练和采样的代码。该存储库中实现的模型基于论文 DiffComplete: Diffusion-based Generative 3D Shape Completion 中提出的扩散模型。
学分:
基础取自改进扩散。
评估部分取自 PatchComplete。
可以从此链接下载预训练模型。
virtualenv -p python3.8 venv
source venv/bin/activate
export PYTHONPATH= " ${PYTHONPATH} : ${pwd} "
pip install -r requirements.txt
注意:运行代码需要CUDA (因为评估部分)。
为了生成形状补全的数据集,使用了dataset_hole.py
脚本。要使用与本文中相同的模型,请使用--filter_path
选项指定包含用于给定数据集的模型列表的文件的路径。这些文件位于 ./datasets/txt 目录中。
可以通过运行python ./dataset_hole.py --help
找到所有可用参数。
数据来源:
要生成形状完成数据集,请运行以下命令:
cd dataset_processing
奥布贾弗斯家具
python ./dataset_hole.py --output datasets/objaverse-furniture --tag_names chair lamp bathtub chandelier bench bed table sofa toilet
物体车辆
python ./dataset_hole.py --output datasets/objaverse-vehicles --category_names cars-vehicles --tag_names car truck bus airplane
客观动物
python ./dataset_hole.py --output datasets/objaverse-animals --category_names animals-pets --tag_names cat dog
形状网
python ./dataset_hole.py --dataset shapenet --source SHAPENET_DIR_PATH --output datasets/shapenet
模型网40
python ./dataset_hole.py --dataset modelnet --source MODELNET40_DIR_PATH --output datasets/modelnet40
用于训练的超分辨率数据集是通过在训练和验证数据集上运行形状完成模型来创建的,以获得预测的形状,并将其用作超分辨率模型的输入。
为了训练模型,使用脚本train.py
。所有可用的参数都可以通过运行python ./train.py --help
找到。
要训练BaseComplete模型,请运行以下命令:
python ./scripts/train.py --batch_size 32
--data_path " ./datasets/objaverse-furniture/32/ "
--train_file_path " ../datasets/objaverse-furniture/train.txt "
--val_file_path " ../datasets/objaverse-furniture/val.txt "
--dataset_name complete
要使用 ROI 掩码进行训练,请添加--use_roi = True
选项。
要训练低分辨率处理模型,请运行以下命令:
python ./scripts/train.py --batch_size 32
... # data options
--in_scale_factor 1
--dataset_name complete_32_64
要训练superes模型,请运行以下命令:
python ./scripts/train.py --batch_size 32
--data_path " ./datasets/objaverse-furniture-sr/ "
--val_data_path " ./datasets/objaverse-furniture-sr-val/ "
--super_res True
--dataset_name sr
要从网格模型中采样一种形状,请运行以下命令:
python ./scripts/sample.py --model_path MODEL_PATH
--sample_path SAMPLE_PATH # Condition
--input_mesh True
--condition_size 32 # Expected condition size
--output_size 32 # Expected output size
或使用 .npy 文件作为输入:
python ./scripts/sample.py --model_path MODEL_PATH
--sample_path SAMPLE_PATH # Condition
--input_mesh False
--output_size 32 # Expected output size
要评估整个数据集,请运行以下命令:
python ./scripts/evaluate_dataset.py
--data_path " ./datasets/objaverse-furniture/32 "
--file_path " ./datasets/objaverse-furniture/test.txt "
--model_path MODEL_PATH
对TEST数据集的评估:
公制 | 基础完成 | BaseComplete + ROI 掩模 |
---|---|---|
光盘 | 3.53 | 2.86 |
IOU | 81.62 | 84.77 |
L1 | 0.0264 | 0.0187 |
注意: CD 和 IoU 按 100 缩放。CD 和 L1 的值越低越好,而 IoU 的值越高越好。
健康)状况 | 预言 | 地面真相 |
---|---|---|