Помогают защитить Большой Барьерный Риф с TensorFlow на Kaggle Присоединяйтесь вызов

Классификация изображений

Задача определения того, что представляет собой изображение, называется классификацией изображений . Модель классификации изображений обучена распознавать различные классы изображений. Например, вы можете научить модель распознавать фотографии трех разных типов животных: кроликов, хомяков и собак. TensorFlow Lite предоставляет оптимизированные предварительно обученные модели, которые вы можете развернуть в своих мобильных приложениях. Узнайте больше о классификации изображений с помощью TensorFlow здесь .

На следующем изображении показан результат работы модели классификации изображений на Android.

Скриншот примера Android

Начать

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

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

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

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

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

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

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

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

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

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

При наличии достаточного количества обучающих данных (часто сотни или тысячи изображений на этикетку) модель классификации изображений может научиться предсказывать, принадлежат ли новые изображения какому-либо из классов, которым она была обучена. Этот процесс предсказания называется выводом . Обратите внимание, что вы также можете использовать трансферное обучение для определения новых классов изображений с помощью уже существующей модели. Трансферное обучение не требует очень большого набора обучающих данных.

Когда вы впоследствии предоставляете новое изображение в качестве входных данных для модели, она выводит вероятности изображения, представляющего каждый из типов животных, на которых оно было обучено. Пример вывода может быть следующим:

Тип животного Вероятность
Кролик 0,07
Хомяк 0,02
Собака 0,91

Каждое число в выходных данных соответствует метке в обучающих данных. Связывая выходные данные с тремя метками, на которых была обучена модель, вы можете увидеть, что модель предсказала высокую вероятность того, что изображение представляет собаку.

Вы могли заметить, что сумма всех вероятностей (для кролика, хомяка и собаки) равна 1. Это общий тип выходных данных для моделей с несколькими классами (см. Softmax для получения дополнительной информации).

Неоднозначные результаты

Поскольку выходные вероятности всегда будут в сумме равняться 1, если изображение не будет уверенно распознано как принадлежащее какому-либо из классов, на которых была обучена модель, вы можете увидеть вероятность, распределенную по меткам без значительного увеличения какого-либо одного значения.

Например, следующее может указывать на неоднозначный результат:

Этикетка Вероятность
кролик 0,31
хомяк 0,35
собака 0,34
Если ваша модель часто дает неоднозначные результаты, вам может потребоваться другая, более точная модель.

Выбор модельной архитектуры

TensorFlow Lite предоставляет вам множество моделей классификации изображений, которые все обучены на исходном наборе данных. Архитектуры моделей, такие как MobileNet, Inception и NASNet, доступны на странице размещенных моделей . Чтобы выбрать лучшую модель для вашего варианта использования, вам необходимо рассмотреть отдельные архитектуры, а также некоторые компромиссы между различными моделями. Некоторые из этих компромиссов модели основаны на таких показателях, как производительность, точность и размер модели. Например, вам может потребоваться более быстрая модель для создания сканера штрих-кода, в то время как вы можете предпочесть более медленную и более точную модель для приложения для медицинской визуализации. Обратите внимание, что представленные модели классификации изображений допускают ввод различных размеров. Для некоторых моделей это указано в имени файла. Например, модель Mobilenet_V1_1.0_224 принимает входной размер 224x224 пикселей. Для всех моделей требуется три цветовых канала на пиксель (красный, зеленый и синий). Для квантованных моделей требуется 1 байт на канал, а для моделей с плавающей запятой требуется 4 байта на канал. Примеры кода для Android и iOS демонстрируют, как преобразовать полноразмерные изображения с камеры в требуемый формат для каждой модели.

Использование и ограничения

Модели классификации изображений TensorFlow Lite полезны для классификации по одной метке; то есть предсказание, какую единственную метку изображение, скорее всего, представляет. Они обучены распознавать 1000 классов изображений. Полный список классов см. В файле меток в архиве модели . Если вы хотите обучить модель распознавать новые классы, см. Раздел Настройка модели . Для следующих случаев использования вам следует использовать другой тип модели:
  • Прогнозирование типа и положения одного или нескольких объектов на изображении (см. Обнаружение объектов )
  • Прогнозирование композиции изображения, например, предмет по сравнению с фоном (см. Сегментация )
После запуска начальной модели на целевом устройстве вы можете экспериментировать с различными моделями, чтобы найти оптимальный баланс между производительностью, точностью и размером модели.

Настроить модель

Предоставленные предварительно обученные модели обучены распознавать 1000 классов изображений. Полный список классов см. В файле меток в архиве модели . Вы также можете использовать переносное обучение, чтобы повторно обучить модель распознавать классы, не входящие в исходный набор. Например, вы можете повторно обучить модель, чтобы различать разные виды деревьев, несмотря на то, что в исходных обучающих данных не было деревьев. Для этого вам понадобится набор обучающих изображений для каждой новой метки, которую вы хотите обучить. Узнайте, как выполнять переносное обучение с помощью TFLite Model Maker или в лаборатории кода « Распознавать цветы с помощью TensorFlow».

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

Производительность модели измеряется количеством времени, которое требуется модели для выполнения логического вывода на данном оборудовании. Чем меньше время, тем быстрее модель. Требуемая производительность зависит от вашего приложения. Производительность может быть важна для приложений, таких как видео в реальном времени, где может быть важно анализировать каждый кадр за время до отрисовки следующего кадра (например, вывод должен быть быстрее 33 мс для выполнения вывода в реальном времени для видеопотока 30 кадров в секунду) . Производительность квантованных моделей MobileNet TensorFlow Lite варьируется от 3,7 мс до 80,3 мс. Цифры тестов производительности генерируются с помощью инструмента тестирования .
Название модели Размер модели Устройство ННАПИ Процессор
Mobilenet_V1_1.0_224_quant 4.3 Мб Pixel 3 (Android 10) 6 мс 13 мс *
Pixel 4 (Android 10) 3,3 мс 5 мс *
iPhone XS (iOS 12.4.1) 11 мс **

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

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

Точность модели

Точность измеряется с точки зрения того, насколько часто модель правильно классифицирует изображение. Например, можно ожидать, что модель с заявленной точностью 60% правильно классифицирует изображение в среднем в 60% случаев.

Список размещенных моделей содержит статистику точности Top-1 и Top-5. Top-1 указывает на то, как часто правильная метка появляется как метка с наибольшей вероятностью в выходных данных модели. Top-5 относится к тому, как часто правильная метка появляется в 5 самых высоких вероятностях в выходных данных модели.

Топ-5 точности квантованных моделей MobileNet TensorFlow Lite находится в диапазоне от 64,4 до 89,9%.

Размер модели

Размер модели на диске зависит от ее производительности и точности. Размер может быть важен для мобильной разработки (где он может повлиять на размер загружаемых приложений) или при работе с оборудованием (где доступное хранилище может быть ограничено).

Размеры квантованных моделей MobileNet TensorFlow Lite варьируются от 0,5 до 3,4 МБ.

Дополнительная литература и ресурсы

Используйте следующие ресурсы, чтобы узнать больше о концепциях, связанных с классификацией изображений: