このリポジトリには、Paper Real-Time 2Dマルチパーソンポーズ推定のトレーニングコードが含まれています。この作業は、OpenPoseアプローチを最適化して、無視できる精度ドロップでCPUのリアルタイム推論に到達します。それは、画像内のすべての人の人間のポーズを識別するために、スケルトン(キーポイントとそれらの間の接続で構成される)を検出します。ポーズには、耳、目、鼻、首、肩、肘、手首、腰、膝、足首など、最大18個のキーポイントが含まれている場合があります。 COCO 2017では、キーポイント検出検証セットこのコードは、単一スケールの推論に対して40%APをAChives ACHIVE(フリップまたは後処理が行われません)。結果は、このリポジトリを使用して再現できます。このレポは、https://github.com/opencv/openvino_training_extensionsと大幅に重複していますが、人間のポーズ推定に必要なコードのみが含まれています。

CVPR'19 Look-Person Challengeで10位にランクされた正確な(そしてまだ速い)シングルパーソンポーズ推定に関する新しい作業をご覧ください。
Monocular RGB Paperとこの作業からのシングルショットマルチパーソン3Dポーズ推定に基づいた、軽量の3Dポーズ推定をご覧ください。
<COCO_HOME> (Train、val、annotations)。pip install -r requirements.txtインストールしてくださいトレーニングは3つのステップで構成されています(完全な検証データセットのAP値が与えられます):
事前訓練を受けたMobileNet V1 Weights mobilenet_sgd_68.848.pth.tarのダウンロード:https://github.com/marvis/pytorch-mobilenet(sgd option)。これが機能しない場合は、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実行します。 250のランダム画像(5000のうち)のためだけに、Annotationsを使用してval_subset.jsonを生成します。
MobileNet Weightsからトレーニングするには、 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
それを取り除くには、ターミナルで実行されるEg 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]、scale = [1/256、1/256、1/256])を期待しています。ココモデルでの事前訓練は、https : //download.01.org/opencv/openvino_training_extensions/models/human_pose_estimation/checkpoint_iter_3700.pthで入手できます。
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が生成され、重量は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}
}