هذا هو التنفيذ الرسمي للورقة CommonScenes: إنشاء مشاهد داخلية ثلاثية الأبعاد منطقية مع نشر الرسم البياني للمشهد . استنادًا إلى نموذج الانتشار، نقترح طريقة لإنشاء مشهد ثلاثي الأبعاد بالكامل من الرسوم البيانية للمشهد، بما في ذلك تخطيطه وهندسته ثلاثية الأبعاد بشكل كلي.
الموقع | أركسيف
غوانغياو تشاي*، إيفين بينار أورنيك*، شون-تشينغ وو، يان دي، فيديريكو تومباري، ناصر نواب، وبنجامين بوسام. (*مساهمة متساوية.)
نيوريبس 2023
قم بتنزيل الكود وانتقل إلى المجلد.
استنساخ بوابة https://github.com/ymxlzgy/commonscenescd commonscenes
لقد اختبرناه على Ubuntu 20.04 مع Python 3.8 وPyTorch 1.11.0 وCUDA 11.3 وPytorch3D.
conda create -n commonscenes python=3.8condaactivate commonscenespip install -r Requirements.txt pip install einops omegaconf Tensorboardx open3d
لتثبيت CLIP، اتبع مستودع OpenAI CLIP هذا:
تثبيت النقطة ftfy regex tqdmpip تثبيت git+https://github.com/openai/CLIP.git
إعداد حساب إضافي لمسافة الشطب للتقييم:
تثبيت cd ./extensionpython setup.py
قم بتنزيل مجموعة بيانات 3D-FRONT من موقعهم الرسمي.
المعالجة المسبقة لمجموعة البيانات التالية ATISS.
تحميل 3D-FUTURE-SDF. تتم معالجة هذا بأنفسنا على شبكات 3D-FUTURE باستخدام أدوات في SDFusion.
اتبع هذه الصفحة لتنزيل SG-FRONT والوصول إلى مزيد من المعلومات.
قم بإنشاء مجلد باسم FRONT
، وانسخ كافة الملفات إليه.
يجب أن يكون الهيكل مشابهًا كما يلي:
FRONT |--3D-FRONT |--3D-FRONT_preprocessed (by ATISS) |--threed_front.pkl (by ATISS) |--3D-FRONT-texture |--3D-FUTURE-model |--3D-FUTURE-scene |--3D-FUTURE-SDF |--All SG-FRONT files (.json and .txt)
أساسي: قم بتنزيل نموذج VQ-VAE الذي تم تدريبه مسبقًا من هنا إلى المجلد scripts/checkpoint
.
اختياري: نحن نقدم نموذجين مدربين من CommonScenes متاحين هنا.
لتدريب النماذج، قم بتشغيل:
cd scripts python train_3dfront.py --exp /media/ymxlzgy/Data/graphto3d_models/balancing/all --room_type livingroom --dataset /path/to/FRONT --residual True --network_type v2_full --with_SDF True --with_CLIP True --batchSize 4 --workers 4 --loadmodel False --nepoch 10000 --large False
--room_type
: غرف التدريب، على سبيل المثال، غرفة المعيشة، غرفة الطعام، غرفة النوم، وكل شيء. نقوم بتدريب جميع الغرف معًا في التنفيذ.
--network_type
: الشبكة المراد تدريبها. v1_box
هو Graph-to-Box، v1_full
هو Graph-to-3D (إصدار DeepSDF)، و v2_box
هو فرع التخطيط لـ CommonScenes، و v2_full
هو CommonScenes. (ملاحظة: إذا كنت تريد تدريب v1_full
، فيجب أيضًا تنزيل الشبكات والأكواد الإضافية المعاد بناؤها بواسطة DeepSDF من هنا، وكذلك نسخها إلى FRONT
).
--with_SDF
: اضبط على True
إذا كان القطار v2_full.
--with_CLIP
: يتم ضبطه على True
إذا كان القطار v2_box أو v2_full، ولا يُستخدم في حالات أخرى.
--batch_size
: حجم الدفعة لتدريب فرع التخطيط. ( ملاحظة: الجزء الخاص بفرع الشكل موجود في v2_full.yaml
و v2_full_concat.yaml
. ويمكن العثور على معنى كل حجم دفعة في المادة التكميلية G.1.)
--large
: الافتراضي هو False
، ويعني True
المزيد من الفئات المحددة.
نقدم ثلاثة أمثلة هنا: Graph-to-3D (إصدار DeepSDF)، Graph-to-Box، وCommonScenes. وحدة معالجة الرسومات الموصى بها هي A100 واحدة لـ CommonScenes، على الرغم من أن 3090 يمكنها أيضًا تدريب الشبكة بحجم دفعة أقل في فرع الشكل.
لتقييم النماذج تشغيل:
cd scripts python eval_3dfront.py --exp /media/ymxlzgy/Data/graphto3d_models/balancing/all --epoch 180 --visualize False --evaluate_diversity False --num_samples 5 --gen_shape False --no_stool True
--exp
: حيث تقوم بتخزين النماذج.
--gen_shape
: اضبط True
إذا كنت تريد عمل فرع الشكل القائم على الانتشار.
--evaluate_diversity
: قم بتعيين True
إذا كنت تريد حساب التنوع. يستغرق هذا بعض الوقت، لذا يتم تعطيله افتراضيًا.
--num_samples
: عدد جولات التجربة عند تقييم التنوع.
يهدف هذا المقياس إلى تقييم الإخلاص على مستوى المشهد. لتقييم FID/KID، تحتاج أولاً إلى تنزيل صور gt المقدمة من أعلى إلى أسفل لطرق الاسترداد والصور المعروضة sdf للطرق التوليدية، أو جمع العروض عن طريق تعديل وتشغيل collect_gt_sdf_images.py
. لاحظ أنه تم تعيين العلامة without_lamp
على True
في تجربتنا.
تأكد من تنزيل كافة الملفات والمعالجة المسبقة لـ 3D-FRONT. يمكن الحصول على عروض المشاهد التي تم إنشاؤها داخل eval_3dfront.py
.
بعد الحصول على صور الحقيقة الأرضية وعروض المشاهد التي تم إنشاؤها، قم بتشغيل compute_fid_scores_3dfront.py
.
يهدف هذا المقياس إلى تقييم الإخلاص على مستوى الكائن. يرجى متابعة التنفيذ في PointFlow. لتقييم ذلك، تحتاج إلى تخزين كائن تلو الآخر في المشاهد التي تم إنشاؤها، وهو ما يمكن القيام به في eval_3dfront.py
.
بعد الحصول على شبكات الكائنات، قم بتشغيل compute_mmd_cov_1nn.py
للحصول على النتائج.
إذا وجدت هذا العمل مفيدا في بحثك، يرجى الاستشهاد به
@inproceedings{ zhai2023commonscenes, title={CommonScenes: Generating Commonsense 3D Indoor Scenes with Scene Graph Diffusion}, author={Zhai, Guangyao and {"O}rnek, Evin P{i}nar and Wu, Shun-Cheng and Di, Yan and Tombari, Federico and Navab, Nassir and Busam, Benjamin}, booktitle={Thirty-seventh Conference on Neural Information Processing Systems}, year={2023}, url={https://openreview.net/forum?id=1SF2tiopYJ} }
يعتمد هذا المستودع على Graph-to-3D وSDFusion. ونحن نشكر المؤلفين على إتاحة الكود الخاص بهم.
الطلاب المتعبون أنهوا خط الأنابيب في الأيام المزدحمة...