Руководство по обнаружению объектов

Задача «Детектор объектов MediaPipe» позволяет обнаруживать наличие и расположение объектов нескольких классов на изображениях или видео. Например, детектор объектов может обнаружить на изображении собак. Эта задача работает с данными изображения с помощью модели машинного обучения (ML), принимая статические данные или непрерывный видеопоток в качестве входных данных и выводя список результатов обнаружения. Каждый результат обнаружения представляет собой объект, который появляется на изображении или видео.

Попробуй это!

Начать

Начните использовать эту задачу, следуя одному из этих руководств по реализации для платформы, над которой вы работаете:

В этих руководствах для конкретных платформ описана базовая реализация этой задачи, включая рекомендуемую модель и пример кода с рекомендуемыми параметрами конфигурации.

Подробности задачи

В этом разделе описываются возможности, входные и выходные данные этой задачи.

Функции

  • Обработка входного изображения . Обработка включает в себя поворот изображения, изменение размера, нормализацию и преобразование цветового пространства.
  • Язык карты меток — установите язык, используемый для отображаемых имен.
  • Порог оценки — фильтрация результатов на основе оценок прогноза.
  • Обнаружение Top-k — фильтрация результатов обнаружения чисел.
  • Пометить список разрешенных и список запрещенных — укажите обнаруженные категории.
Входные данные задачи Результаты задачи
API детектора объектов принимает входные данные одного из следующих типов:
  • Неподвижные изображения
  • Декодированные видеокадры
  • Живое видео
API детектора объектов выводит следующие результаты для обнаруженных объектов:
  • Категория объекта
  • Оценка вероятности
  • Координаты ограничивающего прямоугольника

Варианты конфигурации

Эта задача имеет следующие параметры конфигурации:

Название опции Описание Диапазон значений Значение по умолчанию
running_mode Устанавливает режим выполнения задачи. Есть три режима:

ИЗОБРАЖЕНИЕ: Режим для ввода одного изображения.

ВИДЕО: Режим декодированных кадров видео.

LIVE_STREAM: режим прямой трансляции входных данных, например с камеры. В этом режиме необходимо вызвать resultListener, чтобы настроить прослушиватель на асинхронное получение результатов.
{ IMAGE, VIDEO, LIVE_STREAM } IMAGE
display_names Задает язык меток, которые будут использоваться для отображаемых имен, представленных в метаданных модели задачи, если они доступны. По умолчанию en английский язык. Вы можете добавить локализованные метки к метаданным пользовательской модели с помощью API записи метаданных TensorFlow Lite. Код региона ru
max_results Устанавливает необязательное максимальное количество возвращаемых результатов обнаружения с наивысшим баллом. Любые положительные числа -1 (возвращаются все результаты)
score_threshold Устанавливает порог оценки прогноза, который переопределяет тот, который указан в метаданных модели (если таковые имеются). Результаты ниже этого значения отклоняются. Любой плавающий Не задано
category_allowlist Устанавливает необязательный список разрешенных имен категорий. Если поле не пусто, результаты обнаружения, имя категории которых отсутствует в этом наборе, будут отфильтрованы. Повторяющиеся или неизвестные названия категорий игнорируются. Эта опция является взаимоисключающей с category_denylist , и использование обеих приводит к ошибке. Любые строки Не задано
category_denylist Устанавливает необязательный список имен категорий, которые не разрешены. Если поле не пусто, результаты обнаружения, имя категории которых находится в этом наборе, будут отфильтрованы. Повторяющиеся или неизвестные названия категорий игнорируются. Этот параметр является взаимоисключающим с category_allowlist , и использование обоих приводит к ошибке. Любые строки Не задано

Модели

API-интерфейс детектора объектов требует, чтобы модель обнаружения объектов была загружена и сохранена в каталоге вашего проекта. Если у вас еще нет модели, начните с рекомендуемой по умолчанию модели. Другие модели, представленные в этом разделе, обеспечивают компромисс между задержкой и точностью.

Модель EfficientDet-Lite0 использует магистраль EfficientNet-Lite0 с входным размером 320x320 и функциональной сетью BiFPN. Модель была обучена с использованием набора данных COCO — крупномасштабного набора данных для обнаружения объектов, который содержит 1,5 миллиона экземпляров объектов и 80 меток объектов. См. полный список поддерживаемых ярлыков. EfficientDet-Lite0 доступен как int8, float16 или float32. Рекомендуется использовать эту модель, поскольку она обеспечивает баланс между задержкой и точностью. Он одновременно точный и достаточно легкий для многих случаев использования.

