Оценка позы человека
В этом разделе вы узнаете, как интегрировать детектор позы человека в ваш проект на C++ или Python.
Оценка позы человека (C++/Python)
1. Создание Human Pose Estimator
1.1. Для создания Human Pose Estimator выполните шаги 1-3, описанные в разделе Создание процессинг-блока, и укажите следующие значения:
"HUMAN_POSE_ESTIMATOR"для ключа"unit_type";
- C++
- Python
configCtx["unit_type"] = "HUMAN_POSE_ESTIMATOR";
configCtx = {
"unit_type": "HUMAN_POSE_ESTIMATOR",
}
1.2. Создайте процессинг-блок Human Pose Estimator:
- C++
- Python
- Flutter
pbio::ProcessingBlock humanPoseEstimator = service->createProcessingBlock(configCtx);
humanPoseEstimator = service.create_processing_block(configCtx)
ProcessingBlock humanPoseEstimator = service.createProcessingBlock({
"unit_type": "HUMAN_POSE_ESTIMATOR",
});
2. Детекция позы
2.1. Выполните обнаружение человека с помощью BodyDetector или ObjectDetector, как описано в разделе Детекция лиц, тел и объектов.
2.2. Передайте полученный Context-контейнер методу humanPoseEstimator():
- C++
- Python
- Flutter
humanPoseEstimator(ioData);
humanPoseEstimator(ioData)
Context ioData = humanPoseEstimator.process(ioData);
Результат вызова HumanPoseEstimator() будет добавлен в контейнер ioData.
Формат выходных данных представлен в виде списка объектов с ключом "objects".
Каждый объект списка имеет ключ "class" со значением "body".
Ключ "keypoints" содержит список ключевых точек, каждая из которых содержит значения "proj", которые являются относительными координатами
точки и "confidence" (уверенность) в диапазоне [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}}, ...
]
}]
}
*/