พื้นที่เก็บข้อมูลนี้มีรหัสการฝึกอบรมสำหรับการประมาณค่าการประมาณแบบหลายบุคคลแบบเรียลไทม์ 2D แบบเรียลไทม์บน CPU: OpenPose ที่มีน้ำหนักเบา งานนี้ปรับวิธีการเปิดโล่งอย่างหนักเพื่อให้ได้การอนุมานแบบเรียลไทม์ของซีพียูด้วยการลดลงของความแม่นยำที่ถูกทอดทิ้ง มันตรวจพบโครงกระดูก (ซึ่งประกอบด้วยจุดสำคัญและการเชื่อมต่อระหว่างพวกเขา) เพื่อระบุท่าโพสท่าสำหรับทุกคนในภาพ ท่านี้อาจมีคีย์พอยท์ได้ถึง 18 จุด: หู, ดวงตา, จมูก, คอ, ไหล่, ข้อศอก, ข้อมือ, สะโพก, หัวเข่าและข้อเท้า บน COCO 2017 การตรวจสอบการตรวจจับ Keypoint ชุดรหัสนี้ทำให้เกิด AP 40% สำหรับการอนุมานระดับเดียว (ไม่มีการพลิกหรือการประมวลผลหลังการทำ) ผลลัพธ์สามารถทำซ้ำได้โดยใช้ที่เก็บนี้ repo นี้ซ้อนทับกันอย่างมีนัยสำคัญกับ https://github.com/opencv/openvino_training_extensions อย่างไรก็ตามมีเพียงรหัสที่จำเป็นสำหรับการประเมินท่าทางมนุษย์

