Задача MediaPipe Image Classifier позволяет выполнять классификацию изображений. Эту задачу можно использовать, чтобы определить, что представляет собой изображение среди набора категорий, определенных во время обучения. Эта задача работает с данными изображения с помощью модели машинного обучения (ML) в виде статических данных или непрерывного потока и выводит список потенциальных категорий, ранжированных по убыванию оценки вероятности.
Начать
Начните использовать эту задачу, следуя одному из этих руководств по реализации для вашей целевой платформы. Эти руководства для конкретных платформ покажут вам базовую реализацию этой задачи с использованием рекомендуемой модели и предоставят примеры кода с рекомендуемыми параметрами конфигурации:
- Android – Пример кода – Руководство
- Python — Пример кода — Руководство
- Интернет — Пример кода — Руководство
- iOS – Пример кода – Руководство
Подробности задачи
В этом разделе описаны возможности, входы, выходы и параметры конфигурации этой задачи.
Функции
- Обработка входного изображения . Обработка включает в себя поворот изображения, изменение размера, нормализацию и преобразование цветового пространства.
- Область интереса . Классификация выполняется по области изображения, а не по всему изображению.
- Язык карты меток — установите язык, используемый для отображаемых имен.
- Порог оценки — фильтрация результатов на основе оценок прогноза.
- Классификация Top-k . Ограничьте количество результатов классификации.
- Пометить список разрешенных и список запрещенных — укажите классифицированные категории.
Входные данные задачи | Результаты задачи |
---|---|
Входные данные могут быть одним из следующих типов:
| Классификатор изображений выводит список категорий, содержащий:
|
Варианты конфигурации
Эта задача имеет следующие параметры конфигурации:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
running_mode | Устанавливает режим выполнения задачи. Есть три режима: ИЗОБРАЖЕНИЕ: Режим для ввода одного изображения. ВИДЕО: Режим декодированных кадров видео. LIVE_STREAM: режим прямой трансляции входных данных, например с камеры. В этом режиме необходимо вызвать resultListener, чтобы настроить прослушиватель на асинхронное получение результатов. | { IMAGE, VIDEO, LIVE_STREAM } | IMAGE |
display_names_locale | Задает язык меток, которые будут использоваться для отображаемых имен, представленных в метаданных модели задачи, если они доступны. По умолчанию en английский язык. Вы можете добавить локализованные метки к метаданным пользовательской модели с помощью API записи метаданных TensorFlow Lite. | Код региона | ru |
max_results | Устанавливает необязательное максимальное количество возвращаемых результатов классификации с наивысшим баллом. Если < 0, будут возвращены все доступные результаты. | Любые положительные числа | -1 |
score_threshold | Устанавливает порог оценки прогноза, который переопределяет тот, который указан в метаданных модели (если таковые имеются). Результаты ниже этого значения отклоняются. | Любой плавающий | Не задано |
category_allowlist | Устанавливает необязательный список разрешенных имен категорий. Если поле не пусто, результаты классификации, имя категории которых отсутствует в этом наборе, будут отфильтрованы. Повторяющиеся или неизвестные названия категорий игнорируются. Эта опция является взаимоисключающей с category_denylist , и использование обеих приводит к ошибке. | Любые строки | Не задано |
category_denylist | Устанавливает необязательный список имен категорий, которые не разрешены. Если значение не пустое, результаты классификации, имя категории которых находится в этом наборе, будут отфильтрованы. Повторяющиеся или неизвестные названия категорий игнорируются. Этот параметр является взаимоисключающим с category_allowlist , и использование обоих приводит к ошибке. | Любые строки | Не задано |
result_callback | Настраивает прослушиватель результатов на асинхронное получение результатов классификации, когда классификатор изображений находится в режиме прямого потока. Может использоваться только в том случае, если для режима работы установлено значение LIVE_STREAM | Н/Д | Не задано |
Модели
Классификатор изображений требует, чтобы модель классификации изображений была загружена и сохранена в каталоге вашего проекта. При разработке этой задачи начните с рекомендуемой по умолчанию модели для вашей целевой платформы. Другие доступные модели обычно обеспечивают компромисс между производительностью, точностью, разрешением и требованиями к ресурсам, а в некоторых случаях включают дополнительные функции.
Модель EfficientNet-Lite0 (рекомендуется)
Модель EfficientNet-Lite0 использует архитектуру EfficientNet и была обучена с помощью ImageNet для распознавания 1000 классов, таких как деревья, животные, продукты питания, транспортные средства, люди и т. д. См. полный список поддерживаемых меток. EfficientNet-Lite0 доступен в моделях int8 и float 32. Рекомендуется использовать эту модель, поскольку она обеспечивает баланс между задержкой и точностью. Он одновременно точный и достаточно легкий для многих случаев использования.
Название модели | Введите форму | Тип квантования | Версии |
---|---|---|---|
EfficientNet-Lite0 (int8) | 224 х 224 | int8 | Последний |
EfficientNet-Lite0 (с плавающей запятой 32) | 224 х 224 | Нет (с плавающей запятой32) | Последний |
Модель EfficientNet-Lite2
Модель EfficientNet-Lite2 использует архитектуру EfficientNet и была обучена с помощью ImageNet для распознавания 1000 классов, таких как деревья, животные, продукты питания, транспортные средства, люди и т. д. См. полный список поддерживаемых меток. EfficientNet-Lite2 доступен в моделях int8 и float 32. Эта модель, как правило, более точная, чем EfficientNet-Lite0, но также медленнее и требует больше памяти. Эта модель подходит для случаев использования, где точность имеет более высокий приоритет, чем скорость или размер.
Название модели | Введите форму | Тип квантования | Версии |
---|---|---|---|
EfficientNet-Lite2 (int8) | 224 х 224 | int8 | Последний |
EfficientNet-Lite2 (с плавающей запятой 32) | 224 х 224 | Нет (с плавающей запятой32) | Последний |
Тесты задач
Вот тесты задач для всего конвейера, основанные на предварительно обученных моделях. Результатом задержки является средняя задержка на Pixel 6 с использованием ЦП/ГП.
Название модели | Задержка процессора | Задержка графического процессора |
---|---|---|
EfficientNet-Lite0 (с плавающей запятой 32) | 23,52 мс | 18,90 мс |
EfficientNet-Lite0 (int8) | 10,08 мс | - |
EfficientNet-Lite2 (с плавающей запятой 32) | 44,17 мс | 22,20 мс |
EfficientNet-Lite2 (int8) | 19,43 мс | - |
Пользовательские модели
Вы можете использовать настроенную модель машинного обучения для этой задачи, если хотите улучшить или изменить возможности предоставленных моделей. Вы можете использовать Model Maker для изменения существующих моделей или создания модели с помощью таких инструментов, как TensorFlow. Пользовательские модели, используемые с MediaPipe, должны быть в формате TensorFlow Lite и включать определенные метаданные, описывающие рабочие параметры модели. Вам следует рассмотреть возможность использования Model Maker для изменения предоставленных моделей для этой задачи, прежде чем создавать свои собственные.
Если вы заинтересованы в создании собственного классификатора изображений с использованием собственного набора данных, начните с руководства по настройке классификатора изображений .