請參閱 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 縮放。
狀態 | 預言 | 地面真相 |
---|---|---|