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