これは、人間の姿勢の推定と追跡のための単純なベースラインの公式 pytorch 実装です。この研究は、驚くほどシンプルで効果的なベースライン手法を提供するため、この分野の新しいアイデアをインスピレーションおよび評価するのに役立ちます。困難なベンチマークでも最先端の結果が得られます。 COCO キーポイントの有効なデータセットでは、最良の単一モデルは74.3 の mAP を達成しました。このリポジトリを使用して結果を再現できます。すべてのモデルは研究目的で提供されています。
アーチ | 頭 | ショルダー | 肘 | 手首 | ヒップ | 膝 | 足首 | 平均 | 平均@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 |
アーチ | AP | AP.5 | AP .75 | AP(男) | AP(大) | AR | AR.5 | AR .75 | AR(男) | AR(大) |
---|---|---|---|---|---|---|---|---|---|---|
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 |
アーチ | AP | AP.5 | AP .75 | AP(男) | AP(大) | AR | AR.5 | AR .75 | AR(男) | AR(大) |
---|---|---|---|---|---|---|---|---|---|---|
256x192_pose_resnet_50_カフェ_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_カフェ_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_カフェ_d256d256d256 | 0.728 | 0.925 | 0.804 | 0.702 | 0.766 | 0.760 | 0.931 | 0.828 | 0.729 | 0.806 |
コードは、Ubuntu 16.04 上の Python 3.6 を使用して開発されています。 NVIDIA GPU が必要です。コードは 4 枚の NVIDIA P100 GPU カードを使用して開発およびテストされています。他のプラットフォームまたは GPU カードは完全にはテストされていません。
公式の指示に従って、pytorch >= v0.4.0 をインストールします。
Batch_norm の cudnn を無効にします。
# 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
# PYTORCH=/path/to/pytorch のような命令は、pytorch をインストールするパスを選択し、それに応じて環境変数 (この場合は PYTORCH) を設定する必要があることを示していることに注意してください。
このリポジトリのクローンを作成します。クローンを作成したディレクトリを ${POSE_ROOT} と呼びます。
依存関係をインストールします。
pip install -r requirements.txt
ライブラリを作成します。
cd ${POSE_ROOT}/lib
make
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
# COCOAPI=/path/to/install/cocoapi のような指示は、ソフトウェアを複製するパスを選択し、それに応じて環境変数 (この場合は COCOAPI) を設定する必要があることを示していることに注意してください。
pytorch imagenet の事前トレーニング済みモデルを pytorch Model Zoo からダウンロードし、Caffe スタイルの事前トレーニング済みモデルを GoogleDrive からダウンロードします。
mpii および coco の事前トレーニング済みモデルを OneDrive または GoogleDrive からダウンロードします。これらを ${POSE_ROOT}/models/pytorch にダウンロードし、次のようにしてください。
${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 出力 (トレーニング モデルの出力ディレクトリ) とログ (tensorboard ログ ディレクトリ) ディレクトリ:
mkdir output
mkdir log
ディレクトリ ツリーは次のようになります。
${POSE_ROOT}
├── data
├── experiments
├── lib
├── log
├── models
├── output
├── pose_estimation
├── README.md
└── requirements.txt
MPIIデータはMPII Human Pose Datasetからダウンロードしてください。元の注釈ファイルは matlab 形式です。これらは json 形式に変換されています。OneDrive または GoogleDrive からダウンロードする必要もあります。これらを {POSE_ROOT}/data の下に抽出し、次のようにします。
${POSE_ROOT}
|-- data
`-- |-- mpii
`-- |-- annot
| |-- gt_valid.mat
| |-- test.json
| |-- train.json
| |-- trainval.json
| `-- valid.json
`-- images
|-- 000001163.jpg
|-- 000003072.jpg
COCO データについては、COCO ダウンロードからダウンロードしてください。COCO キーポイントのトレーニングと検証には 2017 Train/Val が必要です。複数人の姿勢推定結果を再現するために、COCO val2017の人物検出結果も提供します。 OneDriveまたはGoogleDriveからダウンロードしてください。これらをダウンロードして {POSE_ROOT}/data の下に抽出し、次のようにします。
${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
研究で私たちのコードやモデルを使用した場合は、次のように引用してください。
@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}
}