راجع النماذج التوليدية لورقة إكمال الأشكال ثلاثية الأبعاد.
يحتوي المستودع على تعليمات برمجية للتدريب وأخذ العينات من نموذج توليدي لإكمال الشكل ثلاثي الأبعاد. يعتمد النموذج المطبق في هذا المستودع على نموذج الانتشار المقترح في الورقة DiffComplete: إكمال الشكل التوليدي ثلاثي الأبعاد القائم على الانتشار.
الاعتمادات :
قاعدة مأخوذة من تحسين الانتشار.
جزء التقييم مأخوذ من 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
للتدريب باستخدام قناع العائد على الاستثمار، أضف --use_roi = True
option.
لتدريب نموذج المعالجة منخفض الدقة، قم بتشغيل الأمر التالي:
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
التقييم على مجموعة بيانات الاختبار :
متري | BaseComplete | BaseComplete + قناع العائد على الاستثمار |
---|---|---|
قرص مضغوط | 3.53 | 2.86 |
IU | 81.62 | 84.77 |
L1 | 0.0264 | 0.0187 |
ملاحظة: يتم تغيير حجم CD وIoU بمقدار 100. القيم الأقل أفضل لـ CD وL1، بينما القيم الأعلى أفضل لـ IoU.
حالة | تنبؤ | الحقيقة الأرضية |
---|---|---|