Esta es una implementación oficial de pytorch de Líneas de base simples para la estimación y el seguimiento de la pose humana . Este trabajo proporciona métodos básicos que son sorprendentemente simples y efectivos, por lo que son útiles para inspirar y evaluar nuevas ideas para el campo. Se logran resultados de última generación en puntos de referencia desafiantes. En el conjunto de datos válido de puntos clave de COCO, nuestro mejor modelo único alcanza 74,3 de mAP . Puede reproducir nuestros resultados utilizando este repositorio. Todos los modelos se proporcionan con fines de investigación.
Arco | Cabeza | Hombro | Codo | Muñeca | Cadera | Rodilla | Tobillo | Significar | [email protected] |
---|---|---|---|---|---|---|---|---|---|
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 |
Arco | AP | Ap.5 | AP .75 | PA (M) | PA (L) | Arkansas | AR .5 | AR .75 | BRAZO) | 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 |
Arco | AP | Ap.5 | AP .75 | PA (M) | AP (L) | Arkansas | AR .5 | AR .75 | BRAZO) | AR (L) |
---|---|---|---|---|---|---|---|---|---|---|
256x192_pose_resnet_50_caffe _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_caffe _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_caffe _d256d256d256 | 0,728 | 0,925 | 0.804 | 0.702 | 0.766 | 0.760 | 0.931 | 0,828 | 0,729 | 0.806 |
El código se desarrolla utilizando Python 3.6 en Ubuntu 16.04. Se necesitan GPU NVIDIA. El código se desarrolla y prueba utilizando 4 tarjetas GPU NVIDIA P100. Otras plataformas o tarjetas GPU no se prueban completamente.
Instale pytorch >= v0.4.0 siguiendo las instrucciones oficiales.
Deshabilite cudnn para 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
Tenga en cuenta que instrucciones como # PYTORCH=/path/to/pytorch indican que debe elegir una ruta donde le gustaría instalar pytorch y luego configurar una variable de entorno (PYTORCH en este caso) en consecuencia.
Clona este repositorio y llamaremos al directorio que clonaste como ${POSE_ROOT}.
Instalar dependencias:
pip install -r requirements.txt
Hacer bibliotecas:
cd ${POSE_ROOT}/lib
make
Instalar 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
Tenga en cuenta que instrucciones como # COCOAPI=/path/to/install/cocoapi indican que debe elegir una ruta donde le gustaría clonar el software y luego configurar una variable de entorno (COCOAPI en este caso) en consecuencia.
Descargue modelos preentrenados de pytorch imagenet de pytorch model zoo y modelos preentrenados estilo caffe de GoogleDrive.
Descargue modelos previamente entrenados de mpii y coco desde OneDrive o GoogleDrive. Descárgalos en ${POSE_ROOT}/models/pytorch y haz que se vean así:
${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
Directorio de salida de inicio (directorio de salida del modelo de entrenamiento) y registro (directorio de registro de tensorboard):
mkdir output
mkdir log
Su árbol de directorios debería verse así:
${POSE_ROOT}
├── data
├── experiments
├── lib
├── log
├── models
├── output
├── pose_estimation
├── README.md
└── requirements.txt
Para obtener datos MPII , descárguelos desde MPII Human Pose Dataset. Los archivos de anotaciones originales están en formato matlab. Los hemos convertido a formato json, también necesitas descargarlos desde OneDrive o GoogleDrive. Extráelos en {POSE_ROOT}/data y haz que se vean así:
${POSE_ROOT}
|-- data
`-- |-- mpii
`-- |-- annot
| |-- gt_valid.mat
| |-- test.json
| |-- train.json
| |-- trainval.json
| `-- valid.json
`-- images
|-- 000001163.jpg
|-- 000003072.jpg
Para obtener datos de COCO , descárguelos desde Descarga de COCO. Se necesita Train/Val 2017 para la capacitación y validación de los puntos clave de COCO. También proporcionamos el resultado de detección de personas de COCO val2017 para reproducir nuestros resultados de estimación de pose de varias personas. Descargue desde OneDrive o GoogleDrive. Descárgalos y extráelos en {POSE_ROOT}/data y haz que se vean así:
${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 utiliza nuestro código o modelos en su investigación, cite con:
@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}
}