Отслеживание рук, перенос стиля, удаление фона и многое другое

По мере того, как машинное обучение продолжает ускоряться, все больше и больше языков присоединяются к подножке. 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 и на любой платформе, поддерживающей браузер.

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

Вот и все. Спасибо за прочтение.