Weitere Informationen finden Sie im Dokument „GENERATIVE MODELLE FÜR DIE 3D-FORMVERvollständigung“.
Das Repository enthält Code für das Training und die Probenahme aus einem generativen Modell zur Vervollständigung der 3D-Form. Das in diesem Repository implementierte Modell basiert auf dem im Artikel DiffComplete: Diffusion-based Generative 3D Shape Completion vorgeschlagenen Diffusionsmodell.
Credits :
Basis aus Improved-Diffusion.
Evaluierungsteil aus PatchComplete.
Vortrainierte Modelle können über diesen Link heruntergeladen werden.
virtualenv -p python3.8 venv
source venv/bin/activate
export PYTHONPATH= " ${PYTHONPATH} : ${pwd} "
pip install -r requirements.txt
Hinweis: Zum Ausführen des Codes ist CUDA erforderlich (wegen des Evaluierungsteils).
Zum Generieren des Datensatzes für die Formvervollständigung wird das Skript dataset_hole.py
verwendet. Um dasselbe Moddel wie im Artikel zu verwenden, verwenden Sie die Option --filter_path
um den Pfad zur Datei mit der Liste der Modelle anzugeben, die für den angegebenen Datensatz verwendet werden sollen. Die Dateien befinden sich im Verzeichnis ./datasets/txt.
Alle verfügbaren Argumente können durch Ausführen python ./dataset_hole.py --help
gefunden werden.
Datenquellen:
Um einen Formvervollständigungsdatensatz zu generieren, führen Sie den folgenden Befehl aus:
cd dataset_processing
Objaverse Möbel
python ./dataset_hole.py --output datasets/objaverse-furniture --tag_names chair lamp bathtub chandelier bench bed table sofa toilet
Objaverse Fahrzeuge
python ./dataset_hole.py --output datasets/objaverse-vehicles --category_names cars-vehicles --tag_names car truck bus airplane
Objaverse Tiere
python ./dataset_hole.py --output datasets/objaverse-animals --category_names animals-pets --tag_names cat dog
ShapeNet
python ./dataset_hole.py --dataset shapenet --source SHAPENET_DIR_PATH --output datasets/shapenet
ModelNet40
python ./dataset_hole.py --dataset modelnet --source MODELNET40_DIR_PATH --output datasets/modelnet40
Der für das Training verwendete Superauflösungsdatensatz wurde erstellt, indem das Formvervollständigungsmodell über den Trainings- und Validierungsdatensatz ausgeführt wurde, um die vorhergesagten Formen zu erhalten, die als Eingabe für das Superauflösungsmodell verwendet wurden.
Zum Trainieren des Modells wird das Skript train.py
verwendet. Alle verfügbaren Argumente können durch Ausführen python ./train.py --help
gefunden werden.
Um das BaseComplete -Modell zu trainieren, führen Sie den folgenden Befehl aus:
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
Um mit der ROI-Maske zu trainieren, fügen Sie die Option --use_roi = True
hinzu.
Um das Verarbeitungsmodell mit niedriger Auflösung zu trainieren, führen Sie den folgenden Befehl aus:
python ./scripts/train.py --batch_size 32
... # data options
--in_scale_factor 1
--dataset_name complete_32_64
Um das Superes -Modell zu trainieren, führen Sie den folgenden Befehl aus:
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
Um eine Form aus dem Netzmodell abzutasten, führen Sie den folgenden Befehl aus:
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
oder .npy-Datei als Eingabe verwenden:
python ./scripts/sample.py --model_path MODEL_PATH
--sample_path SAMPLE_PATH # Condition
--input_mesh False
--output_size 32 # Expected output size
Um den gesamten Datensatz auszuwerten, führen Sie den folgenden Befehl aus:
python ./scripts/evaluate_dataset.py
--data_path " ./datasets/objaverse-furniture/32 "
--file_path " ./datasets/objaverse-furniture/test.txt "
--model_path MODEL_PATH
Auswertung am TEST- Datensatz:
Metrisch | BaseComplete | BaseComplete + ROI-Maske |
---|---|---|
CD | 3,53 | 2,86 |
IoU | 81,62 | 84,77 |
L1 | 0,0264 | 0,0187 |
Hinweis: CD und IoU werden mit 100 skaliert. Niedrigere Werte sind besser für CD und L1, während höhere Werte besser für IoU sind.
Zustand | Vorhersage | Grundwahrheit |
---|---|---|