Dieses Repository enthält Trainingscode für das Papier in Echtzeit 2D Multi-Personen-Pose-Schätzung auf CPU: Leichtes Eröffnungszweck. Diese Arbeit optimiert den offenen Ansatz stark, um die Echtzeit-Schlussfolgerung auf die CPU mit nachlässigem Genauigkeitsabfall zu erreichen. Es erkennt ein Skelett (das aus Tastoint und Verbindungen zwischen ihnen besteht), um menschliche Posen für jede Person im Bild zu identifizieren. Die Pose kann bis zu 18 Tastage enthalten: Ohren, Augen, Nase, Nacken, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel. Auf Coco 2017 Tastoint Detection Validation Setzen Sie diesen Code erreicht 40% AP für die Inferenz für ein Maßstab (kein Flip oder eine Nachbearbeitung). Das Ergebnis kann mit diesem Repository reproduziert werden. Dieses Repo überschneidet sich erheblich mit https://github.com/opencv/openvino_training_extensions, enthält jedoch genau den erforderlichen Code für die Schätzung des menschlichen Pose.

Schauen Sie sich unsere neuen Arbeiten zur genauen (und immer noch schnellen) Einstellungsschätzung an, die bei der CVPR'19-Aussichtspunkte auf Platz 10 der Person rangierte.
Schauen Sie sich unsere leichte 3D-Pose-Schätzung an, die auf einer Single-Shot-3D-Pose-Schätzung aus monokularem RGB-Papier und dieser Arbeit basiert.
<COCO_HOME> Ordner aus.pip install -r requirements.txt Das Training besteht aus 3 Schritten (angegebene AP -Werte für den vollständigen Validierungsdatensatz):
Download vor trainierter Mobilenet V1 Gewichte mobilenet_sgd_68.848.pth.tar aus: https://github.com/marvis/pytorch-mobilenet (SGD-Option). Wenn dies nicht funktioniert, laden Sie von googledrive herunter.
Konvertieren Sie Zuganmerkungen im internen Format. Führen Sie python scripts/prepare_train_labels.py --labels <COCO_HOME>/annotations/person_keypoints_train2017.json . Es erzeugt prepared_train_annotation.pkl mit konvertiertem in internen Formatanmerkungen.
[Optional] Zur schnellen Validierung wird empfohlen, die Teilmenge des Validierungsdatensatzes vorzunehmen. Führen Sie python scripts/make_val_subset.py --labels <COCO_HOME>/annotations/person_keypoints_val2017.json . Es erzeugt val_subset.json mit Anmerkungen nur für 250 zufällige Bilder (von 5000).
Um aus Mobilenet-Gewichten zu trainieren, rennen Sie 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
Als nächstes trainieren Sie aus dem Checkpoint aus dem früheren Schritt 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
Um aus dem Kontrollpunkt aus dem vorherigen Schritt und 3 Verfeinerungsstadien im Netzwerk zu trainieren, betreiben Sie 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 . Wir haben nach 370000 Iterationen als endgültiger Kontrollpunkt genommen.
Wir haben bei keinem Schritt die beste Checkpoint -Auswahl durchgeführt, daher kann ein ähnliches Ergebnis nach weniger Anzahl von Iterationen erzielt werden.
Wir beobachten diesen Fehler mit der maximalen Anzahl offener Dateien ( ulimit -n ) entspricht 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
Um es loszuwerden, erhöhen Sie die Grenze auf eine größere Anzahl, z. B. 65536, im Terminal laufen: ulimit -n 65536
python val.py --labels <COCO_HOME>/annotations/person_keypoints_val2017.json --images-folder <COCO_HOME>/val2017 --checkpoint-path <CHECKPOINT> Das Modell erwartet ein normalisiertes Bild (Mittelwert = [128, 128, 128], Skala = [1/256, 1/256, 1/256]) im Planar -BGR -Format. Vorausgebildet auf dem CoCo-Modell ist verfügbar unter: https://download.01.org/opencv/openvino_training_extensions/models/human_pin_estimation/checkpoint_iter_370000.PTH, es hat 40% AP auf dem COCO-Validierungssatz (38.6% des AP- Subs ).
python scripts/convert_to_onnx.py --checkpoint-path <CHECKPOINT> . Es produziert 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 . Dies erzeugt Modell human-pose-estimation.xml und Gewichte human-pose-estimation.bin C ++-Demo finden Sie im Intel® OpenVino ™ Toolkit. Das entsprechende Modell ist human-pose-estimation-0001 . Bitte befolgen Sie die offizielle Anweisung, sie auszuführen.
Wir bieten Python -Demo nur für die schnelle Vorschau der Ergebnisse an. Bitte betrachten Sie die C ++ - Demo für die beste Leistung. Um die Python -Demo aus einer Webcam auszuführen:
python demo.py --checkpoint-path <path_to>/checkpoint_iter_370000.pth --video 0 Wenn dies Ihrer Recherche hilft, zitieren Sie bitte das Papier:
@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}
}