Для обучения модели маркировки изображений вы предоставляете AutoML Vision Edge набор изображений и соответствующих меток. AutoML Vision Edge использует этот набор данных для обучения новой модели в облаке, которую вы можете использовать для маркировки изображений на устройстве в вашем приложении. (Общую информацию об этой функции см. в разделе «Обзор» .)
AutoML Vision Edge — это сервис Google Cloud. Использование сервиса регулируется Лицензионным соглашением Google Cloud Platform и Специальными условиями сервиса и оплачивается соответствующим образом. Информация о выставлении счетов представлена на странице цен AutoML.
Прежде чем начать
Если у вас еще нет проекта Firebase или Google Cloud , создайте его в консоли Firebase .
Ознакомьтесь с рекомендациями, представленными в руководстве Inclusive ML - AutoML .
Если вы просто хотите попробовать AutoML Vision Edge и у вас нет собственных данных для обучения, загрузите пример набора данных, например один из следующих:
- Официальный набор данных с примерами изображений цветов TensorFlow
- Этот набор данных алфавита американского языка жестов (ASL)
Дополнительные наборы данных можно найти на Kaggle .
1. Соберите данные для обучения
Для начала вам необходимо собрать обучающий набор данных из размеченных изображений. Имейте в виду следующие рекомендации:
Изображения должны быть в одном из следующих форматов: JPEG, PNG, GIF, BMP, ICO.
Размер каждого изображения должен быть не более 30 МБ. Обратите внимание, что AutoML Vision Edge уменьшает размер большинства изображений во время предварительной обработки, поэтому предоставление изображений с очень высоким разрешением, как правило, не даёт выигрыша в точности.
Приведите не менее 10, а лучше 100 или более примеров каждой этикетки.
Включите несколько углов, разрешений и фонов для каждой этикетки.
Обучающие данные должны быть максимально приближены к данным, на основе которых будут строиться прогнозы. Например, если ваш сценарий использования предполагает использование размытых изображений с низким разрешением (например, с камеры видеонаблюдения), обучающие данные должны состоять из размытых изображений с низким разрешением.
Модели, создаваемые AutoML Vision Edge, оптимизированы для фотографий объектов реального мира. Они могут некорректно работать с рентгеновскими снимками, рисунками от руки, отсканированными документами, квитанциями и т. д.
Кроме того, модели, как правило, не способны предсказывать метки, которые не может дать человек. Поэтому, если человек не может определить метки, глядя на изображение в течение 1-2 секунд, модель, вероятно, тоже не сможет этому научиться.
Когда ваши тренировочные изображения будут готовы, подготовьте их к импорту в Firebase. Есть три варианта:
Вариант 1: Структурированный zip-архив
Организуйте ваши тренировочные изображения в каталоги, каждый из которых назван по метке и содержит изображения, являющиеся примерами этой метки. Затем сожмите структуру каталогов в ZIP-архив.
Имена каталогов в этом zip-архиве могут содержать до 32 символов ASCII и только буквенно-цифровые символы и символ подчеркивания ( _
).
Например:
my_training_data.zip |____accordion | |____001.jpg | |____002.jpg | |____003.jpg |____bass_guitar | |____hofner.gif | |____p-bass.png |____clavier |____well-tempered.jpg |____well-tempered (1).jpg |____well-tempered (2).jpg
Вариант 2: Cloud Storage с CSV-индексом
Загрузите ваши обучающие изображения в Google Cloud Storage и подготовьте CSV-файл с URL-адресами каждого изображения и, при необходимости, с правильными метками для каждого изображения. Эта возможность полезна при работе с очень большими наборами данных.
Например, загрузите изображения в Cloud Storage и подготовьте CSV-файл следующего вида:
gs://your-training-data-bucket/001.jpg,accordion gs://your-training-data-bucket/002.jpg,accordion gs://your-training-data-bucket/003.jpg,accordion gs://your-training-data-bucket/hofner.gif,bass_guitar gs://your-training-data-bucket/p-bass.png,bass_guitar gs://your-training-data-bucket/well-tempered.jpg,clavier gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier
Изображения должны храниться в контейнере, который является частью соответствующего проекта Google Cloud вашего проекта Firebase.
Дополнительные сведения о подготовке CSV-файла см. в разделе Подготовка данных обучения в документации Cloud AutoML Vision.
Вариант 3: Немаркированные изображения
После загрузки обучающих изображений (по отдельности или в виде неструктурированного ZIP-файла) маркируйте их в консоли Firebase . См. следующий шаг.
2. Обучите свою модель
Далее обучите модель, используя ваши изображения:
Откройте страницу Vision Datasets в консоли Google Cloud . При появлении запроса выберите свой проект.
Нажмите кнопку Новый набор данных , укажите имя набора данных, выберите тип модели, которую вы хотите обучить, и нажмите кнопку Создать набор данных .
На вкладке «Импорт» вашего набора данных загрузите либо ZIP-архив с вашими тренировочными изображениями, либо CSV-файл, содержащий адреса Cloud Storage , в которые вы их загрузили. См. раздел Сборка тренировочных данных .
После завершения импорта используйте вкладку «Изображения» для проверки данных обучения и маркируйте все немаркированные изображения.
На вкладке Обучение нажмите Начать обучение .
Назовите модель и выберите тип модели 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 .