321-ego-body-pose-estimation-via-ego-head-pose-estimation
https://github.com/szu-advtech-2024/321-ego-body-pose-estimation-via-ego-head-pose-estimation
Science Score: 41.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.5%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
·
Repository
Basic Info
- Host: GitHub
- Owner: SZU-AdvTech-2024
- Default Branch: main
- Size: 0 Bytes
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Created over 1 year ago
· Last pushed over 1 year ago
Metadata Files
Citation
https://github.com/SZU-AdvTech-2024/321-Ego-Body-Pose-Estimation-via-Ego-Head-Pose-Estimation/blob/main/
# Ego-Body Pose Estimation via Ego-Head Pose Estimation (CVPR 2023)
This is the official implementation for the CVPR 2023 [paper](https://arxiv.org/abs/2212.04636). For more information, please check the [project webpage](https://lijiaman.github.io/projects/egoego/).

## Environment Setup
> Note: This code was developed on Ubuntu 20.04 with Python 3.8, CUDA 11.3 and PyTorch 1.11.0
Clone the repo.
```
git clone https://github.com/lijiaman/egoego.git
cd egoego/
```
Create a virtual environment using Conda and activate the environment.
```
conda create -n egoego_env python=3.8
conda activate egoego_env
```
Install PyTorch.
```
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch
```
Install PyTorch3D.
```
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install -c bottler nvidiacub
pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/py38_cu113_pyt1110/download.html
```
Install human_body_prior.
```
git clone https://github.com/nghorbani/human_body_prior.git
pip install tqdm dotmap PyYAML omegaconf loguru
cd human_body_prior/
python setup.py develop
```
Install ```mujoco```.
```
wget https://github.com/deepmind/mujoco/releases/download/2.1.0/mujoco210-linux-x86_64.tar.gz
tar -xzf mujoco210-linux-x86_64.tar.gz
mkdir ~/.mujoco
mv mujoco210 ~/.mujoco/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mujoco210/bin
```
Install other dependencies.
```
pip install evo --upgrade --no-binary evo
pip install -r requirements.txt
```
### Quick Start
First, download pretrained [models](https://drive.google.com/drive/folders/1llKvkTg0v-eqXGlIrEJYNqUqXAE0x8GK?usp=sharing) and put ```pretrained_models/``` to the root folder.
If you would like to generate visualizations, please download [Blender](https://www.blender.org/download/) first. And put blender path to blender_path. Replace the blender_path in line 45 of ```egoego/vis/blender_vis_mesh_motion.py```.
Please download [SMPL-H](https://mano.is.tue.mpg.de/download.php) (select the extended SMPL+H model) and put the model to ```smpl_models/smplh_amass/```. If you have a different folder path for SMPL-H model, please modify the path in line 13 of ```egoego/data/amass_diffusion_dataset.py```.
Then run EgoEgo pipeline on the testing data. This will generate corresponding visualization results in folder ```test_data_res/```. To disable visualizations, please remove ```--gen_vis```.
```
sh scripts/test_egoego_pipeline.sh
```
### Datasets
If you would like to train each module of our pipeline and evaluate, please prepare the following datasets.
#### AMASS
Please download AMASS data following the instructions on the [website](https://amass.is.tue.mpg.de/index.html).
We used SMPL-H data for this project. Please put AMASS data to a folder ```data/amass```.
```
cd utils/data_utils
python process_amass_dataset.py
python convert_amass_to_qpos.py
```
Please replace the data path with your desired path in the file before running.
#### ARES
ARES dataset relies on AMASS. Please processing AMASS data following above instruction first before processing ARES.
First, download egocentric videos and data that contains AMASS sequence information using this [link](https://drive.google.com/drive/folders/12L3lY87vYtBn9IB9bXUAyHrETYnezlKQ?usp=sharing).
Please put the data to a folder ```data/ares```. Uncompress the files in ```ares_ego_videos```.
To extract corresponding motion sequences from AMASS for each egocentric video, please run the following command. This will copy each egocentric video's corresponding motion to ```data/ares/ares_ego_videos/scene_name/seq_name/ori_motion_seq.npz```.
```
cd utils/data_utils
python extract_amass_motion_for_ares.py
```
To prepare data used during training, run this command to convert all the motion sequences into a single data file. Please check data path before you proceed.
```
python process_ares_dataset.py
```
To prepare data used during evaluation, run this command to convert data format to be consistent with kinpoly. Please check data path before you proceed.
```
python convert_ares_to_qpos.py
```
#### Kinpoly
Please download Kinpoly data following the instructions in this [repo](https://github.com/KlabCMU/kin-poly).
Put MoCap dataset to folder ```data/kinpoly-mocap/```.
Put RealWorld dataset to folder ```data/kinpoly-realworld/```.
#### GIMO
Please download GIMO data following the instructions in this [repo](https://github.com/y-zheng18/GIMO).
To process GIMO, please do the following.
```
cd utils/data_utils/gimo_utils
python segment_seq_images.py
```
Then extract pose parmaters from Vposer.
```
python extract_pose_params.py
```
Process GIMO to be consistent with AMASS processed data.
```
cd utils/data_utils
python process_gimo_data.py
```
Process GIMO data to the format used for training and evaluation.
```
cd utils/data_utils
python convert_gimo_to_qpos.py
```
#### Others
We used [DROID-SLAM](https://github.com/princeton-vl/DROID-SLAM) to extract camera poses. We also provided results of DROID-SLAM for ARES, Kinpoly-MoCap, GIMO [here](https://drive.google.com/drive/folders/1hoWdQKXoX4Hc7FGtNcJqmo6fO9QoGKEw?usp=drive_link). Please find the results for each dataset and put them into desired path ```data/ares/droid_slam_res/```, ```data/gimo/droid_slam_res/```, ```data/kinpoly-mocap/droid_slam_res```, ```data/kinpoly-realworld/droid_slam_res/```.
We used [RAFT](https://github.com/princeton-vl/RAFT) to extract optical flow, we provided optical flow features extracted using a pre-trained ResNet [here](https://drive.google.com/drive/folders/1hoWdQKXoX4Hc7FGtNcJqmo6fO9QoGKEw?usp=drive_link). Please find the results for each dataset and put them into desired path ```data/ares/raft_of_feats```, ```data/gimo/raft_of_feats```, ```data/kinpoly/fpv_of_feats```.
### Evaluation
Evaluate the conditional diffusion model at stage 2 on AMASS testing split. This part only relies on AMASS data. To generate visualizations, please add ```--gen_vis```.
```
sh scripts/eval_stage2.sh
```
Evaluate the whole EgoEgo pipeline on ARES, GIMO, Kinpoly-MoCap. Please use ```--test_on_ares```, ```--test_on_gimo```, and ```--eval_on_kinpoly_mocap``` respectively. To generate visualizations, please add ```--gen_vis```. Note that before proceeding, please download the [sequence names](https://drive.google.com/drive/folders/1z6Ds4WZ5wgmJw4zX5HW2uWksaFxAv6D2) that are not included in quantitative evaluation as DROID-SLAM failed in these sequences. Our approach relies on a reasonable SLAM result. Put the folder to ```data/failed_seq_names/```.
```
sh scripts/eval_egoego_pipeline_on_ares.sh
sh scripts/eval_egoego_pipeline_on_gimo.sh
sh scripts/eval_egoego_pipeline_on_kinpoly.sh
```
In ```utils/blender_utils``` folder, we provided multiple ```.blend``` files as reference for you to generate visualizations. You can try different .blend or customize your own visualization by modifying ```.blend``` using Blender.
### Training
For all the script used in training, please modify ```--entity``` to your username on [wandb](https://wandb.ai/site) to monitor the training loss.
#### Training Conditional Diffusion Model for Full-Body Generation from Head Pose
Train conditional diffusion on AMASS.
```
sh scripts/train_full_body_cond_diffusion.sh
```
#### Training GravityNet
```
sh scripts/train_gravitynet.sh
```
#### Training HeadNet
Train HeadNet on ARES.
```
sh scripts/train_headnet_on_ares.sh
```
Train HeadNet on GIMO.
```
sh scripts/train_headnet_on_gimo.sh
```
Train HeadNet on Kinpoly-Realworld.
```
sh scripts/train_headnet_on_kinpoly.sh
```
### Citation
```
@inproceedings{li2023ego,
title={Ego-Body Pose Estimation via Ego-Head Pose Estimation},
author={Li, Jiaman and Liu, Karen and Wu, Jiajun},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={17142--17151},
year={2023}
}
```
### Related Repos
We adapted some code from other repos in data processing, learning, evaluation, etc. Please check these useful repos.
```
https://github.com/lucidrains/denoising-diffusion-pytorch
https://github.com/davrempe/humor
https://github.com/KlabCMU/kin-poly
https://github.com/jihoonerd/Conditional-Motion-In-Betweening
https://github.com/lijiaman/motion_transformer
```
Owner
- Name: SZU-AdvTech-2024
- Login: SZU-AdvTech-2024
- Kind: organization
- Repositories: 1
- Profile: https://github.com/SZU-AdvTech-2024
Citation (citation.txt)
@inproceedings{REPO321,
author = "Li, Jiaman and Liu, Karen and Wu, Jiajun",
booktitle = "Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)",
month = "June",
pages = "17142-17151",
title = "{Ego-Body Pose Estimation via Ego-Head Pose Estimation}",
year = "2023"
}
GitHub Events
Total
- Push event: 3
- Create event: 3
Last Year
- Push event: 3
- Create event: 3