Модель обнаружения объектов похожа на модель разметки изображений, но вместо присвоения меток всему изображению целиком, она присваивает метки областям изображения. Модели обнаружения объектов можно использовать для распознавания и определения местоположения объектов на изображении или для отслеживания перемещений объекта на серии изображений.
Для обучения модели обнаружения объектов вы предоставляете AutoML Vision Edge набор изображений с соответствующими метками объектов и границами объектов. AutoML Vision Edge использует этот набор данных для обучения новой модели в облаке, которую вы можете использовать для обнаружения объектов на устройстве.
Прежде чем начать
Если у вас еще нет проекта Firebase, создайте его в консоли Firebase .
Ознакомьтесь с рекомендациями, представленными в руководстве по инклюзивному машинному обучению — 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-файла с обучающими данными» .
Изображения должны храниться в хранилище (bucket), расположенном в регионе us-central1 и являющемся частью соответствующего проекта Google Cloud вашего проекта Firebase.
Вариант 2: Изображения без подписей
После загрузки обучающих изображений добавьте к ним метки и нарисуйте границы объектов в консоли Google Cloud . Это рекомендуется только для небольших наборов данных. См. следующий шаг.
2. Обучите свою модель.
Далее обучите модель, используя ваши изображения:
Откройте страницу «Наборы данных Vision» в консоли 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. Оцените свою модель.
После завершения обучения вы можете нажать вкладку «Оценка» , чтобы просмотреть показатели производительности модели.
Одно из важных применений этой страницы — определение порога достоверности, который лучше всего подходит для вашей модели. Порог достоверности — это минимальная степень уверенности, которой должна обладать модель, чтобы присвоить метку изображению. Перемещая ползунок «Порог достоверности» , вы можете увидеть, как разные пороги влияют на производительность модели. Производительность модели измеряется с помощью двух метрик: точности и полноты .
В контексте классификации изображений точность — это отношение количества правильно размеченных изображений к количеству изображений, размеченных моделью с учетом выбранного порогового значения. Высокая точность модели означает, что она реже ошибочно присваивает метки (меньше ложных срабатываний).
Показатель полноты (recall) — это отношение количества правильно размеченных изображений к количеству изображений, содержащих контент, который модель должна была бы уметь разметить. Высокий показатель полноты означает, что модель реже допускает ошибки при присвоении меток (меньше ложных отрицательных результатов).
Выбор между оптимизацией по точности или полноте будет зависеть от конкретного случая. Более подробную информацию можно найти в руководстве для начинающих по 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Идентификатор модели, полученный из API AutoML Cloud. 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 .