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

Задача определения того, что представляет собой изображение, называется классификацией изображений . Модель классификации изображений обучена распознавать различные классы изображений. Например, вы можете научить модель распознавать фотографии, изображающие три разных типа животных: кроликов, хомяков и собак. 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, доступны в TensorFlow Hub . Чтобы выбрать лучшую модель для вашего случая использования, вам необходимо рассмотреть отдельные архитектуры, а также некоторые компромиссы между различными моделями. Некоторые из этих компромиссов модели основаны на таких показателях, как производительность, точность и размер модели. Например, вам может понадобиться более быстрая модель для создания сканера штрих-кода, в то время как вы можете предпочесть более медленную и точную модель для приложения для обработки медицинских изображений. Обратите внимание, что предоставленные модели классификации изображений принимают входные данные разных размеров. У некоторых моделей это указано в названии файла. Например, модель Mobilenet_V1_1.0_224 принимает входные данные размером 224x224 пикселей. Всем моделям требуется три цветовых канала на пиксель (красный, зеленый и синий). Для квантованных моделей требуется 1 байт на канал, а для моделей с плавающей запятой — 4 байта на канал. Примеры кода Android и iOS демонстрируют, как обрабатывать полноразмерные изображения с камеры в формат, необходимый для каждой модели.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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