Задача определения того, что представляет изображение, называется классификацией изображения . Модель классификации изображений обучается распознавать различные классы изображений. Например, вы можете научить модель распознавать фотографии, на которых изображены три разных вида животных: кролики, хомяки и собаки. TensorFlow Lite предоставляет оптимизированные предварительно обученные модели, которые вы можете развернуть в своих мобильных приложениях. Узнайте больше о классификации изображений с помощью TensorFlow здесь .
На следующем изображении показаны выходные данные модели классификации изображений на Android.
Начать
Если вы новичок в TensorFlow Lite и работаете с Android или iOS, рекомендуется изучить следующие примеры приложений, которые помогут вам начать работу.
Вы можете использовать готовый API из библиотеки задач TensorFlow Lite , чтобы интегрировать модели классификации изображений всего в несколько строк кода. Вы также можете создать собственный пользовательский конвейер вывода, используя библиотеку поддержки TensorFlow Lite .
Пример Android ниже демонстрирует реализацию обоих методов как lib_task_api и lib_support соответственно.
Если вы используете платформу, отличную от 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 классов изображений. Полный список классов см. в файле labels в ZIP-архиве модели . Если вы хотите обучить модель распознавать новые классы, см. раздел Настройка модели . Для следующих случаев использования вы должны использовать другой тип модели:- Прогнозирование типа и положения одного или нескольких объектов на изображении (см. Обнаружение объектов )
- Прогнозирование композиции изображения, например, объекта по сравнению с фоном (см. Сегментация )
Настроить модель
Предоставленные предварительно обученные модели обучены распознавать 1000 классов изображений. Полный список классов см. в файле labels в ZIP-архиве модели . Вы также можете использовать трансферное обучение, чтобы повторно обучить модель распознавать классы, которых нет в исходном наборе. Например, вы можете переобучить модель, чтобы различать разные виды деревьев, несмотря на то, что в исходных обучающих данных деревьев не было. Для этого вам понадобится набор обучающих изображений для каждой из новых меток, которые вы хотите обучить. Узнайте, как выполнить трансферное обучение с помощью TFLite Model Maker или в кодовой лаборатории Распознавание цветов с помощью TensorFlow.Тесты производительности
Производительность модели измеряется количеством времени, которое требуется модели для выполнения вывода на данном оборудовании. Чем меньше время, тем быстрее модель. Требуемая производительность зависит от вашего приложения. Производительность может быть важна для таких приложений, как видео в реальном времени, где может быть важно анализировать каждый кадр за время до отрисовки следующего кадра (например, вывод должен быть быстрее 33 мс, чтобы выполнять вывод в реальном времени для видеопотока с частотой 30 кадров в секунду). . Диапазон производительности квантованных моделей MobileNet TensorFlow Lite составляет от 3,7 мс до 80,3 мс. Цифры эталонных показателей производительности генерируются с помощью инструмента эталонного тестирования .Название модели | Размер модели | Устройство | ННАПИ | Процессор |
---|---|---|---|---|
Мобильная сеть_V1_1.0_224_квант | 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. Top-1 относится к тому, как часто правильная метка появляется как метка с наибольшей вероятностью в выходных данных модели. Топ-5 относится к тому, как часто правильная метка появляется в 5 самых вероятных выходных данных модели.
Пятерка лучших моделей MobileNet с квантизацией TensorFlow Lite находится в диапазоне от 64,4 до 89,9%.
Размер модели
Размер модели на диске зависит от ее производительности и точности. Размер может быть важен для разработки мобильных устройств (где он может повлиять на размер загружаемых приложений) или при работе с оборудованием (где доступное хранилище может быть ограничено).
Размеры квантованных моделей MobileNet TensorFlow Lite варьируются от 0,5 до 3,4 МБ.
Дополнительная литература и ресурсы
Используйте следующие ресурсы, чтобы узнать больше о концепциях, связанных с классификацией изображений: