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

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

AutoML Vision Edge — это облачный сервис Google. Использование службы регулируется Лицензионным соглашением 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. Откройте страницу наборов визуальных данных в консоли 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. Оцените свою модель

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

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

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

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

Будете ли вы оптимизировать точность или отзыв, будет зависеть от вашего варианта использования. Дополнительные сведения см. в руководстве для начинающих 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 Идентификатор модели, полученный от AutoML Cloud API.

    Питон

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