นี่คือการนำ pytorch ไปใช้อย่างเป็นทางการของ Simple Baselines สำหรับการประมาณค่าและการติดตามท่าทางของมนุษย์ งานนี้นำเสนอวิธีการพื้นฐานที่เรียบง่ายและมีประสิทธิภาพอย่างน่าประหลาดใจ ซึ่งเป็นประโยชน์ในการสร้างแรงบันดาลใจและประเมินแนวคิดใหม่ๆ สำหรับสาขานั้น ผลลัพธ์ที่ล้ำสมัยนั้นเกิดขึ้นได้จากเกณฑ์มาตรฐานที่ท้าทาย บนชุดข้อมูลที่ถูกต้องของจุดสำคัญของ COCO โมเดลเดี่ยว ที่ดีที่สุดของเราบรรลุ 74.3 ของ mAP คุณสามารถทำซ้ำผลลัพธ์ของเราได้โดยใช้ repo นี้ ทุกรุ่นมีไว้เพื่อการวิจัย
โค้ง | ศีรษะ | ไหล่ | ข้อศอก | ข้อมือ | สะโพก | เข่า | ข้อเท้า | หมายถึง | ค่าเฉลี่ย@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 |
โค้ง | เอพี | แอพ.5 | อพ.75 | เอพี (ม) | เอพี (ญ) | เออาร์ | เออาร์ .5 | เออาร์ .75 | แขน) | เออาร์ (ญ) |
---|---|---|---|---|---|---|---|---|---|---|
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 |
โค้ง | เอพี | แอพ.5 | อพ.75 | เอพี (ม) | เอพี (ญ) | เออาร์ | เออาร์ .5 | เออาร์ .75 | แขน) | เออาร์ (ญ) |
---|---|---|---|---|---|---|---|---|---|---|
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 |
รหัสนี้ได้รับการพัฒนาโดยใช้ python 3.6 บน Ubuntu 16.04 จำเป็นต้องมี NVIDIA GPU รหัสได้รับการพัฒนาและทดสอบโดยใช้การ์ด NVIDIA P100 GPU 4 ใบ แพลตฟอร์มหรือการ์ด GPU อื่นๆ ยังไม่ได้รับการทดสอบอย่างสมบูรณ์
ติดตั้ง pytorch >= v0.4.0 ตามคำแนะนำอย่างเป็นทางการ
ปิดการใช้งาน cudnn สำหรับ batt_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
โปรดทราบว่าคำแนะนำเช่น # PYTORCH=/path/to/pytorch ระบุว่าคุณควรเลือกเส้นทางที่คุณต้องการให้ pytorch ติดตั้ง จากนั้นตั้งค่าตัวแปรสภาพแวดล้อม (PYTORCH ในกรณีนี้) ตามนั้น
โคลนที่เก็บนี้ และเราจะเรียกไดเรกทอรีที่คุณโคลนเป็น ${POSE_ROOT}
ติดตั้งการพึ่งพา:
pip install -r requirements.txt
ทำ libs:
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 และโมเดลฝึกหัดแบบ 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
ไดเรกทอรีเอาต์พุตเริ่มต้น (ไดเร็กทอรีเอาต์พุตโมเดลการฝึกอบรม) และไดเร็กทอรีบันทึก (ไดเร็กทอรีบันทึกเทนเซอร์บอร์ด):
mkdir output
mkdir log
โครงสร้างไดเร็กทอรีของคุณควรมีลักษณะดังนี้:
${POSE_ROOT}
├── data
├── experiments
├── lib
├── log
├── models
├── output
├── pose_estimation
├── README.md
└── requirements.txt
สำหรับข้อมูล MPII โปรดดาวน์โหลดจากชุดข้อมูล MPII Human Pose ไฟล์คำอธิบายประกอบต้นฉบับอยู่ในรูปแบบ 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 จำเป็นต้องใช้ Train/Val ปี 2017 สำหรับการฝึกอบรมและการตรวจสอบจุดสำคัญของ COCO นอกจากนี้เรายังให้ผลการตรวจจับบุคคลของ 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}
}