تنفيذ Pytorch لورقة "T2M-GPT: توليد الحركة البشرية من الأوصاف النصية مع تمثيلات منفصلة"
[صفحة المشروع] [الورقة] [عرض الكمبيوتر المحمول] [HuggingFace] [عرض الفضاء] [T2M-GPT+]
إذا كان مشروعنا مفيدًا لبحثك، فيرجى مراعاة الاستشهاد بما يلي:
@inproceedings{zhang2023generating,
title={T2M-GPT: Generating Human Motion from Textual Descriptions with Discrete Representations},
author={Zhang, Jianrong and Zhang, Yangsong and Cun, Xiaodong and Huang, Shaoli and Zhang, Yong and Zhao, Hongwei and Lu, Hongtao and Shen, Xi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2023},
}
النص: رجل يتقدم إلى الأمام ويقف على اليدين. | ||||
---|---|---|---|---|
جي تي | T2M | مدم | MotionDiffuse | لنا |
النص: يقوم رجل من الأرض، ويمشي في دائرة، ويجلس مرة أخرى على الأرض. | ||||
جي تي | T2M | مدم | MotionDiffuse | لنا |
يمكن تعلم نموذجنا في وحدة معالجة الرسومات V100-32G واحدة
conda env create -f environment.yml
conda activate T2M-GPT
تم اختبار الكود على Python 3.8 وPyTorch 1.8.1.
bash dataset/prepare/download_glove.sh
نحن نستخدم مجموعتين من بيانات لغة الحركة البشرية ثلاثية الأبعاد: HumanML3D وKIT-ML. بالنسبة لمجموعتي البيانات، يمكنك العثور على التفاصيل بالإضافة إلى رابط التنزيل [هنا].
خذ HumanML3D على سبيل المثال، يجب أن يبدو دليل الملف كما يلي:
./dataset/HumanML3D/
├── new_joint_vecs/
├── texts/
├── Mean.npy # same as in [HumanML3D](https://github.com/EricGuo5513/HumanML3D)
├── Std.npy # same as in [HumanML3D](https://github.com/EricGuo5513/HumanML3D)
├── train.txt
├── val.txt
├── test.txt
├── train_val.txt
└── all.txt
نحن نستخدم نفس المستخلصات التي توفرها t2m لتقييم حركاتنا المولدة. يرجى تحميل النازعين.
bash dataset/prepare/download_extractor.sh
سيتم تخزين ملفات النماذج المُدربة مسبقًا في المجلد "المدرب مسبقًا":
bash dataset/prepare/download_model.sh
إذا كنت تريد عرض الحركة التي تم إنشاؤها، فأنت بحاجة إلى تثبيت:
sudo sh dataset/prepare/download_smpl.sh
conda install -c menpo osmesa
conda install h5py
conda install -c conda-forge shapely pyrender trimesh mapbox_earcut
يتوفر دليل البدء السريع حول كيفية استخدام الكود الخاص بنا على موقع demo.ipynb
لاحظ أنه بالنسبة لمجموعة بيانات المجموعة، ما عليك سوى تعيين "--dataname kit".
يتم حفظ النتائج في إخراج المجلد.
python3 train_vq.py
--batch-size 256
--lr 2e-4
--total-iter 300000
--lr-scheduler 200000
--nb-code 512
--down-t 2
--depth 3
--dilation-growth-rate 3
--out-dir output
--dataname t2m
--vq-act relu
--quantizer ema_reset
--loss-vel 0.5
--recons-loss l1_smooth
--exp-name VQVAE
يتم حفظ النتائج في إخراج المجلد.
python3 train_t2m_trans.py
--exp-name GPT
--batch-size 128
--num-layers 9
--embed-dim-gpt 1024
--nb-code 512
--n-head-gpt 16
--block-size 51
--ff-rate 4
--drop-out-rate 0.1
--resume-pth output/VQVAE/net_last.pth
--vq-name VQVAE
--out-dir output
--total-iter 300000
--lr-scheduler 150000
--lr 0.0001
--dataname t2m
--down-t 2
--depth 3
--quantizer ema_reset
--eval-iter 10000
--pkeep 0.5
--dilation-growth-rate 3
--vq-act relu
python3 VQ_eval.py
--batch-size 256
--lr 2e-4
--total-iter 300000
--lr-scheduler 200000
--nb-code 512
--down-t 2
--depth 3
--dilation-growth-rate 3
--out-dir output
--dataname t2m
--vq-act relu
--quantizer ema_reset
--loss-vel 0.5
--recons-loss l1_smooth
--exp-name TEST_VQVAE
--resume-pth output/VQVAE/net_last.pth
اتبع إعداد التقييم لتحويل النص إلى حركة، وقمنا بتقييم نموذجنا 20 مرة والإبلاغ عن متوسط النتيجة. نظرًا لجزء تعدد الوسائط حيث يجب علينا إنشاء 30 اقتراحًا من نفس النص، فإن التقييم يستغرق وقتًا طويلاً.
python3 GPT_eval_multi.py
--exp-name TEST_GPT
--batch-size 128
--num-layers 9
--embed-dim-gpt 1024
--nb-code 512
--n-head-gpt 16
--block-size 51
--ff-rate 4
--drop-out-rate 0.1
--resume-pth output/VQVAE/net_last.pth
--vq-name VQVAE
--out-dir output
--total-iter 300000
--lr-scheduler 150000
--lr 0.0001
--dataname t2m
--down-t 2
--depth 3
--quantizer ema_reset
--eval-iter 10000
--pkeep 0.5
--dilation-growth-rate 3
--vq-act relu
--resume-trans output/GPT/net_best_fid.pth
يجب عليك إدخال عنوان مجلد npy وأسماء الحركة. هنا مثال:
python3 render_final.py --filedir output/TEST_GPT/ --motion-list 000019 005485
نحن نقدر المساعدة من: