Сегментация изображения - это процесс разделения цифрового изображения на несколько сегментов (наборов пикселей, также известных как объекты изображения). Цель сегментации - упростить и / или изменить представление изображения на что-то более значимое и более простое для анализа.
На следующем изображении показан результат модели сегментации изображений на Android. Модель создаст маску над целевыми объектами с высокой точностью.
Начать
Если вы новичок в TensorFlow Lite и работаете с Android или iOS, рекомендуется изучить следующие примеры приложений, которые помогут вам начать работу.
Вы можете использовать готовый API из библиотеки задач TensorFlow Lite для интеграции моделей сегментации изображений всего в несколько строк кода. Вы также можете интегрировать модель с помощью API Java интерпретатора TensorFlow Lite .
В приведенном ниже примере Android демонстрируется реализация обоих методов как lib_task_api и lib_interpreter соответственно.
Если вы используете платформу, отличную от Android или iOS, или уже знакомы с API-интерфейсами TensorFlow Lite , вы можете загрузить нашу начальную модель сегментации изображений.
Описание модели
DeepLab - это современная модель глубокого обучения для семантической сегментации изображений, цель которой - присвоить семантические метки (например, человек, собака, кошка) каждому пикселю входного изображения.
Как это работает
Семантическая сегментация изображения предсказывает, связан ли каждый пиксель изображения с определенным классом. Это контрастирует с обнаружением объектов , которое обнаруживает объекты в прямоугольных областях, и классификацией изображений , которая классифицирует изображение в целом.
Текущая реализация включает в себя следующие функции:
- DeepLabv1: мы используем грубую свертку, чтобы явно контролировать разрешение, при котором отклики функций вычисляются в глубинных сверточных нейронных сетях.
- DeepLabv2: мы используем мощный пул пространственной пирамиды (ASPP) для надежной сегментации объектов в нескольких масштабах с помощью фильтров с несколькими частотами дискретизации и эффективных полей обзора.
- DeepLabv3: Мы дополняем модуль ASPP функцией уровня изображения [5, 6] для сбора информации большего диапазона. Мы также включаем параметры пакетной нормализации [7] для облегчения обучения. В частности, мы применяем грубую свертку для извлечения выходных характеристик на разных выходных шагах во время обучения и оценки, что эффективно позволяет тренировать BN при выходном шаге = 16 и достигает высокой производительности при выходном шаге = 8 во время оценки.
- DeepLabv3 +: мы расширяем DeepLabv3, добавляя простой, но эффективный модуль декодирования для уточнения результатов сегментации, особенно по границам объектов. Кроме того, в этой структуре кодер-декодер можно произвольно управлять разрешением извлеченных функций кодера путем жесткой свертки для компромисса между точностью и временем выполнения.
Тесты производительности
Цифры тестов производительности генерируются с помощью описанного здесь инструмента.
Название модели | Размер модели | Устройство | GPU | Процессор |
---|---|---|---|---|
Deeplab v3 | 2.7 Мб | Pixel 3 (Android 10) | 16 мс | 37 мс * |
Pixel 4 (Android 10) | 20 мс | 23 мс * | ||
iPhone XS (iOS 12.4.1) | 16 мс | 25 мс ** |
* Использовано 4 нитки.
** 2 потока используются на iPhone для достижения наилучшего результата.