RSVP для вашего местного мероприятия TensorFlow Everywhere сегодня!
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

Задача определения того, что представляет собой изображение, называется классификацией изображений . Модель классификации изображений обучена распознавать различные классы изображений. Например, вы можете обучить модель распознавать фотографии трех разных типов животных: кроликов, хомяков и собак. 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 классов изображений. Полный список классов см. В файле меток в архиве модели . Вы также можете использовать переносное обучение, чтобы повторно обучить модель распознавать классы, не входящие в исходный набор. Например, вы можете повторно обучить модель, чтобы различать разные виды деревьев, несмотря на то, что в исходных обучающих данных не было деревьев. Для этого вам понадобится набор обучающих изображений для каждой новой метки, которую вы хотите обучить. Узнайте, как выполнять переносное обучение в лаборатории распознавания цветов с помощью TensorFlow или с помощью библиотеки Model Maker .

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

Производительность модели измеряется количеством времени, которое требуется модели для выполнения логического вывода на данном оборудовании. Чем меньше время, тем быстрее модель. Требуемая производительность зависит от вашего приложения. Производительность может быть важна для таких приложений, как видео в реальном времени, где может быть важно анализировать каждый кадр за время до рисования следующего кадра (например, вывод должен быть быстрее 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 МБ.

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

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