Модель обнаружения объектов аналогична модели маркировки изображений, но вместо присвоения меток всем изображениям она присваивает метки областям изображений. Вы можете использовать модели обнаружения объектов для распознавания и определения местоположения объектов на изображении или для отслеживания движений объекта по серии изображений.
Для обучения модели обнаружения объектов вы предоставляете AutoML Vision Edge набор изображений с соответствующими метками объектов и границами объектов. AutoML Vision Edge использует этот набор данных для обучения новой модели в облаке, которую вы можете использовать для обнаружения объектов на устройстве.
Прежде чем начать
Если у вас еще нет проекта Firebase, создайте его в консоли Firebase .
Ознакомьтесь с рекомендациями, представленными в руководстве Inclusive ML — AutoML .
Если вы просто хотите попробовать AutoML Vision Edge и у вас нет собственных обучающих данных, загрузите образец набора данных, например один из следующих:
- Один из рекомендуемых наборов данных TensorFlow.
- Набор данных, размещенный на Kaggle .
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. Обучите свою модель
Затем обучите модель, используя ваши изображения:
Откройте страницу наборов визуальных данных в консоли Google Cloud . При появлении запроса выберите свой проект.
Нажмите «Новый набор данных» , укажите имя набора данных, выберите тип модели, которую вы хотите обучить, и нажмите «Создать набор данных» .
На вкладке «Импорт» набора данных загрузите обучающие изображения, zip-архив обучающих изображений или файл CSV, содержащий местоположения Cloud Storage , в которые вы их загрузили. См. Сбор данных для обучения .
После завершения задачи импорта используйте вкладку «Изображения» , чтобы проверить данные обучения.
Если вы не загружали CSV-файл, для каждого изображения нарисуйте ограничивающие рамки вокруг объектов, которые вы хотите распознать, и пометьте каждый объект.
На вкладке «Обучение» нажмите «Начать обучение» .
Назовите модель и выберите тип модели Edge .
Настройте следующие параметры обучения, которые определяют производительность сгенерированной модели:
Оптимизировать модель для... Используемая конфигурация модели. Вы можете обучать более быстрые модели меньшего размера, когда важна низкая задержка или небольшой размер пакета, или более медленные и большие модели, когда точность наиболее важна. Бюджет узла на час Максимальное время в вычислительных часах, необходимое для обучения модели. Большее время обучения обычно приводит к более точной модели.
Обратите внимание, что обучение может быть завершено быстрее указанного времени, если система определит, что модель оптимизирована и дополнительное обучение не повысит точность. Вам выставляется счет только за фактически использованные часы.
Типичное время обучения Очень маленькие наборы 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:
Опубликуйте модель.
Вам нужно будет указать идентификатор ресурса модели, который представляет собой строку, похожую на следующий пример:
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 .