Для обучения модели маркировки изображений вы предоставляете AutoML Vision Edge набор изображений и соответствующих меток. AutoML Vision Edge использует этот набор данных для обучения новой модели в облаке, которую вы можете использовать для маркировки изображений на устройстве в своем приложении. (Общую информацию об этой функции см. в разделе «Обзор» .)
AutoML Vision Edge — это облачный сервис Google. Использование службы регулируется Лицензионным соглашением 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. Изображения без меток
Пометьте свои тренировочные изображения в консоли Firebase после их загрузки по отдельности или в виде неструктурированного ZIP-файла. См. следующий шаг.
2. Обучите свою модель
Затем обучите модель, используя ваши изображения:
Откройте страницу наборов визуальных данных в консоли 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 и в руководстве по инклюзивному машинному обучению — 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 .