이는 인간 자세 추정 및 추적을 위한 Simple Baselines 의 공식 파이토치 구현입니다. 이 작업은 놀랍도록 간단하고 효과적인 기본 방법을 제공하므로 해당 분야에 대한 새로운 아이디어를 고무하고 평가하는 데 도움이 됩니다. 까다로운 벤치마크에서 최고의 결과를 얻었습니다. COCO 키포인트 유효한 데이터 세트에서 최고의 단일 모델은 mAP 74.3을 달성합니다. 이 저장소를 사용하여 결과를 재현할 수 있습니다. 모든 모델은 연구 목적으로 제공됩니다.
아치 | 머리 | 어깨 | 팔꿈치 | 손목 | 잘 알고 있기 | 무릎 | 발목 | 평균 | 평균@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 .5 | AR .75 | 팔) | 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 .5 | AR .75 | 팔) | 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 model Zoo에서 pytorch imagenet 사전 학습된 모델을 다운로드하고 GoogleDrive에서 카페 스타일 사전 학습된 모델을 다운로드하세요.
OneDrive 또는 GoogleDrive에서 mpii 및 coco 사전 학습된 모델을 다운로드하세요. ${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
초기화 출력(훈련 모델 출력 디렉터리) 및 로그(텐서보드 로그 디렉터리) 디렉터리:
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}
}