Новички в области машинного обучения и искусственного интеллекта могут использовать такие сервисы, как AutoML, для постепенного повышения квалификации. Для построения моделей машинного обучения и интеграции их с вашими собственными приложениями недостаточно или недостаточно знаний в области AI / ML.

AutoML - это один из сервисов облачной платформы Google, который использует возможности машинного обучения Google для создания пользовательской модели машинного обучения в соответствии с индивидуальными требованиями пользователей.

AutoML обслуживает ряд продуктов, включая перевод, обработку изображений / видео / речи, естественный язык и многие другие.

Здесь мы сосредоточимся на обработке изображений с помощью AutoML Vision. AutoML Vision позволяет обучать модели машинного обучения классифицировать изображения.



Здесь мы создадим набор данных изображений, обучим их и развернем как модель, которую можно использовать как Rest API в нашем приложении Node / Javascript. Единственное предварительное условие - иметь учетную запись облачной платформы Google. (Google предоставляет бесплатную пробную версию на 3 месяца с кредитным лимитом 300 долларов).

Построить модель AutoML Vision

По сути, модель AutoML Vision предназначена для набора изображений, с которыми мы сравниваем новые изображения и прогнозируем, что это такое.

Чтобы разобраться в этом, давайте попробуем разобраться с простым вариантом использования. Представьте, что у нас есть коллекция изображений руки, и мы хотим отсортировать ее по левой / правой руке с помощью AutoML. Для этого мы создадим набор данных из множества изображений. Чем больше число, тем выше точность. В этом наборе данных мы помечаем каждое изображение как левое / правое. Затем мы обучим этот набор данных с помощью встроенных функций машинного обучения Google. После обучения набора данных изображений будет сгенерирована модель, которую можно развернуть как Rest API. Затем мы можем вызвать этот API, используя изображение в качестве параметра, API ответит возможными метками для изображения в соответствии с обученной моделью.

Шаг 1

Войдите в консоль GCP, убедитесь, что вы выбрали правильный проект в раскрывающемся списке в заголовке страницы (выполняйте эту проверку на всех этапах). Если нет, создайте проект для себя.

Шаг 2

Включите Cloud AutoML API и Облачное хранилище в разделе API и службы консоли GCP.

Шаг 3

Перейдите в раздел Vision в консоли GCP. В меню выберите Наборы данных. Теперь, чтобы создать наш набор данных, нажмите кнопку Новый набор данных. В учебных целях мы можем перейти к однокомпонентной классификации.

Шаг 4

Выберите изображения для загрузки для создания набора данных. Убедитесь, что вы выбрали правильное имя сегмента хранилища, в противном случае создайте новый сегмент и выберите его для использования. Изображения, которые мы выбираем для создания модели, будут храниться в этой корзине.

После того, как требуемый выбор сделан, мы можем нажать Продолжить. Завершение процесса займет несколько минут, мы получим электронное письмо с уведомлением о его завершении.

Шаг 5

После завершения импорта мы можем перейти на вкладку изображений. Здесь мы можем прикрепить ярлыки к загруженным изображениям.

Мы могли бы добавить только одну метку для каждого изображения, поскольку мы изначально выбрали классификацию по одной метке при создании набора данных. В этом примере изображения помечаются на основе указаний рук.

ШАГ 6

После того, как мы разметим все изображения, мы можем перейти на вкладку «Поезд».

Перед обучением мы должны выполнить такие условия, как - необходимо создать как минимум две разные метки, минимум 10 изображений на этикетку. Как только мы удовлетворим эти требования, кнопка НАЧАТЬ ТРЕНИРОВКУ станет активной. Убедитесь, что мы добавили все доступные изображения, поскольку точность возрастает с увеличением количества изображений.

Кроме того, пользователям бесплатной пробной версии будет бесплатно доступно только первое обучение, а последующее обучение будет стоить бесплатных кредитов. Также во время обучения выделите минимальное количество узлов, так как это также повлияет на бесплатные кредиты.

Время обучения обычно зависит от количества изображений, на 100 изображений примерно час. Когда все будет готово, мы снова будем уведомлены по электронной почте.

