Использование TensorFlowJS и HarperDB для машинного обучения


Реализация классификатора пород собак с использованием Stanford Dogs и MobileNet с помощью пользовательских функций HarperDB

Введение

HarperDB — это простая в использовании база данных, которая имеет простой метод создания конечных точек для взаимодействия с данными, называемых пользовательскими функциями. Эти пользовательские функции можно использовать даже для реализации алгоритма машинного обучения для классификации поступающих данных. TensorFlowJS — это библиотека, выпущенная компанией Google, которая позволяет использовать JavaScript для машинного обучения, причем это можно делать как в браузере, так и на сервере NodeJS, как мы будем делать в этой статье.

Резюме

Что мы собираемся делать

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

Стэнфордские собаки

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

MobileNet

Существует модель SOTA (state of the art), опубликованная Google под названием MobileNet, которая представляет собой относительно небольшую модель, способную классифицировать более 1 000 изображений. Она сделана небольшой, поэтому может работать на мобильных устройствах, не занимая слишком много ресурсов. Мы будем использовать версию 2 этой модели, которая доступна в пакете @tensorflow-models/mobilenet.

Трансферное обучение

Трансферное обучение — это метод, при котором берется предварительно обученная модель и обучается для вывода новых данных. Это как научить старую собаку новым трюкам! Для этого мы будем использовать @tensorflow-models/knn-classifier.

Мы отправим изображение в MobileNet и получим логиты, т.е. то, что находится непосредственно перед классификацией. Затем мы отправим эти логиты в KNN-классификатор, который использует алгоритм K-Nearest Neighbors, чтобы связать эти логиты с конкретными породами собак.

Начало работы

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

Настройка

Необходимые условия

  1. Учетная запись HarperDB
  2. Локальная база данных HarperDB

Клонирование репозитория

Клонируйте этот репозиторий в папку Custom Functions

Перезапустите Custom Functions

Используйте ссылку на странице HarperDB Studio Functions (в левой нижней части экрана), чтобы обновить проекты.

Запустите /setup

Необходимо установить обучающие данные и модули TensorFlowJS. Это можно сделать через конечную точку /setup.

Если вы перейдете по адресу http://localhost:9926/dogml/setup, это приведет к началу установки. Вы можете проверить прогресс в журналах — либо в stdout из локально запущенной базы данных, либо в разделе журналов на странице Status внутри Studio.

Ожидаемый результат запуска установки — {success: true, message: ML Setup Started}.

В результате будет использован каталог $HOME/dogml по отношению к базе данных для всех учебных материалов.

Обязательно дождитесь появления сообщения ML Setup Complete в журналах базы данных.

Активируйте

Запустить /train

Чтобы обучить модель, посетите конечную точку /train по адресу http://localhost:9926/dogml/train. Это приведет к началу обучения модели. Статус можно посмотреть в журналах консоли (аналогично просмотру информации во время /setup) или в таблице logs внутри схемы.

Проверка модели

Как только журналы покажут, что обучение завершено, вы сможете увидеть, что модель появилась в таблице models в схеме.

Классифицируйте породу собак!

Перейдите в пользовательский интерфейс по адресу http://localhost:9926/dogml/ui и попробуйте загрузить изображение собаки (подойдет одно из изображений в каталоге $HOME/dogml/training_data/Images).
Результаты должны появиться как в пользовательском интерфейсе, так и в таблице классификаций.

Углубляемся

Добавление новых данных для обучения

Вы можете добавить больше данных для обучения, добавив новые изображения в каталог $HOME/dogml/training_data/Images — либо поместив изображение в нужную папку, либо создав новую папку (если это порода без уже имеющейся папки). Все изображения должны быть в формате JPEG.

Удаление данных для обучения

Вы также можете удалить данные для обучения в каталоге $HOME/dogml/training_data/Images, чтобы лучше ориентироваться на конкретные породы.

Обновление модели

Если вы изменяете данные для обучения и используете конечную точку /train для создания новой модели, не забудьте затем вызвать конечную точку /update на http://localhost:9926/dogml/update, чтобы убедиться, что новая модель загружена в классификатор.

Обучение с помощью GPU

Чтобы обучить модель на 200% быстрее, используйте конечную точку /train_gpu на http://localhost:9926/dogml/train_gpu. Это позволит использовать преимущества графического процессора Nvidia с поддержкой CUDA для более быстрой обработки математики обучения.

Убедитесь, что установлены необходимые драйверы и библиотеки CUDA.

Вот руководство по установке CUDA на Ubuntu

Обзор

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

Оцените статью
Procodings.ru
Добавить комментарий