По умолчанию API ML Kit используют модели машинного обучения, обученные Google. Эти модели разработаны для широкого спектра применений. Однако для некоторых случаев требуются более специализированные модели. Именно поэтому некоторые API ML Kit теперь позволяют заменять стандартные модели пользовательскими моделями LiteRT.
API для разметки изображений и API для обнаружения и отслеживания объектов поддерживают пользовательские модели классификации изображений. Они совместимы с рядом высококачественных предварительно обученных моделей на TensorFlow Hub или с вашей собственной моделью, обученной с помощью TensorFlow или AutoML.
Если вам требуется индивидуальное решение для других областей или сценариев использования, посетите страницу «Машинное обучение на устройстве», где вы найдете рекомендации по всем решениям и инструментам Google для машинного обучения на устройстве.
Преимущества использования ML Kit с пользовательскими моделями
Преимущества использования собственной модели классификации изображений с помощью ML Kit заключаются в следующем:
- Простые в использовании высокоуровневые API — нет необходимости работать с низкоуровневыми входными/выходными данными модели, обрабатывать изображения до и после обработки или создавать конвейер обработки.
- Не нужно беспокоиться о сопоставлении меток самостоятельно , ML Kit извлекает метки из метаданных модели LiteRT и выполняет сопоставление за вас.
- Поддерживает пользовательские модели из самых разных источников , от предварительно обученных моделей, опубликованных на TensorFlow Hub, до новых моделей, обученных с помощью TensorFlow или AutoML.
- Оптимизировано для интеграции с API камеры Android .
А именно, для обнаружения и отслеживания объектов :
- Повысьте точность классификации , сначала определив местоположение объектов, а затем применяя классификатор только к соответствующей области изображения.
- Обеспечьте интерактивный опыт в режиме реального времени , предоставляя пользователям мгновенную обратную связь об объектах по мере их обнаружения и классификации.
Используйте предварительно обученную модель классификации изображений.
Вы можете использовать предварительно обученные модели LiteRT при условии, что они соответствуют набору критериев . Через TensorFlow Hub мы предлагаем набор проверенных моделей — от Google или других разработчиков моделей — которые соответствуют этим критериям.
Используйте модель, опубликованную на TensorFlow Hub.
TensorFlow Hub предлагает широкий спектр предварительно обученных моделей классификации изображений от различных разработчиков, которые можно использовать с API для разметки изображений и обнаружения и отслеживания объектов. Выполните следующие шаги.
- Выберите модель из коллекции моделей, совместимых с ML Kit .
- Загрузите файл модели .tflite со страницы с подробными сведениями о модели. Если доступен формат модели с метаданными, выберите его.
- Воспользуйтесь нашими руководствами по API для разметки изображений или API для обнаружения и отслеживания объектов , чтобы узнать, как включить файл модели в свой проект и использовать его в приложении для Android или iOS.
Обучите собственную модель классификации изображений.
Если ни одна из предварительно обученных моделей классификации изображений не соответствует вашим потребностям, существуют различные способы обучения собственной модели LiteRT, некоторые из которых описаны и более подробно обсуждаются в следующем разделе.
| Варианты обучения собственной модели классификации изображений. | |
|---|---|
| AutoML |
|
| Преобразование модели TensorFlow в LiteRT |
|
AutoML
Модели классификации изображений, обученные с использованием AutoML, поддерживаются пользовательскими моделями в API для разметки изображений и обнаружения и отслеживания объектов . Эти API также поддерживают загрузку моделей, размещенных в облачном хранилище .
Чтобы узнать больше о том, как использовать модель, обученную с помощью AutoML, в ваших приложениях для Android и iOS, следуйте инструкциям по настройке моделей для каждого API в зависимости от вашего варианта использования.
Модели, созданные с помощью конвертера LiteRT.
Если у вас уже есть модель классификации изображений TensorFlow, вы можете преобразовать её с помощью конвертера LiteRT . Убедитесь, что созданная модель соответствует следующим требованиям совместимости.
Чтобы узнать больше о том, как использовать модель LiteRT в ваших приложениях для Android и iOS, следуйте нашим руководствам по API разметки изображений или API обнаружения и отслеживания объектов , в зависимости от вашего конкретного случая.
Совместимость с моделью LiteRT
Вы можете использовать любую предварительно обученную модель классификации изображений LiteRT при условии, что она соответствует следующим требованиям:
Тензоры
- Модель должна иметь только один входной тензор со следующими ограничениями:
- Данные представлены в формате пикселей RGB.
- Данные имеют тип UINT8 или FLOAT32. Если тип входного тензора — FLOAT32, необходимо указать параметры нормализации (NormalizationOptions), добавив метаданные (Metadata) .
- Тензор имеет 4 измерения: BxHxWxC, где:
- B — это размер партии. Он должен быть равен 1 (выводы по большим партиям не поддерживаются).
- W и H — это входная ширина и высота.
- C — это ожидаемое количество каналов. Оно должно быть равно 3.
- Модель должна иметь как минимум один выходной тензор с N классами и либо 2, либо 4 измерениями:
- (1xN)
- (1x1x1xN)
- Поддерживаются только модели с одной головой. Модели с несколькими головами могут давать неожиданные результаты.
Метаданные
Добавить метаданные в файл LiteRT можно, как описано в разделе «Добавление метаданных в модели LiteRT» .
Для использования модели с входным тензором FLOAT32 необходимо указать параметр NormalizationOptions в метаданных.
Мы также рекомендуем добавить эти метаданные к выходному тензору TensorMetadata :
- Карта меток, указывающая имя каждого выходного класса, в виде объекта AssociatedFile типа TENSOR_AXIS_LABELS (в противном случае могут быть возвращены только числовые индексы выходных классов).
- Пороговое значение оценки по умолчанию, ниже которого результаты считаются слишком недостоверными для возврата, в виде объекта ProcessUnit с параметрами ScoreThresholdingOptions.