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

Интегрировать классификаторы изображений

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

Использование задач библиотеки ImageClassifier API для развертывания пользовательских классификаторов изображений или pretrained те , в мобильных приложениях.

Ключевые особенности ImageClassifier API

  • Обработка входного изображения, включая поворот, изменение размера и преобразование цветового пространства.

  • Интересующая область входного изображения.

  • Отметьте язык карты.

  • Порог оценки для фильтрации результатов.

  • Результаты классификации Top-k.

  • Отметьте список разрешенных и денилистов.

Поддерживаемые модели классификаторов изображений

Следующие модели гарантированно будут совместимы с ImageClassifier API.

Выполнить вывод в Java

Смотрите изображения базовой классификации приложение для примера того , как использовать ImageClassifier в Android приложение.

Шаг 1. Импортируйте зависимость Gradle и другие настройки

Скопируйте .tflite файл модели в каталоге ресурсов в Android модуля , в котором будет запущена модель. Указывает , что файл не должен быть сжат, и добавить библиотеку TensorFlow Lite для модуля build.gradle файла:

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-vision:0.3.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.3.0'
}

Шаг 2: Использование модели

// Initialization
ImageClassifierOptions options =
    ImageClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setMaxResults(1)
        .build();
ImageClassifier imageClassifier =
    ImageClassifier.createFromFileAndOptions(
        context, modelFile, options);

// Run inference
List<Classifications> results = imageClassifier.classify(image);

Смотрите исходный код и Javadoc для большего количества опций для настройки ImageClassifier .

Выполнить вывод в C ++

// Initialization
ImageClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

Смотрите исходный код для более опций для настройки ImageClassifier .

Примеры результатов

Ниже приведен пример результатов классификации птиц классификатором .

воробей

Results:
  Rank #0:
   index       : 671
   score       : 0.91406
   class name  : /m/01bwb9
   display name: Passer domesticus
  Rank #1:
   index       : 670
   score       : 0.00391
   class name  : /m/01bwbt
   display name: Passer montanus
  Rank #2:
   index       : 495
   score       : 0.00391
   class name  : /m/0bwm6m
   display name: Passer italiae

Попробуйте простой CLI демонстрационного инструмента для ImageClassifier с вашими собственными моделью и тестовыми данными.

Требования к совместимости моделей

ImageClassifier API ожидает , что модель TFLite с обязательным TFLite модели метаданных . Смотрите примеры создания метаданных для классификаторов изображений с помощью Writer API TensorFlow Lite метаданных .

Совместимые модели классификаторов изображений должны соответствовать следующим требованиям:

  • Тензор входного изображения (kTfLiteUInt8 / kTfLiteFloat32)

    • входное изображение размера [batch x height x width x channels] .
    • пакетный вывод не поддерживается ( batch требуется , чтобы быть 1).
    • Только RGB входы поддерживаются ( channels требуется , чтобы быть 3).
    • если тип - kTfLiteFloat32, параметры NormalizationOptions должны быть присоединены к метаданным для нормализации ввода.
  • Тензор результатов вывода (kTfLiteUInt8 / kTfLiteFloat32)

    • с N классов и 2 или 4 размеров, то есть [1 x N] или [1 x 1 x 1 x N]
    • необязательные (но рекомендуемые) карты меток как AssociatedFile-s с типом TENSOR_AXIS_LABELS, содержащие по одной метке на строку. Смотрите файл Пример этикетки . Первый такой AssociatedFile (если таковые имеются) используется , чтобы заполнить label поля (названный как class_name в C ++) результатов. display_name поле заполняется из AssociatedFile (если таковые имеются) , чьи локаль соответствует display_names_locale поле из ImageClassifierOptions , используемых при создании ( «эн» по умолчанию, то есть английский язык). Если ни один из них не доступны, только index поля результатов будут заполнены.