Обучение модели маркировки изображений с помощью 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: Изображения без подписей

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

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

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

  1. Откройте страницу «Наборы данных Vision» в консоли Google Cloud . При появлении запроса выберите свой проект.

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

  3. На вкладке «Импорт» вашего набора данных загрузите либо ZIP-архив с изображениями для обучения, либо CSV-файл, содержащий адреса Cloud Storage куда вы их загрузили. См. раздел «Сборка данных для обучения» .

  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. Оцените свою модель.

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

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

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

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

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

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

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

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

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

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

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

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

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

Для публикации вашей модели вы можете использовать один из двух методов:

  • Загрузите модель TF Lite со страницы «Тестирование и использование» вашего набора данных в консоли Google Cloud , а затем загрузите модель на странице «Пользовательская модель» в консоли 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.

    Python

    # 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 .