Реализация Pytorch статьи «T2M-GPT: генерация человеческого движения на основе текстовых описаний с дискретными представлениями»
[Страница проекта] [Бумага] [Демо-версия ноутбука] [HuggingFace] [Демо-версия Space] [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},
}
Текст: мужчина делает шаг вперед и делает стойку на руках. | ||||
---|---|---|---|---|
ГТ | Т2М | МДМ | ДвижениеДиффузный | Наш |
Текст: Человек поднимается с земли, ходит по кругу и снова садится на землю. | ||||
ГТ | Т2М | МДМ | ДвижениеДиффузный | Наш |
Наша модель может быть изучена на одном графическом процессоре 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
Файлы предварительно обученной модели будут храниться в папке pretrained:
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
Мы ценим помощь от: