Модель обнаружения объектов похожа на модель маркировки изображений, но вместо того, чтобы присваивать метки целым изображениям, она присваивает метки их областям. Модели обнаружения объектов можно использовать для распознавания и определения местоположения объектов на изображении или для отслеживания их перемещений по серии изображений.
Для обучения модели обнаружения объектов вы предоставляете 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. Обучите свою модель
Далее обучите модель, используя ваши изображения:
- Откройте страницу Vision Datasets в консоли 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 и руководстве Inclusive ML — AutoML .
Когда вы найдете пороговое значение уверенности, которое обеспечивает получение удобных для вас показателей, запишите его. Вы будете использовать пороговое значение уверенности для настройки модели в своем приложении. (Вы можете использовать этот инструмент в любое время, чтобы получить подходящее пороговое значение.)
4. Опубликуйте или загрузите свою модель.
Если вы удовлетворены производительностью модели и хотите использовать ее в приложении, у вас есть три варианта, из которых вы можете выбрать любую комбинацию: развернуть модель для онлайн-прогнозирования, опубликовать модель в Firebase или загрузить модель и объединить ее со своим приложением.
Развертывание модели
На вкладке «Тестирование и использование» вашего набора данных вы можете развернуть модель для онлайн-прогнозирования, которое запустит её в облаке. Этот вариант описан в документации по Cloud AutoML . Документация на этом сайте описывает оставшиеся два варианта.
Опубликовать модель
Опубликовав модель в Firebase, вы сможете обновлять ее без выпуска новой версии приложения, а также использовать Remote Config и A/B Testing для динамического предоставления различных моделей различным группам пользователей.
Если вы решите предоставить модель, разместив её в Firebase и не включив её в пакет приложения, вы можете уменьшить размер загружаемого файла. Однако имейте в виду, что если модель не включена в пакет приложения, все функции, связанные с моделью, будут недоступны до тех пор, пока приложение не загрузит её в первый раз.
Чтобы опубликовать свою модель, вы можете воспользоваться одним из двух способов:
- Загрузите модель TF Lite со страницы «Test & use» вашего набора данных в консоли Google Cloud , а затем загрузите её на страницу «Custom model» в консоли 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. - Питон- # 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 .