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

Модель обнаружения объектов аналогична модели маркировки изображений, но вместо присвоения меток всем изображениям она присваивает метки областям изображений. Вы можете использовать модели обнаружения объектов для распознавания и определения местоположения объектов на изображении или для отслеживания движений объекта по серии изображений.

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

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

  • Если у вас еще нет проекта Firebase, создайте его в консоли Firebase .

  • Ознакомьтесь с рекомендациями, представленными в руководстве Inclusive ML — AutoML .

  • Если вы просто хотите попробовать AutoML Vision Edge и у вас нет собственных обучающих данных, загрузите образец набора данных, например один из следующих:

1. Соберите данные о тренировках

Во-первых, вам нужно собрать набор обучающих данных из помеченных изображений. Помните о следующих правилах:

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

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

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

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

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

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

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

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

Вариант 1. Cloud Storage с индексом CSV.

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

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

gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,,
gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,,
gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,

Ограничительные рамки объекта задаются как относительные координаты на изображении. См. раздел Форматирование данных обучения в формате CSV .

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

Вариант 2: изображения без меток

Пометьте свои тренировочные изображения и нарисуйте границы объектов в консоли Google Cloud после их загрузки. Это рекомендуется только для небольших наборов данных. См. следующий шаг.

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

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

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

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

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

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

  5. Если вы не загружали CSV-файл, для каждого изображения нарисуйте ограничивающие рамки вокруг объектов, которые вы хотите распознать, и пометьте каждый объект.

  6. На вкладке «Обучение» нажмите «Начать обучение» .

    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 .