Esta é uma implementação oficial do pytorch de linhas de base simples para estimativa e rastreamento de pose humana . Este trabalho fornece métodos básicos que são surpreendentemente simples e eficazes, úteis para inspirar e avaliar novas ideias para a área. Resultados de última geração são alcançados em benchmarks desafiadores. No conjunto de dados válido de pontos-chave COCO, nosso melhor modelo único atinge 74,3 de mAP . Você pode reproduzir nossos resultados usando este repositório. Todos os modelos são fornecidos para fins de pesquisa.
Arco | Cabeça | Ombro | Cotovelo | Pulso | Quadril | Joelho | Tornozelo | Significar | Média@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 |
Arco | PA | Ap.5 | PA 0,75 | PA (M) | AP (L) | RA | AR .5 | AR 0,75 | BRAÇO) | 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 | PA | Ap.5 | PA 0,75 | PA (M) | AP (L) | RA | AR .5 | AR 0,75 | BRAÇO) | 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 |
O código é desenvolvido usando python 3.6 no Ubuntu 16.04. GPUs NVIDIA são necessárias. O código é desenvolvido e testado usando 4 placas GPU NVIDIA P100. Outras plataformas ou placas GPU não foram totalmente testadas.
Instale o pytorch >= v0.4.0 seguindo as instruções oficiais.
Desative 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
Observe que instruções como # PYTORCH=/path/to/pytorch indicam que você deve escolher um caminho onde gostaria de instalar o pytorch e, em seguida, definir uma variável de ambiente (PYTORCH neste caso) de acordo.
Clone este repositório e chamaremos o diretório que você clonou como ${POSE_ROOT}.
Instale dependências:
pip install -r requirements.txt
Faça bibliotecas:
cd ${POSE_ROOT}/lib
make
Instale 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
Observe que instruções como # COCOAPI=/path/to/install/cocoapi indicam que você deve escolher um caminho onde gostaria de clonar o software e, em seguida, definir uma variável de ambiente (COCOAPI neste caso) de acordo.
Baixe modelos pré-treinados pytorch imagenet do pytorch model zoo e modelos pré-treinados estilo caffe do GoogleDrive.
Baixe modelos pré-treinados mpii e coco do OneDrive ou GoogleDrive. Faça o download deles em ${POSE_ROOT}/models/pytorch e deixe-os assim:
${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
Diretório de saída init (diretório de saída do modelo de treinamento) e log (diretório de log do tensorboard):
mkdir output
mkdir log
Sua árvore de diretórios deve ficar assim:
${POSE_ROOT}
├── data
├── experiments
├── lib
├── log
├── models
├── output
├── pose_estimation
├── README.md
└── requirements.txt
Para dados MPII , faça download do conjunto de dados MPII Human Pose. Os arquivos de anotação originais estão no formato matlab. Nós os convertemos para o formato json, você também precisa baixá-los do OneDrive ou GoogleDrive. Extraia-os em {POSE_ROOT}/data e deixe-os assim:
${POSE_ROOT}
|-- data
`-- |-- mpii
`-- |-- annot
| |-- gt_valid.mat
| |-- test.json
| |-- train.json
| |-- trainval.json
| `-- valid.json
`-- images
|-- 000001163.jpg
|-- 000003072.jpg
Para dados COCO , faça o download em download COCO, 2017 Train/Val é necessário para treinamento e validação de pontos-chave COCO. Também fornecemos o resultado de detecção de pessoas do COCO val2017 para reproduzir nossos resultados de estimativa de pose de várias pessoas. Faça download do OneDrive ou GoogleDrive. Baixe e extraia-os em {POSE_ROOT}/data e deixe-os assim:
${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
Se você usar nosso código ou modelos em sua pesquisa, cite com:
@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}
}