Обучение модели маркировки изображений с помощью AutoML Vision Edge

Для обучения модели маркировки изображений вы предоставляете AutoML Vision Edge набор изображений и соответствующих меток. AutoML Vision Edge использует этот набор данных для обучения новой модели в облаке, которую вы можете использовать для маркировки изображений на устройстве в своем приложении. (Общую информацию об этой функции см. в разделе Обзор .)

AutoML Vision Edge — это сервис Google Cloud. Использование сервиса регулируется Лицензионным соглашением Google Cloud Platform и Особыми условиями сервиса и оплачивается соответствующим образом. Информацию о выставлении счетов см. на странице цен AutoML.

Прежде чем начать

1. Соберите данные для обучения

Сначала вам нужно собрать обучающий набор данных из помеченных изображений. Имейте в виду следующие рекомендации:

  • Изображения должны быть в одном из следующих форматов: JPEG, PNG, GIF, BMP, ICO.

  • Каждое изображение должно быть размером 30 МБ или меньше. Обратите внимание, что AutoML Vision Edge уменьшает размер большинства изображений во время предварительной обработки, поэтому, как правило, нет никакого преимущества в точности при предоставлении изображений с очень высоким разрешением.

  • Приведите не менее 10, а лучше 100 или более примеров каждой этикетки.

  • Включите несколько углов, разрешений и фонов для каждой этикетки.

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

  • Модели, созданные AutoML Vision Edge, оптимизированы для фотографий объектов в реальном мире. Они могут не работать для рентгеновских снимков, рисунков от руки, отсканированных документов, квитанций и т. д.

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

Когда ваши тренировочные изображения будут готовы, подготовьте их к импорту в Firebase. У вас есть три варианта:

Вариант 1: Структурированный zip-архив

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

Имена каталогов в этом zip-архиве могут содержать до 32 символов ASCII и только буквенно-цифровые символы и символ подчеркивания ( _ ).

Например:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

Вариант 2: Cloud Storage с CSV-индексом

Загрузите ваши тренировочные изображения в Google Cloud Storage и подготовьте CSV-файл, содержащий URL каждого изображения и, по желанию, правильные метки для каждого изображения. Эта опция полезна при использовании очень больших наборов данных.

Например, загрузите изображения в Cloud Storage и подготовьте CSV-файл, как показано ниже:

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

Изображения должны храниться в контейнере, который является частью соответствующего проекта Google Cloud вашего проекта Firebase.

Дополнительную информацию о подготовке CSV-файла см. в разделе Подготовка данных обучения в документации Cloud AutoML Vision.

Вариант 3: Немаркированные изображения

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

2. Обучите свою модель

Далее обучите модель, используя ваши изображения:

  1. Откройте страницу Vision Datasets в консоли Google Cloud . Выберите свой проект при появлении запроса.

  2. Нажмите «Новый набор данных» , введите имя набора данных, выберите тип модели, которую вы хотите обучить, и нажмите «Создать набор данных» .

  3. На вкладке Import вашего набора данных загрузите либо zip-архив ваших обучающих изображений, либо CSV-файл, содержащий местоположения Cloud Storage в которые вы их загрузили. См. раздел Assemble your training data .

  4. После завершения импорта используйте вкладку «Изображения» для проверки обучающих данных и маркировки всех немаркированных изображений.

  5. На вкладке «Тренировка» нажмите кнопку «Начать обучение» .

    1. Назовите модель и выберите тип модели Edge .

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

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

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

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

      Типичное время обучения
      Очень маленькие наборы 1 час
      500 изображений 2 часа
      1000 изображений 3 часа
      5000 изображений 6 часов
      10 000 изображений 7 часов
      50 000 изображений 11 часов
      100 000 изображений 13 часов
      1 000 000 изображений 18 часов

3. Оцените свою модель

После завершения обучения вы можете нажать на вкладку «Оценить» , чтобы увидеть показатели эффективности модели.

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

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

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

Оптимизация для точности или полноты будет зависеть от вашего варианта использования. См. руководство для начинающих AutoML Vision и руководство Inclusive ML - AutoML для получения дополнительной информации.

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

4. Опубликуйте или загрузите свою модель

Если вы удовлетворены производительностью модели и хотите использовать ее в приложении, у вас есть три варианта, из которых вы можете выбрать любую комбинацию: развернуть модель для онлайн-прогнозирования, опубликовать модель в Firebase или загрузить модель и связать ее со своим приложением.

Развертывание модели

На вкладке Test & use вашего набора данных вы можете развернуть свою модель для онлайн-прогнозирования, которое запускает вашу модель в облаке. Эта опция рассматривается в документации Cloud AutoML . Документация на этом сайте посвящена оставшимся двум опциям.

Опубликовать модель

Публикуя модель в Firebase, вы можете обновлять ее, не выпуская новую версию приложения, а также использовать Remote Config и A/B Testing для динамического предоставления различных моделей различным группам пользователей.

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

Чтобы опубликовать свою модель, вы можете воспользоваться одним из двух способов:

  • Загрузите модель TF Lite со страницы Test & use вашего набора данных в консоли Google Cloud , а затем загрузите модель на страницу Custom model консоли Firebase . Обычно это самый простой способ опубликовать отдельную модель.
  • Опубликуйте модель напрямую из вашего проекта Google Cloud в Firebase с помощью Admin SDK. Вы можете использовать этот метод для пакетной публикации нескольких моделей или для создания автоматизированных конвейеров публикации.

Чтобы опубликовать модель с помощью API управления моделями Admin SDK:

  1. Установите и инициализируйте SDK .

  2. Опубликуйте модель.

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

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Номер проекта контейнера Cloud Storage , содержащего модель. Это может быть ваш проект Firebase или другой проект Google Cloud . Это значение можно найти на странице настроек консоли Firebase или панели инструментов консоли Google Cloud .
    MODEL_ID Идентификатор модели, который вы получили из API AutoML Cloud.

    Питон

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

Загрузите и свяжите модель с вашим приложением

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

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

Чтобы загрузить модель, нажмите TF Lite на странице «Тестирование и использование» вашего набора данных.

Следующие шаги

Теперь, когда вы опубликовали или загрузили модель, узнайте, как использовать ее в приложениях iOS+ и Android .