Сегментация

Сегментация изображения — это процесс разделения цифрового изображения на несколько сегментов (наборов пикселей, также известных как объекты изображения). Цель сегментации — упростить и/или изменить представление изображения на нечто более значимое и более простое для анализа.

На следующем изображении показаны выходные данные модели сегментации изображений на Android. Модель с высокой точностью создаст маску над целевыми объектами.

Начать

Если вы новичок в TensorFlow Lite и работаете с Android или iOS, рекомендуется изучить следующие примеры приложений, которые помогут вам начать работу.

Вы можете использовать готовый API из библиотеки задач TensorFlow Lite для интеграции моделей сегментации изображений всего за несколько строк кода. Вы также можете интегрировать модель с помощью Java API TensorFlow Lite Interpreter .

В приведенном ниже примере Android демонстрируется реализация обоих методов как lib_task_api и lib_interpreter соответственно.

Посмотреть пример Android

Посмотреть пример iOS

Если вы используете платформу, отличную от Android или iOS, или уже знакомы с API-интерфейсами TensorFlow Lite , вы можете загрузить нашу начальную модель сегментации изображений.

Скачать стартовую модель

Описание модели

DeepLab — это современная модель глубокого обучения для семантической сегментации изображений, цель которой — назначить семантические метки (например, человек, собака, кошка) каждому пикселю входного изображения.

Как это работает

Семантическая сегментация изображения предсказывает, связан ли каждый пиксель изображения с определенным классом. В этом отличие от обнаружения объектов , которое обнаруживает объекты в прямоугольных областях, и классификации изображений , которая классифицирует все изображение.

Текущая реализация включает в себя следующие возможности:

  1. DeepLabv1: Мы используем агрессивную свертку, чтобы явно контролировать разрешение, с которым ответы функций вычисляются в глубоких сверточных нейронных сетях.
  2. DeepLabv2: Мы используем сложное объединение пространственных пирамид (ASPP) для надежной сегментации объектов в разных масштабах с помощью фильтров с разными частотами дискретизации и эффективными полями обзора.
  3. DeepLabv3: Мы дополняем модуль ASPP функцией уровня изображения [5, 6] для сбора информации на большем расстоянии. Мы также включаем параметры пакетной нормализации [7] для облегчения обучения. В частности, мы применяем агрессивную свертку для извлечения выходных характеристик при разных выходных шагах во время обучения и оценки, что эффективно позволяет тренировать BN при выходном шаге = 16 и достигать высокой производительности при выходном шаге = 8 во время оценки.
  4. DeepLabv3+: мы расширяем DeepLabv3, включив в него простой, но эффективный модуль декодера для уточнения результатов сегментации, особенно по границам объектов. Более того, в этой структуре кодера-декодера можно произвольно управлять разрешением извлеченных функций кодера путем жесткой свертки для достижения компромисса между точностью и временем выполнения.

Тесты производительности

Показатели производительности генерируются с помощью инструмента, описанного здесь .

Название модели Размер модели Устройство графический процессор Процессор
Диплаб v3 2,7 Мб Пиксель 3 (Андроид 10) 16 мс 37 мс*
Пиксель 4 (Андроид 10) 20 мс 23 мс*
iPhone XS (iOS 12.4.1) 16 мс 25 мс**

* Использовано 4 нити.

** На iPhone используются 2 потока для достижения наилучшего результата.

Дальнейшее чтение и ресурсы