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

,

Для обучения модели маркировки изображений вы предоставляете 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 .