ตรวจสอบผลงานใหม่ของเราเกี่ยวกับการประมาณ ค่า โพสต์เดี่ยวที่ถูกต้อง
ตรวจสอบการประมาณ 3 มิติที่มีน้ำหนักเบาของเราซึ่งขึ้นอยู่กับการประมาณ 3 มิติแบบพหุคูณแบบหลายคนนัดเดียวจากกระดาษ RGB แบบตาข้างเดียวและงานนี้
<COCO_HOME>pip install -r requirements.txt การฝึกอบรมประกอบด้วย 3 ขั้นตอน (กำหนดค่า AP สำหรับชุดข้อมูลการตรวจสอบเต็มรูปแบบ):
ดาวน์โหลด Mobilenet V1 ที่ผ่านการฝึกอบรมมาแล้ว mobilenet_sgd_68.848.pth.tar จาก: https://github.com/marvis/pytorch-mobilenet (ตัวเลือก SGD) หากสิ่งนี้ไม่ทำงานให้ดาวน์โหลดจาก GoogleDrive
แปลงคำอธิบายประกอบรถไฟในรูปแบบภายใน เรียกใช้ python scripts/prepare_train_labels.py --labels <COCO_HOME>/annotations/person_keypoints_train2017.json มันจะผลิต prepared_train_annotation.pkl พร้อมแปลงในคำอธิบายประกอบรูปแบบภายใน
[ไม่บังคับ] สำหรับการตรวจสอบอย่างรวดเร็วขอแนะนำให้ทำ ชุด ข้อมูลการตรวจสอบความถูกต้อง เรียกใช้ python scripts/make_val_subset.py --labels <COCO_HOME>/annotations/person_keypoints_val2017.json มันจะผลิต val_subset.json พร้อมคำอธิบายประกอบเพียง 250 ภาพสุ่ม (จาก 5,000)
ในการฝึกฝนจากน้ำหนัก Mobilenet ให้ใช้ python train.py --train-images-folder <COCO_HOME>/train2017/ --prepared-train-labels prepared_train_annotation.pkl --val-labels val_subset.json --val-images-folder <COCO_HOME>/val2017/ --checkpoint-path <path_to>/mobilenet_sgd_68.848.pth.tar --from-mobilenet
ถัดไปเพื่อฝึกฝนจากจุดตรวจจากขั้นตอนก่อนหน้าใช้ python train.py --train-images-folder <COCO_HOME>/train2017/ --prepared-train-labels prepared_train_annotation.pkl --val-labels val_subset.json --val-images-folder <COCO_HOME>/val2017/ --checkpoint-path <path_to>/checkpoint_iter_420000.pth --weights-only
ในที่สุดการฝึกอบรมจากจุดตรวจจากขั้นตอนก่อนหน้าและ 3 ขั้นตอนการปรับแต่งในเครือข่ายใช้ python train.py --train-images-folder <COCO_HOME>/train2017/ --prepared-train-labels prepared_train_annotation.pkl --val-labels val_subset.json --val-images-folder <COCO_HOME>/val2017/ --checkpoint-path <path_to>/checkpoint_iter_280000.pth --weights-only --num-refinement-stages 3 เราใช้จุดตรวจหลังจากการทำซ้ำ 370000 เป็นจุดสุดท้าย
เราไม่ได้ทำการเลือกจุดตรวจสอบที่ดีที่สุดในทุกขั้นตอนดังนั้นผลลัพธ์ที่คล้ายกันอาจเกิดขึ้นได้หลังจากการวนซ้ำจำนวนน้อยลง
เราสังเกตข้อผิดพลาดนี้ด้วยจำนวนสูงสุดของไฟล์เปิด ( ulimit -n ) เท่ากับ 1024:
File "train.py", line 164, in <module>
args.log_after, args.val_labels, args.val_images_folder, args.val_output_name, args.checkpoint_after, args.val_after)
File "train.py", line 77, in train
for _, batch_data in enumerate(train_loader):
File "/<path>/python3.6/site-packages/torch/utils/data/dataloader.py", line 330, in __next__
idx, batch = self._get_batch()
File "/<path>/python3.6/site-packages/torch/utils/data/dataloader.py", line 309, in _get_batch
return self.data_queue.get()
File "/<path>/python3.6/multiprocessing/queues.py", line 337, in get
return _ForkingPickler.loads(res)
File "/<path>/python3.6/site-packages/torch/multiprocessing/reductions.py", line 151, in rebuild_storage_fd
fd = df.detach()
File "/<path>/python3.6/multiprocessing/resource_sharer.py", line 58, in detach
return reduction.recv_handle(conn)
File "/<path>/python3.6/multiprocessing/reduction.py", line 182, in recv_handle
return recvfds(s, 1)[0]
File "/<path>/python3.6/multiprocessing/reduction.py", line 161, in recvfds
len(ancdata))
RuntimeError: received 0 items of ancdata
ในการกำจัดมันเพิ่มขีด จำกัด เป็นจำนวนที่ใหญ่ขึ้นเช่น 65536 ทำงานในเทอร์มินัล: ulimit -n 65536
python val.py --labels <COCO_HOME>/annotations/person_keypoints_val2017.json --images-folder <COCO_HOME>/val2017 --checkpoint-path <CHECKPOINT> แบบจำลองคาดว่าภาพปกติ (หมายถึง = [128, 128, 128], Scale = [1/256, 1/256, 1/256]) ในรูปแบบ BGR แบบระนาบ ได้รับการฝึกอบรมล่วงหน้าเกี่ยวกับโมเดล Coco ที่: https://download.01.org/opencv/openvino_training_extensions/models/human_pose_estimation/checkpoint_iter_370000.pth มี AP 40% ในการตรวจสอบ Coco
python scripts/convert_to_onnx.py --checkpoint-path <CHECKPOINT> มันสร้าง human-pose-estimation.onnxpython <OpenVINO_INSTALL_DIR>/deployment_tools/model_optimizer/mo.py --input_model human-pose-estimation.onnx --input data --mean_values data[128.0,128.0,128.0] --scale_values data[256] --output stage_1_output_0_pafs,stage_1_output_1_heatmaps สิ่งนี้สร้างแบบจำลอง human-pose-estimation.xml และน้ำหนัก human-pose-estimation.bin ในรูปแบบลอยความแม่นยำเดียว (FP32) การสาธิต C ++ สามารถพบได้ในชุดเครื่องมือIntel® OpenVino ™แบบจำลองที่สอดคล้องกันคือ human-pose-estimation-0001 โปรดทำตามคำแนะนำอย่างเป็นทางการเพื่อเรียกใช้
เราให้การสาธิต Python เพื่อดูตัวอย่างอย่างรวดเร็ว โปรดพิจารณาการสาธิต C ++ เพื่อประสิทธิภาพที่ดีที่สุด เพื่อเรียกใช้การสาธิต Python จากเว็บแคม:
python demo.py --checkpoint-path <path_to>/checkpoint_iter_370000.pth --video 0 หากสิ่งนี้ช่วยวิจัยของคุณโปรดอ้างอิงกระดาษ:
@inproceedings{osokin2018lightweight_openpose,
author={Osokin, Daniil},
title={Real-time 2D Multi-Person Pose Estimation on CPU: Lightweight OpenPose},
booktitle = {arXiv preprint arXiv:1811.12004},
year = {2018}
}