Home

Awesome

GLA-GCN

PWC PWC PWC

This repository holds the codebase, dataset, and models for the work: GLA-GCN: Global-local Adaptive Graph Convolutional Network for 3D Human Pose Estimation from Monocular Video, ICCV 2023

Bruce X.B. Yu<sup>1</sup>, Zhang Zhi<sup>1</sup>, Liu Yongxu<sup>1</sup>, Sheng-hua Zhong<sup>2</sup>, Yan Liu<sup>1</sup>, Chang Wen Chen<sup>1</sup>

<sup>1</sup>The Hong Kong Polytechnic University, <sup>2</sup>Shen Zhen University.

<div align="center"> <img src="figures/architecture.png"> </div>

Introduction

3D human pose estimation has been researched for decades with promising fruits. 3D human pose lifting is one of the promising research directions toward the task where both estimated pose and ground truth pose data are used for training. Existing pose lifting works mainly focus on improving the performance of estimated pose, but they usually underperform when testing on the ground truth pose data. We observe that the performance of the estimated pose can be easily improved by preparing good quality 2D pose, such as fine-tuning the 2D pose or using advanced 2D pose detectors. As such, we concentrate on improving the 3D human pose lifting via ground truth data for the future improvement of more quality estimated pose data. Towards this goal, a simple yet effective model called Global-local Adaptive Graph Convolutional Network (GLA-GCN) is proposed in this work. Our GLA-GCN globally models the spatiotemporal structure via a graph representation and backtraces local joint features for 3D human pose estimation via individually connected layers. We conduct extensive experiments on two benchmark datasets: Human3.6M and HumanEva-I, to validate our model design. Experimental results show that our GLA-GCN implemented with ground truth 2D poses significantly outperforms state-of-the-art methods (e.g., up to 3%, 17%, and 13% error reductions on Human3.6M, HumanEva-I, and MPI-INF-3DHP, respectively).

Visualization and Comparison with SOTA

<div align="center"> <a href="https://youtu.be/AGNFxQ5O8xM?t=23s"> <img src="figures/video.png" alt="Everything Is AWESOME" style="width:100%;"> </a> </div>

Environment

The code is developed and tested on the following environment

Dataset

The source code is for training/evaluating on the Human3.6M dataset. Our code is compatible with the dataset setup introduced by Martinez et al. and Pavllo et al.. Please refer to VideoPose3D to set up the Human3.6M dataset (./data directory). We upload the training 2D cpn data here and the 3D gt data here.

Our updates

Some of the links above might not work, we provide the following for reproducing the results in our paper:

Evaluating pre-trained models

Human3.6M

We provide the pre-trained models using CPN and GT 2D data, which can be found in the ./checkpoint directory. To evaluate, pleasae run:

For cpn model:

python run_s-agcn.py -tta -k cpn_ft_h36m_dbb --evaluate 96_cpn_ft_h36m_dbb_243_supervised.bin

For ground truth model:

python run_s-agcn.py -tta --evaluate 96_gt_243_supervised.bin

HumanEva-I

We provide the pre-trained MRCNN model here and ground truth model here. To evaluate them, put them into the ./checkpoint directory and run:

python run_s-agcn_HE_13.py -da -tta -d 'humaneva15' -k detectron_pt_coco -str 'Train/S1,Train/S2,Train/S3' -ste 'Validate/S1,Validate/S2,Validate/S3' -c 'checkpoint/humaneva' -a 'Walk,Jog,Box' -arc '3,3,3' -b 1024 --evaluate 96_detectron_pt_coco_27_supervised_epoch_990.bin --by-subject
python run_s-agcn.py -da -tta -d 'humaneva15' -str 'Train/S1,Train/S2,Train/S3' -ste 'Validate/S1,Validate/S2,Validate/S3' -c 'checkpoint/humaneva' -a 'Walk,Jog,Box' -arc '3,3,3' -b 1024 --evaluate 96_gt_27_supervised_epoch_819.bin --by-subject

MPI-INF-3DHP

We follow the experimental setup in p-stmo. To evaluate them, put the checkpioint at Google Drive into the ./checkpoint directory and run:

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python -m torch.distributed.launch --nproc_per_node=8 --master_port=22241     main_sagcn_gpus_individual_fc_3dhp.py  --dataset '3dhp' --root_path data/s-agcn/  --batch_size 1200   --frames 81  --channel 256  --evaluate

Training new models

To train a model from scratch, run:

python run_s-agcn.py -da -tta

-da controls the data augments during training and -tta is the testing data augmentation.

For example, to train our 243-frame ground truth model or CPN detections in our paper, please run:

python run_s-agcn.py -k gt -arc '3,3,3,3,3'

or

python run_s-agcn.py -k cpn_ft_h36m_dbb -arc '3,3,3,3,3'

It should require 48 hours to train on two GeForce RTX 3090 GPUs.

Visualization and other functions

We keep our code consistent with VideoPose3D. Please refer to their project page for further information.

Acknowledgements

This repo is based on

Thanks to the original authors for their work!

Citation

If you find this work is helpful, please cite our work:

@InProceedings{Yu_2023_ICCV,
    author    = {Yu, Bruce X.B. and Zhang, Zhi and Liu, Yongxu and Zhong, Sheng-hua and Liu, Yan and Chen, Chang Wen},
    title     = {GLA-GCN: Global-local Adaptive Graph Convolutional Network for 3D Human Pose Estimation from Monocular Video},
    booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
    month     = {October},
    year      = {2023},
    pages     = {8818-8829}
}

Contact

For any question, feel free to contact Bruce Yu: b r u c e x b y u AT gmail.com(remove space)