Dies ist eine offizielle Pytorch-Implementierung von Simple Baselines for Human Pose Estimation and Tracking . Diese Arbeit bietet grundlegende Methoden, die überraschend einfach und effektiv sind und daher hilfreich sind, um neue Ideen für das Fachgebiet zu inspirieren und zu bewerten. Auf anspruchsvollen Benchmarks werden hochmoderne Ergebnisse erzielt. Auf dem gültigen COCO-Keypoints-Datensatz erreicht unser bestes Einzelmodell einen mAP-Wert von 74,3 . Sie können unsere Ergebnisse mit diesem Repo reproduzieren. Alle Modelle werden zu Forschungszwecken bereitgestellt.
Bogen | Kopf | Schulter | Ellbogen | Handgelenk | Hüfte | Knie | Knöchel | Bedeuten | Mittelwert bei 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 |
Bogen | AP | Ap.5 | AP .75 | AP (M) | AP (L) | AR | AR .5 | AR .75 | ARM) | 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 |
Bogen | AP | Ap.5 | AP .75 | AP (M) | AP (L) | AR | AR .5 | AR .75 | ARM) | 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 |
Der Code wurde mit Python 3.6 auf Ubuntu 16.04 entwickelt. NVIDIA-GPUs werden benötigt. Der Code wird mit 4 NVIDIA P100 GPU-Karten entwickelt und getestet. Andere Plattformen oder GPU-Karten sind nicht vollständig getestet.
Installieren Sie pytorch >= v0.4.0 gemäß den offiziellen Anweisungen.
Cudnn für Batch_norm deaktivieren:
# 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
Beachten Sie, dass Anweisungen wie # PYTORCH=/path/to/pytorch darauf hinweisen, dass Sie einen Pfad auswählen sollten, in dem Pytorch installiert werden soll, und dann eine Umgebungsvariable (in diesem Fall PYTORCH) entsprechend festlegen sollten.
Klonen Sie dieses Repo und wir nennen das Verzeichnis, das Sie geklont haben, als ${POSE_ROOT}.
Abhängigkeiten installieren:
pip install -r requirements.txt
Erstellen Sie Bibliotheken:
cd ${POSE_ROOT}/lib
make
Installieren Sie 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
Beachten Sie, dass Anweisungen wie # COCOAPI=/path/to/install/cocoapi darauf hinweisen, dass Sie einen Pfad auswählen sollten, in dem die Software geklont werden soll, und dann eine Umgebungsvariable (in diesem Fall COCOAPI) entsprechend festlegen sollten.
Laden Sie vorab trainierte Pytorch-Imagenet-Modelle von Pytorch Model Zoo und vorab trainierte Caffe-Modelle von GoogleDrive herunter.
Laden Sie vorab trainierte MPII- und Coco-Modelle von OneDrive oder GoogleDrive herunter. Bitte laden Sie sie unter ${POSE_ROOT}/models/pytorch herunter und lassen Sie sie wie folgt aussehen:
${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
Init-Ausgabeverzeichnis (Ausgabeverzeichnis des Trainingsmodells) und Protokollverzeichnis (Tensorboard-Protokollverzeichnis):
mkdir output
mkdir log
Ihr Verzeichnisbaum sollte so aussehen:
${POSE_ROOT}
├── data
├── experiments
├── lib
├── log
├── models
├── output
├── pose_estimation
├── README.md
└── requirements.txt
Für MPII-Daten laden Sie bitte den MPII Human Pose Dataset herunter. Die ursprünglichen Anmerkungsdateien liegen im Matlab-Format vor. Wir haben sie in das JSON-Format konvertiert. Sie müssen sie außerdem von OneDrive oder GoogleDrive herunterladen. Extrahieren Sie sie unter {POSE_ROOT}/data und lassen Sie sie wie folgt aussehen:
${POSE_ROOT}
|-- data
`-- |-- mpii
`-- |-- annot
| |-- gt_valid.mat
| |-- test.json
| |-- train.json
| |-- trainval.json
| `-- valid.json
`-- images
|-- 000001163.jpg
|-- 000003072.jpg
Für COCO-Daten laden Sie bitte den COCO-Download herunter. 2017 Train/Val wird für das COCO-Keypoints-Training und die Validierung benötigt. Wir stellen auch die Personenerkennungsergebnisse von COCO val2017 zur Verfügung, um unsere Ergebnisse der Posenschätzung für mehrere Personen zu reproduzieren. Bitte laden Sie es von OneDrive oder GoogleDrive herunter. Laden Sie sie herunter, extrahieren Sie sie unter {POSE_ROOT}/data und lassen Sie sie so aussehen:
${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
Wenn Sie unseren Code oder unsere Modelle in Ihrer Forschung verwenden, zitieren Sie bitte Folgendes:
@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}
}