Этот репозиторий содержит учебный код для бумаги в режиме реального времени 2D-оценки позы по ЦП: легкий открытый. Эта работа в значительной степени оптимизирует подход Openpose для достижения вывода в реальном времени на процессоре с пренебрежным падением точности. Он обнаруживает скелет (который состоит из клавиш и связей между ними), чтобы идентифицировать позы человека для каждого человека внутри изображения. Поза может содержать до 18 клавиатур: уши, глаза, нос, шея, плечи, локти, запястья, бедра, колени и лодыжки. На COCO 2017 Установка обнаружения клавиш Установите этот код, достигает 40% точки доступа для единого масштабного вывода (без переворота или любого сделанного после обработки). Результат может быть воспроизведен с помощью этого репозитория. Этот репо существенно перекрывается с https://github.com/opencv/openvino_training_extensions, однако содержит только необходимый код для оценки позы человека.

Проверьте нашу новую работу по точной (и все еще быстрой) оценке позы с одним человеком, которая заняла 10 -е место по вызову CVPR'19.
Ознакомьтесь с нашей легкой оценкой трехмерной позы, которая основана на однопольном многопользовательской оценке 3D-позы из монокулярной бумаги RGB и этой работы.
<COCO_HOME> папки.pip install -r requirements.txt Обучение состоит из 3 шагов (заданные значения AP для набора данных полной проверки):
Загрузите предварительно обученную Mobilenet v1 Weews 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 случайных изображений (из 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> Модель ожидает нормализованное изображение (среднее = [128, 128, 128], шкала = [1/256, 1/256, 1/256]) в планарном формате BGR. Предварительно обученная на Coco Model доступна по адресу: https://download.01.org/opencv/openvino_training_extensions/models/human_pect_estimation/checkpoint_iter_370000.
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 в формате с плавающей запятой в одной режиме (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}
}