Оценка позы человека
В этом разделе вы узнаете, как интегрировать детектор позы человека в ваш проект на C++ или Python.
Оценка позы человека (C++/Python)
Требования
- Операционная система Windows x86 64-bit или Linux x86 64-bit.
- Установлен пакет Face SDK windows_x86_64 или linux_x86_64 (см. Начало работы).
1. Создание Human Pose Estimator
1.1. Для создания Human Pose Estimator, выполните шаги 1-3 описанные в Создание процессинг-блока и укажите следующие значения:
"HUMAN_POSE_ESTIMATOR"
для ключа"unit_type"
;- путь до файла модели Human Body Detector для ключа
"model_path"
; - путь до файла, описывающего структуру скелета для ключа
"label_map"
.
- C++
- Python
configCtx["unit_type"] = "HUMAN_POSE_ESTIMATOR";
// путь по умолчанию для файла модели Human Body Detector - "share/humanpose/hpe-td.enc" в корневой папке Face SDK
configCtx["model_path"] = "share/humanpose/hpe-td.enc";
// вспомогательный файл, описывающий структуру скелета
configCtx["label_map"] = "share/humanpose/label_map_keypoints.txt";
configCtx = {
"unit_type": "HUMAN_POSE_ESTIMATOR",
# пути указаны относительно корневой директории Face SDK
"model_path": "share/humanpose/hpe-td.enc",
"label_map": "share/humanpose/label_map_keypoints.txt"
}
1.2. Создайте процессинг-блок Human Pose Estimation:
- C++
- Python
pbio::ProcessingBlock humanPoseEstimator = service->createProcessingBlock(configCtx);
humanPoseEstimator = service.create_processing_block(configCtx)
2. Детекция позы
2.1. Выполните обнаружение человека с помощью BodyDetector или ObjectDetector, как описано в разделе Детекция лиц, тел и объектов.
2.2. Передайте полученный Context-контейнер методу humanPoseEstimator()
:
- C++
- Python
humanPoseEstimator(ioData);
humanPoseEstimator(ioData)
Результат вызова HumanPoseEstimator()
будет добавлен в контейнер ioData
.
Формат выходных данных представлен в виде списка объектов с ключом "объекты"
.
Каждый объект списка имеет ключ "class"
со значением "body"
.
Ключ "keypoints"
содержит список ключевых точек, каждая из которых содержит значения "proj"
, которые являются относительными координатами.
точки и "достоверность"
в диапазоне [0,1]. Порядок точек соответствует описанию из файла "label_map_keypoints.txt"
.
/*
{
"objects": [{ "id": {"type": "long", "minimum": 0},
"class": "body",
"confidence": {"type": "double", "minimum": 0, "maximum": 1},
"bbox": [x1, y2, x2, y2],
"keypoints": [
{"proj": {x_proj, y_proj}, "confidence": {"type": "double", "minimum": 0, "maximum": 1}}, ...
]
}]
}
*/
Примеры использования Human Pose Estimator:
3. Ускорение на GPU
Human Pose Estimator может быть использован с ускорением на GPU (CUDA). Более подробная информация в разделе Ускорение на GPU.