Voir le document MODÈLES GÉNÉRATIFS POUR LA COMPLÉTION DE FORME 3D.
Le référentiel contient du code pour la formation et l'échantillonnage à partir d'un modèle génératif pour la réalisation de formes 3D. Le modèle implémenté dans ce référentiel est basé sur le modèle de diffusion proposé dans l'article DiffComplete : Diffusion-based Generative 3D Shape Completion.
Crédits :
base issue de la diffusion améliorée.
partie d'évaluation tirée de PatchComplete.
Les modèles pré-entraînés peuvent être téléchargés à partir de ce lien.
virtualenv -p python3.8 venv
source venv/bin/activate
export PYTHONPATH= " ${PYTHONPATH} : ${pwd} "
pip install -r requirements.txt
Remarque : CUDA est requis pour exécuter le code (en raison de la partie évaluation).
Pour générer l'ensemble de données pour le script de complétion de forme, dataset_hole.py
est utilisé. Pour utiliser le même modèle que dans l'article, utilisez l'option --filter_path
pour spécifier le chemin d'accès au fichier avec la liste des modèles à utiliser pour un ensemble de données donné. Les fichiers se trouvent dans le répertoire ./datasets/txt.
Tous les arguments disponibles peuvent être trouvés en exécutant python ./dataset_hole.py --help
.
Sources de données :
Pour générer un ensemble de données de complétion de forme, exécutez la commande suivante :
cd dataset_processing
Meubles Objaverse
python ./dataset_hole.py --output datasets/objaverse-furniture --tag_names chair lamp bathtub chandelier bench bed table sofa toilet
Véhicules Objaverses
python ./dataset_hole.py --output datasets/objaverse-vehicles --category_names cars-vehicles --tag_names car truck bus airplane
Animaux Objaverses
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
ModèleNet40
python ./dataset_hole.py --dataset modelnet --source MODELNET40_DIR_PATH --output datasets/modelnet40
L'ensemble de données de super résolution utilisé pour la formation a été créé en exécutant le modèle de complétion de forme sur l'ensemble de données de formation et de validation pour obtenir les formes prédites, qui ont été utilisées comme entrée pour le modèle de super résolution.
Pour entraîner le modèle, le script train.py
est utilisé. Tous les arguments disponibles peuvent être trouvés en exécutant python ./train.py --help
.
Pour entraîner le modèle BaseComplete , exécutez la commande suivante :
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
pour s'entraîner avec le masque ROI, ajoutez l'option --use_roi = True
.
Pour entraîner le modèle de traitement basse résolution, exécutez la commande suivante :
python ./scripts/train.py --batch_size 32
... # data options
--in_scale_factor 1
--dataset_name complete_32_64
Pour entraîner le modèle superes , exécutez la commande suivante :
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
Pour échantillonner une forme du modèle de maillage, exécutez la commande suivante :
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
ou en utilisant le fichier .npy comme entrée :
python ./scripts/sample.py --model_path MODEL_PATH
--sample_path SAMPLE_PATH # Condition
--input_mesh False
--output_size 32 # Expected output size
Pour évaluer l'ensemble de données dans son intégralité, exécutez la commande suivante :
python ./scripts/evaluate_dataset.py
--data_path " ./datasets/objaverse-furniture/32 "
--file_path " ./datasets/objaverse-furniture/test.txt "
--model_path MODEL_PATH
Évaluation sur l'ensemble de données TEST :
Métrique | BaseComplète | Masque BaseComplete + ROI |
---|---|---|
CD | 3.53 | 2,86 |
IdO | 81,62 | 84,77 |
L1 | 0,0264 | 0,0187 |
Remarque : CD et IoU sont mis à l'échelle par 100. Les valeurs inférieures sont meilleures pour CD et L1, tandis que les valeurs plus élevées sont meilleures pour IoU.
Condition | Prédiction | Vérité terrain |
---|---|---|