Перейти к основному содержимому
Версия: 3.19.2

Детекция лиц, тел и объектов

В этом разделе вы узнаете, как интегрировать детектор лица, тела и детектор объектов в ваш проект на C++ или Python.

Блоки детекции(C++/Python)

Типы блоков детекции для ключа "unit_type"

  • FACE_DETECTOR (Детектор лица)
  • HUMAN_BODY_DETECTOR (Детектор тела)
  • OBJECT_DETECTOR (Детектор объектов)

1. Создание блока детекции

1.1 Для создания блока детекции выполните шаги 1-3, описанные на странице Создание процессинг-блока и укажите значение интересующего вас блока для ключа "unit_type":

configCtx["unit_type"] = "FACE_DETECTOR";

// опционально, значение по умолчанию 0,5
configCtx["confidence_threshold"] = 0.5;

// опционально, значение по умолчанию 0,5
configCtx["iou_threshold"] = 0.5;

1.2 Создайте процессинг-блок детекции:

pbio::ProcessingBlock blockDetector = service->createProcessingBlock(configCtx);

2. Детекция

2.1 Создайте Context-контейнер ioData для данных ввода-вывода, используя метод createContext():

auto ioData = service->createContext();

2.2 Создайте Context-контейнер imgCtx с RGB-изображением, выполнив шаги, описанные на странице Создание контейнера Context c RGB-изображением:

// помещение изображения в контейнер
auto imgCtx = ioData["image"];
pbio::context_utils::putImage(imgCtx, input_rawimg);

2.3 Поместите изображение в контейнер данных ввода-вывода:

ioData["image"] = imgCtx;

2.4 Вызовите blockDetector и передайте Context-контейнер ioData, содержащий изображение:

blockDetector(ioData);

Метод blockDetector() добавит результат обработки сэмплов (изображений) в контейнер ioData.

Формат выходных данных представляет собой список объектов, доступный по ключу "objects".

Каждый объект списка имеет ключ "class" со значением, соответсвующим классу задетектированного объекта.

Ключ "bbox" (bounding box) содержит массив из 4-х чисел типа double {x1, y1, x2, y2} которые являются относительными координатами исходного изображения.

Ключ "confidence" содержит число типа double в диапазоне [0,1].

/*
{
"objects": [{ "id": {"type": "long", "minimum": 0},
"class": "face",
"confidence": {"double", "minimum": 0, "maximum": 1},
"bbox": [x1, y2, x2, y2] }]
}
*/