В этом примере мы выбираем Cloud hosted. Поскольку нам нужно, чтобы модель размещалась в GCP. Затем нажмите «Продолжить».

Выберите подходящее количество часов работы узла в зависимости от количества имеющихся у вас изображений. Также можно установить флажок развертывания, чтобы развернуть эту модель сразу же, как только она будет создана. В противном случае позже у нас будет возможность выполнить развертывание с панели управления.

Щелкните Начать обучение.

Шаг 7

После завершения обучения модель развернута и готова к использованию для прогнозов. Модель представлена ​​как конечная точка отдыха и может использоваться в любом вашем приложении.

У нас есть наша модель Auto ML, готовая делать прогнозы. Мы обучили модель с помощью группы изображений, обозначенных как левая / правая рука. Теперь мы сможем использовать эту модель, чтобы предсказать, является ли данное изображение левым / правым.

Создать приложение для прогнозирования

В этом разделе давайте посмотрим, как использовать модель в качестве конечной точки отдыха и делать прогнозы. Фрагменты кода будут взяты из базового приложения NodeJs / Javascript.

Шаг 1

Создайте приложение NodeJs

Шаг 2

npm install --save @google-cloud/automl

Установите модуль auto ml node в наше приложение. После завершения установки импортируйте модуль в наше приложение.

const automl = require("@google-cloud/automl");

Шаг 3

Нам нужно будет настроить аутентификацию для нашего приложения, чтобы использовать сервисы GCP. Создание сервисных аккаунтов в GCP с необходимым разрешением поможет нам сделать то же самое. У GCP есть подробные ссылки на это.

Сохраните этот файл JSON как key.json в корневой папке нашего приложения NodeJs.

Шаг 4

Используйте key.json в нашем приложении для настройки аутентификации.

const autoMlClient = new automl.PredictionServiceClient({
keyFilename: "key.json",
});

Шаг 5

Определите идентификатор проекта, идентификатор модели и регион GCP.

const projectId = `YOUR PROJECT ID`;
const computeRegion = `us-central1`;
const modelId = `YOUR MODEL ID`;

Идентификатор проекта можно получить в раскрывающемся списке "Проект" в консоли GCP.

Идентификатор модели можно найти на панели управления Auto ML в консоли GCP.

Шаг 6

Теперь мы создадим Rest api, с помощью которого мы сможем легко загружать изображения и реализовывать предсказания изображений.

app.post("/uploadfile", (req, res) => {
let sampleFile;
let uploadPath;
if (!req.files || Object.keys(req.files.myFile).length === 0) {
return res.status(400).send("No files were uploaded.");
}
sampleFile = req.files.myFile;
uploadPath = __dirname + "/images/" + sampleFile.name;
sampleFile.mv(uploadPath, async (err) => {
if (err) return res.status(500).send(err);
let labels = await identifyImage(uploadPath);
res.send({ labels });
});
});
let identifyImage = async (filePath) => {
try {
console.log('IDENTIFYING IMAGE')
const modelFullId = autoMlClient.modelPath(
projectId,
computeRegion,
modelId
);
const content = fs.readFileSync(filePath, "base64");
const params = {};
const scoreThreshold = `0.9`;
if (scoreThreshold) {
params.score_threshold = scoreThreshold;
}
const payload = {};
payload.image = { imageBytes: content };
const [response] = await autoMlClient.predict({
name: modelFullId,
payload: payload,
params: params,
});
console.log("Prediction results : ", JSON.stringify(response));
let isLeft = false;
response.payload.forEach((result) => {
console.log(`Predicted class name: ${result.displayName}`);
console.log(`Predicted class score: ${result.classification.score}`);
isLeft = result.displayName === "left";
});
return { isLeft };
} catch (e) {
console.log('AUTO ML DOWN')
const response = { isLeft: Math.random() < 0.5 };
return response;
}
};

СДЕЛАНО !!! Теперь у нас есть работающее приложение Node JS, которое может предсказать, является ли изображение левым или правым.

Пример кода. - Базовый проект React / NodeJs для тестирования реализации.

Вы можете связаться со мной в LinkedIn

Спасибо !! Удачного кодирования !!