Модель обнаружения объектов похожа на модель маркировки изображений, но вместо того, чтобы присваивать метки целым изображениям, она присваивает метки их областям. Модели обнаружения объектов можно использовать для распознавания и определения местоположения объектов на изображении или для отслеживания их перемещений по серии изображений.
Для обучения модели обнаружения объектов вы предоставляете 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 .