Il s'agit d'une implémentation officielle de pytorch de Simple Baselines for Human Pose Estimation and Tracking . Ce travail fournit des méthodes de base étonnamment simples et efficaces, donc utiles pour inspirer et évaluer de nouvelles idées dans le domaine. Des résultats de pointe sont obtenus sur des critères de référence exigeants. Sur l'ensemble de données valide des points clés COCO, notre meilleur modèle unique atteint 74,3 de mAP . Vous pouvez reproduire nos résultats en utilisant ce dépôt. Tous les modèles sont fournis à des fins de recherche.
Cambre | Tête | Épaule | Coude | Poignet | Hanche | Genou | Cheville | Signifier | Moyenne à 0,1 |
---|---|---|---|---|---|---|---|---|---|
256x256_pose_resnet_50_d256d256d256 | 96.351 | 95.329 | 88.989 | 83.176 | 88.420 | 83.960 | 79.594 | 88.532 | 33.911 |
384x384_pose_resnet_50_d256d256d256 | 96.658 | 95.754 | 89.790 | 84.614 | 88.523 | 84.666 | 79.287 | 89.066 | 38.046 |
256x256_pose_resnet_101_d256d256d256 | 96.862 | 95.873 | 89.518 | 84.376 | 88.437 | 84.486 | 80.703 | 89.131 | 34.020 |
384x384_pose_resnet_101_d256d256d256 | 96.965 | 95.907 | 90.268 | 85.780 | 89.597 | 85.935 | 82.098 | 90.003 | 38.860 |
256x256_pose_resnet_152_d256d256d256 | 97.033 | 95.941 | 90.046 | 84.976 | 89.164 | 85.311 | 81.271 | 89.620 | 35.025 |
384x384_pose_resnet_152_d256d256d256 | 96.794 | 95.618 | 90.080 | 86.225 | 89.700 | 86.862 | 82.853 | 90.200 | 39.433 |
Cambre | PA | Ap.5 | AP.75 | PA (M) | PA (L) | RA | AR.5 | AR .75 | BRAS) | AR (L) |
---|---|---|---|---|---|---|---|---|---|---|
256x192_pose_resnet_50_d256d256d256 | 0,704 | 0,886 | 0,783 | 0,671 | 0,772 | 0,763 | 0,929 | 0,834 | 0,721 | 0,824 |
384x288_pose_resnet_50_d256d256d256 | 0,722 | 0,893 | 0,789 | 0,681 | 0,797 | 0,776 | 0,932 | 0,838 | 0,728 | 0,846 |
256x192_pose_resnet_101_d256d256d256 | 0,714 | 0,893 | 0,793 | 0,681 | 0,781 | 0,771 | 0,934 | 0,840 | 0,730 | 0,832 |
384x288_pose_resnet_101_d256d256d256 | 0,736 | 0,896 | 0,803 | 0,699 | 0,811 | 0,791 | 0,936 | 0,851 | 0,745 | 0,858 |
256x192_pose_resnet_152_d256d256d256 | 0,720 | 0,893 | 0,798 | 0,687 | 0,789 | 0,778 | 0,934 | 0,846 | 0,736 | 0,839 |
384x288_pose_resnet_152_d256d256d256 | 0,743 | 0,896 | 0,811 | 0,705 | 0,816 | 0,797 | 0,937 | 0,858 | 0,751 | 0,863 |
Cambre | PA | Ap.5 | AP.75 | PA (M) | PA (L) | RA | AR.5 | AR .75 | BRAS) | AR (L) |
---|---|---|---|---|---|---|---|---|---|---|
256x192_pose_resnet_50_ café _d256d256d256 | 0,704 | 0,914 | 0,782 | 0,677 | 0,744 | 0,735 | 0,921 | 0,805 | 0,704 | 0,783 |
256x192_pose_resnet_101_ café _d256d256d256 | 0,720 | 0,915 | 0,803 | 0,693 | 0,764 | 0,753 | 0,928 | 0,821 | 0,720 | 0,802 |
256x192_pose_resnet_152_ café _d256d256d256 | 0,728 | 0,925 | 0,804 | 0,702 | 0,766 | 0,760 | 0,931 | 0,828 | 0,729 | 0,806 |
Le code est développé en utilisant python 3.6 sur Ubuntu 16.04. Des GPU NVIDIA sont nécessaires. Le code est développé et testé à l'aide de 4 cartes GPU NVIDIA P100. Les autres plates-formes ou cartes GPU ne sont pas entièrement testées.
Installez pytorch >= v0.4.0 en suivant les instructions officielles.
Désactivez cudnn pour batch_norm :
# PYTORCH=/path/to/pytorch
# for pytorch v0.4.0
sed -i "1194s/torch.backends.cudnn.enabled/False/g" ${PYTORCH}/torch/nn/functional.py
# for pytorch v0.4.1
sed -i "1254s/torch.backends.cudnn.enabled/False/g" ${PYTORCH}/torch/nn/functional.py
Notez que des instructions telles que # PYTORCH=/path/to/pytorch indiquent que vous devez choisir un chemin sur lequel vous souhaitez installer pytorch, puis définir une variable d'environnement (PYTORCH dans ce cas) en conséquence.
Clonez ce dépôt et nous appellerons le répertoire que vous avez cloné comme ${POSE_ROOT}.
Installer les dépendances :
pip install -r requirements.txt
Créez des bibliothèques :
cd ${POSE_ROOT}/lib
make
Installez COCOAPI :
# COCOAPI=/path/to/clone/cocoapi
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd $COCOAPI/PythonAPI
# Install into global site-packages
make install
# Alternatively, if you do not have permissions or prefer
# not to install the COCO API into global site-packages
python3 setup.py install --user
Notez que des instructions telles que # COCOAPI=/path/to/install/cocoapi indiquent que vous devez choisir un chemin où vous souhaitez cloner le logiciel, puis définir une variable d'environnement (COCOAPI dans ce cas) en conséquence.
Téléchargez les modèles pré-entraînés pytorch imagenet à partir du zoo de modèles pytorch et les modèles pré-entraînés de style caffe à partir de GoogleDrive.
Téléchargez les modèles pré-entraînés mpii et coco depuis OneDrive ou GoogleDrive. Veuillez les télécharger sous ${POSE_ROOT}/models/pytorch et faire en sorte qu'ils ressemblent à ceci :
${POSE_ROOT}
`-- models
`-- pytorch
|-- imagenet
| |-- resnet50-19c8e357.pth
| |-- resnet50-caffe.pth.tar
| |-- resnet101-5d3b4d8f.pth
| |-- resnet101-caffe.pth.tar
| |-- resnet152-b121ed2d.pth
| `-- resnet152-caffe.pth.tar
|-- pose_coco
| |-- pose_resnet_101_256x192.pth.tar
| |-- pose_resnet_101_384x288.pth.tar
| |-- pose_resnet_152_256x192.pth.tar
| |-- pose_resnet_152_384x288.pth.tar
| |-- pose_resnet_50_256x192.pth.tar
| `-- pose_resnet_50_384x288.pth.tar
`-- pose_mpii
|-- pose_resnet_101_256x256.pth.tar
|-- pose_resnet_101_384x384.pth.tar
|-- pose_resnet_152_256x256.pth.tar
|-- pose_resnet_152_384x384.pth.tar
|-- pose_resnet_50_256x256.pth.tar
`-- pose_resnet_50_384x384.pth.tar
Sortie d'initialisation (répertoire de sortie du modèle de formation) et répertoire log (répertoire des journaux Tensorboard) :
mkdir output
mkdir log
Votre arborescence de répertoires devrait ressembler à ceci :
${POSE_ROOT}
├── data
├── experiments
├── lib
├── log
├── models
├── output
├── pose_estimation
├── README.md
└── requirements.txt
Pour les données MPII , veuillez les télécharger à partir de l'ensemble de données MPII Human Pose. Les fichiers d'annotations originaux sont au format matlab. Nous les avons convertis au format json, vous devez également les télécharger depuis OneDrive ou GoogleDrive. Extrayez-les sous {POSE_ROOT}/data et faites-les ressembler à ceci :
${POSE_ROOT}
|-- data
`-- |-- mpii
`-- |-- annot
| |-- gt_valid.mat
| |-- test.json
| |-- train.json
| |-- trainval.json
| `-- valid.json
`-- images
|-- 000001163.jpg
|-- 000003072.jpg
Pour les données COCO , veuillez télécharger à partir du téléchargement COCO, 2017 Train/Val est nécessaire pour la formation et la validation des points clés COCO. Nous fournissons également le résultat de détection de personne de COCO val2017 pour reproduire nos résultats d'estimation de pose multi-personnes. Veuillez télécharger depuis OneDrive ou GoogleDrive. Téléchargez-les et extrayez-les sous {POSE_ROOT}/data, et faites-les ressembler à ceci :
${POSE_ROOT}
|-- data
`-- |-- coco
`-- |-- annotations
| |-- person_keypoints_train2017.json
| `-- person_keypoints_val2017.json
|-- person_detection_results
| |-- COCO_val2017_detections_AP_H_56_person.json
`-- images
|-- train2017
| |-- 000000000009.jpg
| |-- 000000000025.jpg
| |-- 000000000030.jpg
| |-- ...
`-- val2017
|-- 000000000139.jpg
|-- 000000000285.jpg
|-- 000000000632.jpg
|-- ...
python pose_estimation/valid.py
--cfg experiments/mpii/resnet50/256x256_d256x3_adam_lr1e-3.yaml
--flip-test
--model-file models/pytorch/pose_mpii/pose_resnet_50_256x256.pth.tar
python pose_estimation/train.py
--cfg experiments/mpii/resnet50/256x256_d256x3_adam_lr1e-3.yaml
python pose_estimation/valid.py
--cfg experiments/coco/resnet50/256x192_d256x3_adam_lr1e-3.yaml
--flip-test
--model-file models/pytorch/pose_coco/pose_resnet_50_256x192.pth.tar
python pose_estimation/train.py
--cfg experiments/coco/resnet50/256x192_d256x3_adam_lr1e-3.yaml
Si vous utilisez notre code ou nos modèles dans votre recherche, veuillez citer avec :
@inproceedings{xiao2018simple,
author={Xiao, Bin and Wu, Haiping and Wei, Yichen},
title={Simple Baselines for Human Pose Estimation and Tracking},
booktitle = {European Conference on Computer Vision (ECCV)},
year = {2018}
}