Задача «Детектор объектов MediaPipe» позволяет обнаруживать наличие и расположение объектов нескольких классов на изображениях или видео. Например, детектор объектов может обнаружить на изображении собак. Эта задача работает с данными изображения с помощью модели машинного обучения (ML), принимая статические данные или непрерывный видеопоток в качестве входных данных и выводя список результатов обнаружения. Каждый результат обнаружения представляет собой объект, который появляется на изображении или видео.
Начать
Начните использовать эту задачу, следуя одному из этих руководств по реализации для платформы, над которой вы работаете:
- Android – Пример кода – Руководство
- Python — Пример кода — Руководство
- Интернет — Пример кода — Руководство
- iOS – Пример кода – Руководство
В этих руководствах для конкретных платформ описана базовая реализация этой задачи, включая рекомендуемую модель и пример кода с рекомендуемыми параметрами конфигурации.
Подробности задачи
В этом разделе описываются возможности, входные и выходные данные этой задачи.
Функции
- Обработка входного изображения . Обработка включает в себя поворот изображения, изменение размера, нормализацию и преобразование цветового пространства.
- Язык карты меток — установите язык, используемый для отображаемых имен.
- Порог оценки — фильтрация результатов на основе оценок прогноза.
- Обнаружение 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 (рекомендуется)
Модель 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 мс |