該存儲庫包含有關紙張實時2D多人姿勢估算CPU:輕量級openpose的培訓代碼。這項工作大大優化了開放式方法,以可忽視的精度下降,以實現對CPU的實時推斷。它檢測到一個骨骼(由它們之間的關鍵點和連接組成),以識別圖像中每個人的人類姿勢。姿勢可能包含多達18個關鍵點:耳朵,眼睛,鼻子,脖子,肩膀,肘部,手腕,臀部,膝蓋和腳踝。在可可2017年關鍵點檢測驗證設置上,該代碼可實現單個刻度推斷的40%AP(無翻轉或任何後處理)。可以使用此存儲庫來複製結果。該回購與https://github.com/opencv/openvino_training_extensions大大重疊,但是僅包含人類姿勢估計的必要代碼。

查看我們關於準確(且仍然很快)的單人姿勢估計的新工作,該姿勢估計在CVPR'19上排名第10位。
查看我們的輕質3D姿勢估計,該估計基於單眼RGB紙和這項工作的單次多人物3D姿勢估計。
<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 _train_annotation.pkl。
[可選]用於快速驗證,建議將驗證數據集的子集。運行python scripts/make_val_subset.py --labels <COCO_HOME>/annotations/person_keypoints_val2017.json 。它將產生val_subset.json ,帶註釋僅適用於250個隨機圖像(5000中)。
要從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> 該模型期望平面BGR格式期望標準化圖像(平均= [128,128,128],比例= [1/256,1/256,1/256])。可可在COCO模型上進行預訓練,網址為:https://download.01.org/opencv/openvino_training_extensions/models/models/human_pose_estimation/checkpoint_itter_370000.pth,它具有ap ap on Apset的aps ap on Apset的40%。
python scripts/convert_to_onnx.py --checkpoint-path <CHECKPOINT> 。它產生human-pose-estimation.onnx 。python <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並在單精度浮點格式(FP32)中加權human-pose-estimation.bin 。 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}
}