Название модели Введите форму Тип квантования Версии
ЭффективныйDet-Lite0 (int8) 320 х 320 int8 Последний
EfficientDet-Lite0 (с плавающей запятой 16) 320 х 320 поплавок 16 Последний
EfficientDet-Lite0 (с плавающей запятой 32) 320 х 320 Нет (с плавающей запятой32) Последний

Модель EfficientDet-Lite2

Модель EfficientDet-Lite2 использует магистраль EfficientNet-Lite2 с входным размером 448x448 и функциональной сетью BiFPN. Модель была обучена с использованием набора данных COCO — крупномасштабного набора данных для обнаружения объектов, который содержит 1,5 миллиона экземпляров объектов и 80 меток объектов. См. полный список поддерживаемых ярлыков. EfficientDet-Lite2 доступен в виде модели int8, float16 или float32. Эта модель, как правило, более точная, чем EfficientDet-Lite0, но также медленнее и требует больше памяти. Эта модель подходит для случаев использования, где точность имеет больший приоритет по сравнению со скоростью и размером.

Название модели Введите форму Тип квантования Версии
ЭффективныйDet-Lite2 (int8) 448 х 448 int8 Последний
EfficientDet-Lite2 (с плавающей запятой 16) 448 х 448 поплавок 16 Последний
EfficientDet-Lite2 (с плавающей запятой 32) 448 х 448 Нет (с плавающей запятой32) Последний

Модель SSD MobileNetV2

Модель SSD MobileNetV2 использует магистраль MobileNetV2 с входным размером 256x256 и функциональной сетью SSD. Модель была обучена с использованием набора данных COCO — крупномасштабного набора данных для обнаружения объектов, который содержит 1,5 миллиона экземпляров объектов и 80 меток объектов. См. полный список поддерживаемых ярлыков. SSD MobileNetV2 доступен в моделях int8 и float 32. Эта модель быстрее и легче, чем EfficientDet-Lite0, но в целом менее точна. Эта модель подходит для случаев использования, требующих быстрой и легкой модели, жертвующей некоторой точностью.

Название модели Введите форму Тип квантования Версии
SSDMobileNet-V2 (int8) 256 х 256 int8 Последний
SSDMobileNet-V2 (с плавающей запятой 32) 256 х 256 Нет (с плавающей запятой32) Последний

Требования к модели и метаданные

В этом разделе описаны требования к пользовательским моделям, если вы решите создать модель для использования в этой задаче. Пользовательские модели должны быть в формате TensorFlow Lite и включать метаданные, описывающие рабочие параметры модели.

Требования к дизайну

Вход Форма Описание
Введите изображение Тензор Float32 формы [1, высота, ширина, 3] Нормализованное входное изображение.
Выход Форма Описание
detection_boxes Тензор Float32 формы [1, num_boxes, 4] Расположение ящика для каждого обнаруженного объекта.
detection_classes Тензор Float32 формы [1, num_boxes] Индексы имен классов для каждого обнаруженного объекта.
detection_scores Тензор float32 формы [1, num_boxes] Оценки прогнозирования для каждого обнаруженного объекта.
num_boxes Тензор Float32 размера 1 Количество обнаруженных ящиков.

Требования к метаданным

Параметр Описание Описание
input_norm_mean Среднее значение, используемое при нормализации входного тензора. Нормализованное входное изображение.
input_norm_std Норма поля, используемая при нормализации входного тензора. Расположение ящика для каждого обнаруженного объекта.
label_file_paths Пути к файлам тензорных меток категорий. Если в модели нет файлов меток, передайте пустой список. Индексы имен классов для каждого обнаруженного объекта.
score_calibration_md Информация об операции калибровки оценок в тензоре классификации. Этот параметр не требуется, если модель не использует оценку.
калибровка.
Оценки прогнозирования для каждого обнаруженного объекта.
num_boxes Тензор Float32 размера 1 Количество обнаруженных ящиков.

Тесты задач

Вот тесты задач для вышеупомянутых предварительно обученных моделей. Результатом задержки является средняя задержка на Pixel 6 с использованием ЦП/ГП.

Название модели Задержка процессора Задержка графического процессора
Модель EfficientDet-Lite0 float32 61,30 мс 27,83 мс
Модель EfficientDet-Lite0 float16 53,97 мс 27,97 мс
Модель EfficientDet-Lite0 int8 29,31 мс -
Модель EfficientDet-Lite2 float32 197,98 мс 41,15 мс
Модель EfficientDet-Lite2 float16 198,77 мс 47,31 мс
Модель EfficientDet-Lite2 int8 70,91 мс -
Твердотельный накопитель MobileNetV2, модель float32 36,30 мс 24,01 мс
Твердотельный накопитель MobileNetV2, модель float16 37,35 мс 28,16 мс