该存储库包含有关纸张实时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}
}