Отслеживание рук, перенос стиля, удаление фона и многое другое
По мере того, как машинное обучение продолжает ускоряться, все больше и больше языков присоединяются к подножке. JavaScript, который какое-то время был лидером веб-экосистемы, теперь постепенно набирает обороты и в машинном обучении.
Обнадеживающее количество библиотек JavaScript, специально для машинного обучения, выпущено за последний год. Это, безусловно, улучшит работу веб-браузеров на базе искусственного интеллекта. Кроме того, JavaScript для машинного обучения имеет преимущество быстрого и легкого развертывания моделей в мобильных приложениях за счет использования веб-представлений.
В основе TensorFlow лежит библиотека TensorFlow.js с ускорением Web GL, которая позволяет обучать и запускать модели прямо в браузере или с помощью Node.js. Лучше всего то, что вам не нужно быть экспертом по машинному обучению, чтобы развертывать базовые модели, поскольку библиотека уже предоставляет набор предварительно обученных моделей для классификации, сегментации и многого другого.
Давайте посмотрим на несколько замечательных библиотек, созданных на основе TensorFlow.js, которые вдохновят вас на ваш следующий проект машинного обучения.
1. Распознавание лиц и эмоций
Распознавание лиц было одним из классических вариантов использования Open-CV и, естественно, стало также распространенным вариантом использования в машинном обучении.
Face-api.js - это библиотека распознавания лиц JavaScript, реализованная поверх TensorFlow.js. Он позволяет обнаруживать и распознавать лица и ориентиры, а также определять эмоции и пол на изображениях.
Библиотека полностью абстрагируется от базовой реализации, чтобы предоставить вам простой в использовании высокоуровневый API. Все, что вам нужно сделать, это вызвать методы для соответствующей модели нейронной сети с возможностью также вызывать готовые функции рисования для наложения характерных точек на холст.
Вот базовый код для настройки распознавания лиц с распознаванием ориентиров и выражений лица:
const detection = await faceapi.detectAllFaces(image) .withFaceLandmarks() .withFaceExpressions();
2. Передача стиля изображения
Передача стилей сегодня - одна из самых популярных задач глубокого обучения. Его возможности безграничны, от приложений для редактирования фотографий до настройки тем в ваших приложениях.
На очень высоком уровне нейронный перенос стиля подразумевает передачу стиля из одного изображения в другое. Как правило, вы можете использовать известные картины или абстрактные искусства, чтобы придать новый вид входному изображению.
Перенос произвольного стиля построен поверх TensorFlow.js для полноценной работы в вашем браузере.
Вы можете объединить более одного стиля в изображение, а также установить плотность стиля, чтобы контролировать уровень текстуры, видимой в конечном результате.
3. Классификатор NSFW
Nsfw.js - еще одна классная библиотека, которая позволяет отображать и классифицировать изображения или гифки в вашем браузере. Это удобно, если вам нужно подвергать цензуре контент, не предназначенный для детей.
Запуск модели возвращает 5 классов с вероятностями, на основе которых вы можете применить фильтр размытия или пикселизации к входному изображению.
Вот код, показывающий, насколько легко загрузить модель и выполнить выводы:
const model = await nsfwjs.load() const predictions = await model.classify(img)
Nsfw-filter - отличное расширение указанной выше библиотеки, которое блокирует отображение NSFW-изображений в ваших браузерах.
4. Сегментирование личности
Сегментация изображения помогает нам выделить и вырезать определенные элементы изображения. Изменение фона изображения - самый простой вариант использования.
Но что, если вам нужно сделать прямо противоположное? К счастью, есть крутой проект с открытым исходным кодом, который позволяет удалять людей с изображения.
Этот проект TensorFlow.js прекрасно работает при обработке изображений в реальном времени и удобен, когда вы используете функцию видеозвонка в своих веб-приложениях.
5. Отслеживание рук
Отслеживание рук - еще одна интересная задача машинного обучения. Отслеживая положение рук в режиме реального времени, вы можете создавать браузеры на основе бесконтактных жестов и выполнять захват движения для щелчка по селфи.
Сценарии использования отслеживания рук поистине безграничны: от написания и рисования каракулей пальцами до прокрутки экранов без мыши или смахивания.
Handtrack.js - это как раз та библиотека, которая вам понадобится в такие времена. Помимо предоставления точек ограничивающей рамки, он также позволяет вам устанавливать пользовательские параметры при запуске модели.
6. Danfo.js: библиотека в стиле панды
Panda, мощный пакет Python, является одной из самых популярных библиотек в машинном обучении для обработки данных, очистки, визуализации и множества других задач.
В JavaScript, несмотря на хорошие успехи в машинном обучении, всегда не хватало пандоподобной библиотеки для задач предварительной обработки. Но не больше.
Danfo.js - это новая библиотека JavaScript с открытым исходным кодом, построенная на основе TensorFlow.js. Он предоставляет простые в использовании структуры данных для простого преобразования массивов, JSON, объектов, тензоров и структур данных с различным индексом в объекты DataFrame.
Это значительно упростит обработку наборов данных и выполнение таких задач, как их объединение или разделение.
Заключение
TensorFlow.js нацелен на то, чтобы позволить разработчикам обучать и запускать модели машинного обучения полностью в своих браузерах. Для разработчиков JavaScript это отличный способ проникнуть в мир машинного обучения.
В отличие от CoreML, который работает в экосистеме Apple, TensorFlow.js может работать на iOS, macOS, Linux, Android и на любой платформе, поддерживающей браузер.
Я надеюсь, что указанные выше библиотеки и проекты вдохновят вас на создание потрясающих веб-приложений на базе искусственного интеллекта.
Вот и все. Спасибо за прочтение.