Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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

Используйте предварительно обученную и оптимизированную модель для определения сотен классов объектов, включая людей, виды деятельности, животных, растения и места.

Начать

Если вы не знакомы с концепцией классификации изображений, вам следует начать с чтения Что такое классификация изображений?

Чтобы узнать, как использовать классификацию изображений в мобильном приложении, мы рекомендуем изучить наши примеры приложений и руководства .

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

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

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

Примеры приложений и руководств

У нас есть примеры приложений для классификации изображений для Android и iOS. Для каждого примера мы предоставляем руководство, объясняющее, как это работает.

Android

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

Прочтите пример руководства для Android, чтобы узнать, как работает приложение.

IOS

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

Прочтите пример руководства для iOS, чтобы узнать, как работает приложение.

Скриншот

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

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

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

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

собака

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

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

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

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

Обучение, ярлыки и выводы

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

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

Для выполнения вывода в модель передается изображение. Затем модель выведет массив вероятностей от 0 до 1. В нашем примере модели этот процесс может выглядеть следующим образом:

собака [0,07, 0,02, 0,91]

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

метка Вероятность
кролик 0,07
хомяк 0.02
собака 0,91

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

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

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

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

метка Вероятность
кролик 0,31
хомяк 0,35
собака 0,34

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

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

Если вы хотите обучить модель распознавать новые классы, см. Раздел Настройка модели .

Для следующих случаев использования вам следует использовать другой тип модели:

  • Прогнозирование типа и положения одного или нескольких объектов на изображении (см. Обнаружение объектов )
  • Прогнозирование композиции изображения, например, предмет по сравнению с фоном (см. Сегментация )

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

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

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

Наименование модели Размер модели устройство NNAPI ЦПУ
Mobilenet_V1_1.0_224_quant 4.3 Мб Pixel 3 (Android 10) 6ms * 13 мс
Pixel 4 (Android 10) 3.3ms 5ms *
iPhone XS (iOS 12.4.1) 11ms **

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

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

Выберите другую модель

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

Производительность

Мы измеряем производительность с точки зрения количества времени, которое требуется модели для выполнения логического вывода на данном оборудовании. Чем меньше времени, тем быстрее модель.

Требуемая производительность зависит от вашего приложения. Производительность может быть важна для приложений, таких как видео в реальном времени, где может быть важно анализировать каждый кадр за время до рисования следующего кадра (например, вывод должен быть быстрее 33 мс для выполнения вывода в реальном времени для видеопотока 30 кадров в секунду) ,

Производительность наших квантованных моделей MobileNet составляет от 3,7 мс до 80,3 мс.

точность

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

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

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

Размер

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

Размер наших квантованных моделей MobileNet составляет от 0,5 до 3,4 Мб.

Архитектура

В Списке размещенных моделей доступно несколько различных архитектур моделей , обозначенных именем модели. Например, вы можете выбирать между MobileNet, Inception и другими.

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

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

Предоставленные нами предварительно обученные модели обучены распознавать 1000 классов изображений. Полный список классов см. В файле меток в архиве модели .

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

Узнайте, как выполнить переносное обучение, в лаборатории кода « Распознавать цветы с помощью TensorFlow» или с помощью набора инструментов для создания моделей .