Catch up on everything we announced at this year's Firebase Summit. Learn more

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

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

Например, загрузите изображения в облачное хранилище и подготовьте файл 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 Console после их загрузки. Это рекомендуется только для небольших наборов данных. См. Следующий шаг.

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

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

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

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

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

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

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

  6. На вкладке Поезда, нажмите Пуск обучение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для того, чтобы опубликовать модель с администратора SDK модели управления API :

  1. Установить и инициализировать SDK .

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

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

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

    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 приложений.