Pull to refresh

Машинное обучение глубокой нейронной сети с подкреплением на tensorflow.js: Трюки

JavaScript *Machine learning *
Tutorial
Обучать глубокие нейронные сети с нуля — задача не из простых.

Требуется много данных и времени на обучение, но ускорить процесс могут помочь некоторые трюки, о которых я и расскажу под катом.

Демонстрация прохождения простого лабиринта с использованием трюков. Длительность обучения сети: 1 час 06 минут. Запись ускорена в 8 раз.

Total votes 7: ↑6 and ↓1 +5
Views 11K
Comments 7

Important Things to Know About Tensorflow 2.0

Open source *Development of mobile applications *Machine learning *Mobile applications design *Artificial Intelligence


Deep Learning applications have changed a lot of things. Some which give hope for a brighter future, and some which raise suspicions. However, for developers, the growth of deep learning applications has made them more perplexed about choosing the best among so many deep learning frameworks out there.

TensorFlow is one of the deep learning frameworks that comes in mind. It is arguably the most popular deep learning framework out there. Nothing justifies the statement better than the fact that Tensorflow is used by the likes of Uber, Nvidia, Gmail among other big corporations for developing state-of-the-art deep learning applications.

But right now, I am on a quest to find whether it indeed is the best deep learning framework. Or perhaps find what makes it the best out of all other frameworks it competes against.
Read more →
Total votes 14: ↑11 and ↓3 +8
Views 2.8K
Comments 0

Молчание вентиляторов. Google Colab, Javascript и TensorflowJS

AvitoTech corporate blog JavaScript *Machine learning *TensorFlow *

Google Colab — это бесплатный облачный сервис на основе Jupyter Notebook. Google Colab предоставляет всё необходимое для машинного обучения прямо в браузере, даёт бесплатный доступ к невероятно быстрым GPU и TPU. Заранее предупрежу, что у него есть некоторые ограничения, поэтому вы не сможете использовать его для production.


С помощью Google Colab вы можете легко обучить свою модель за считанные секунды. Он поддерживает Python (2/3) из коробки, так что всё должно быть хорошо, верно?


Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Views 32K
Comments 4

Интерактивные эксперименты с машинным обучением (на TensorFlow)

Python *JavaScript *Machine learning *Artificial Intelligence TensorFlow *
Tutorial
Translation

Вкратце


Я создал новый проект Интерактивные эксперименты с машинным обучением на GitHub. Каждый эксперимент состоит из Jupyter/Colab ноутбука, показывающего как модель тренировалась, и Демо странички, показывающей модель в действии прямо в вашем браузере.


Несмотря на то, что машинные модели в репозитории могут быть немного "туповатенькими" (помните, это всего-лишь эксперименты, а не вылизанный код, готовый к "заливке на продакшн" и дальнейшему управлению новыми Tesla), они будут стараться как могут чтобы:


  • Распознать цифры и прочие эскизы, которые вы нарисуете в браузере
  • Определить и распознать объекты на видео из вашей камеры
  • Классифицировать изображения, загруженные вами
  • Написать с вами поэму в стиле Шекспира
  • И даже поиграть с вами в камень-ножницы-бумагу
  • и пр.

Я тренировал модели на Python с использованием TensorFlow 2 с поддержкой Keras. Для демо-приложения я использовал React и JavaScript версию Tensorflow.


Интерактивные эксперименты с машинным обучением

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 5.3K
Comments 5

Машинное обучение с подкреплением через соревновательные нейронные сети

JavaScript *Machine learning *
Tutorial
🔥 Technotext 2020
В классической игре «крестики-нолики» существует возможность представить все вероятные ходы — и никогда не проигрывать. Эту возможность я использовал как метрику своего обучения нейронной сети игре.

Обучение с подкреплением будет полезным для задач с принятием неоднозначного решения, осложнённого из-за множества вариантов выбора действия с различными исходами для каждого.

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

Далее я опишу общий алгоритм обучения с подкреплением через соревновательные сети в контексте игры крестики-нолики с демонстрацией обученной сети делать “осмысленные” ходы, то есть играть.


Ссылки:
Запись игры обученной сети
Обучить сеть с нуля
Исходники

Также можно ввести предобученную модель из GitHub по нажатию на соответствующую кнопку, чтобы сразу начать испытывать нейронную сеть.
Читать дальше →
Total votes 2: ↑2 and ↓0 +2
Views 5.7K
Comments 3

TensorFlow.js: Часть 1: Использование Low-Level API для аппроксимации линейной функций

ReactJS *Machine learning *TensorFlow *
Tutorial
В настоящее время Python занимает доминирующую позицию для машинного обучения. Однако, если вы являетесь JS-разработчиком и заинтересованы окунуться в этот мир, то не обязательно включать в свой арсенал новый язык программирования, в связи с появлением TensorFlow.js.
Total votes 3: ↑3 and ↓0 +3
Views 5.2K
Comments 0

Машинное обучение. Нейронные сети (часть 2): Моделирование OR; XOR с помощью TensorFlow.js

ReactJS *Machine learning *TensorFlow *
Статья является продолжением цикла статей, посвященных машинному обучению с использованием библиотеки TensorFlow.JS, в предыдущей статье приведены общая теоретическая часть обучения простейшей нейронной сети, состоящей из одного нейрона:

Машинное обучение. Нейронные сети (часть 1): Процесс обучения персептрона

В данной же статье мы с помощью нейронной сети смоделируем выполнение логических операций OR; XOR, которые являются своеобразным «Hello World» приложением для нейронных сетей.
В статье будет последовательно описан процесс такого моделирования с использованием TensorFlow.js.
Total votes 11: ↑10 and ↓1 +9
Views 10K
Comments 0

Машинное обучение. Нейронные сети (часть 3) — Convolutional Network под микроскопом. Изучение АПИ Tensorflow.js

Machine learning *TensorFlow *

В предыдущих статьях, использовался только один из видов слоев нейронной сети – полносвязанные (dense, fully-connected), когда каждый нейрон исходного слоя имеет связь со всеми нейронами из предыдущих слоев.

Чтобы обработать, например, черно-белое изображение размером 24x24, мы должны были бы превратить матричное представление изображения в вектор, который содержит 24x24 элементов. Как можно вдуматься, с таким преобразованием мы теряем важный атрибут – взаимное расположение пикселей в вертикальном и горизонтальном направлении осей, а также, наверное, в большинстве случаев пиксел, находящийся в верхнем левом углу изображения вряд ли имеет какое-то логически объяснимое влияние друг на друга в большинстве случаев.

Для исключения этих недостатков – для обработки  изображений используют сверточные слои (convolutional layer, CNN).

Основным назначением CNN является выделение из исходного изображения малых частей, содержащих опорные (характерные) признаки, такие как ребра, контуры, дуги или грани. На следующих уровнях обработки из этих ребер можно распознать более сложные повторяемые фрагменты текстур (окружности, квадратные фигуры и др.), которые дальше могут сложиться в еще более сложные текстуры (часть лица, колесо машины и др.).

Например, рассмотрим классическую задачу – распознавание изображения цифр. Каждая цифра имеет свой набор характерных для них фигур (окружности, линии). В тоже самое время каждую окружность или линию можно составить из более мелких ребер (рисунок 1)

Читать далее
Total votes 8: ↑8 and ↓0 +8
Views 9K
Comments 0

Machine learning in browser: ways to cook up a model

Python *Node.JS *Machine learning *

With ML projects still on the rise we are yet to see integrated solutions in almost every device around us. The need for processing power, memory and experimentation has led to machine learning and DL frameworks targeting desktop computers first. However once trained, a model may be executed in a more constrained environment on a smartphone or on an IoT device. A particularly interesting environment to run the model on is browser. Browser-based solutions may be used on a wide range of devices, desktop and mobile, online and offline. The topic of this post is how to prepare a model for the in-browser usage.

This post presents an end-to-end implementations of a model creation in Python and Node.js. The end goal is to create a model and to use it in a browser. I'll use TensorFlow and TensorFlow.js as main frameworks. One could train a model in Python and convert it to JS. Alternative is to train a model directly in javascript, hence omitting the conversion step.

I have more experience in Python and use it in my everyday work. I occasionally use javascript, but have very little experience in the contemporary front-end development. My hope from this post that python developers with little JS experience could use it to kick start their JS usage.

Read more
Total votes 3: ↑3 and ↓0 +3
Views 1.6K
Comments 0

TensorFlowJS: использование обученных моделей без их модификаций в браузере

ReactJS *Machine learning *TensorFlow *

При работе с TensorFlowJS можно выделить три направления (рисунок 1):


1. использование обученных моделей без модификаций топологий и переобучений

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

3. создание и обучения моделей с нуля.

Читать далее
Total votes 4: ↑4 and ↓0 +4
Views 3.5K
Comments 0

Transfer Learning с использованием TensorFlow.JS

ReactJS *Machine learning *TensorFlow *

На практике в подавляющем большинстве вы не будете иметь дело с созданием новых моделей и обучением их с нуля на клиентской стороне. Чаще всего придется создавать модели на базе уже существующих. Эту технику называют Transfer Learning.

Кроме того, на мой взгляд Transfer Learning ­– это наиболее перспективная техника для использования на клиентской стороне с помощью TensorFlowJS. Большим преимуществом тут перед применением той же самой техники на сервере – это сохранение конфиденциальности клиентской информации и наличием возможности к доступа сенсоров (камера, гео-локации и др).

Принцип работы Transfer Learning прост. Вначале модель обучается на базе большого набора тренировочных данных. Во время процесса обучения, нейронная сеть извлекает большое количество полезных характеристик (признаков) конкретной решаемой задачи, которые могут быть использованы как база для новой, которая будет обучаться уже на малом числе тренировочных данных для более специфичной, но похожей задачи (рисунок 1). Таким образом, переобучение может происходить на устройствах с ограниченными ресурсами за относительно меньшее время.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Views 2K
Comments 0

Обнаружение эмоций на лице в браузере с помощью глубокого обучения и TensorFlow.js. Часть 2

SkillFactory corporate blog JavaScript *Programming *HTML *TensorFlow *
Tutorial
Translation

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

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

Соединив наш код отслеживания лица с набором данных об эмоциях на лице FER, мы обучим вторую нейросетевую модель определять эмоции человека по нескольким трехмерным ключевым точкам.

Приятного программирования!
Total votes 9: ↑9 and ↓0 +9
Views 3.7K
Comments 0

Обнаружение эмоций на лице в реальном времени с помощью веб-камеры в браузере с использованием TensorFlow.js. Часть 3

SkillFactory corporate blog JavaScript *Programming *HTML *TensorFlow *
Tutorial
Translation

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

Давайте сделаем это!
Total votes 9: ↑8 and ↓1 +7
Views 3.4K
Comments 1

Отслеживание лиц в реальном времени в браузере с использованием TensorFlow.js. Часть 4

SkillFactory corporate blog JavaScript *Programming *HTML *TensorFlow *
Tutorial
Translation

В 4 части (вы же прочли первую, вторую и третью, да?) мы возвращаемся к нашей цели – создание фильтра для лица в стиле Snapchat, используя то, что мы уже узнали об отслеживании лиц и добавлении 3D-визуализации посредством ThreeJS. В этой статье мы собираемся использовать ключевые точки лица для виртуальной визуализации 3D-модели поверх видео с веб-камеры, чтобы немного развлечься с дополненной реальностью.

Приятного программирования!
Total votes 6: ↑6 and ↓0 +6
Views 2.9K
Comments 0

Отслеживание лиц в реальном времени в браузере с использованием TensorFlow.js. Часть 5

SkillFactory corporate blog JavaScript *Programming *HTML *TensorFlow *
Tutorial
Translation

Носить виртуальные аксессуары – это весело, но до их ношения в реальной жизни всего один шаг. Мы могли бы легко создать приложение, которое позволяет виртуально примерять шляпы – именно такое приложение вы могли бы захотеть создать для веб-сайта электронной коммерции. Но, если мы собираемся это сделать, почему бы при этом не получить немного больше удовольствия? Программное обеспечение замечательно тем, что мы можем воплотить в жизнь своё воображение.

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

Приятного программирования!
Total votes 6: ↑6 and ↓0 +6
Views 3.4K
Comments 0

Мы создали Web приложение для определения лиц и масок для Google Chrome (часть 1)

JavaScript *System Analysis and Design *Algorithms *Image processing *Machine learning *
Translation

Основная цель - обнаружение лица и маски в браузере, не используя бэкенд на Python. Это простое приложение WebApp / SPA, которое содержит только JS-код и может отправлять некоторые данные на серверную часть для следующей обработки. Но начальное обнаружение лица и маски выполняется на стороне браузера и никакой реализации Python для этого не требуется.

На данный момент приложение работает только в браузере Chrome.

Читать далее
Total votes 8: ↑7 and ↓1 +6
Views 4.3K
Comments 7

Обзор анонсов TensorFlow на конференции Google I/O – 2021

Google Developers corporate blog Machine learning *TensorFlow *

Как многие из вас знают, недавно мы провели конференцию Google I/O – главное событие Google для разработчиков. В этом году конференция впервые проходила полностью в онлайн формате и пусть нам и не удалось провести конференцию в стандартном формате, мы надеемся, что смогли сделать ее доступной для всех желающих. На конференции было анонсировано много интересного для разработчиков практически всех направлений. В этой статье мы хотели бы сделать обзор новинок и обновлений в различных семействах продуктов в области машинного обучения и того, что представила команда TensorFlow. В конце статьи вы найдет список всех материалов.

Читать далее
Total votes 9: ↑8 and ↓1 +7
Views 3K
Comments 0

Как мы создали Web приложение для определения лиц и масок для Google Chrome (часть 2)

JavaScript *Programming *Algorithms *Image processing *Machine learning *
Translation
Определение лица и маски
В предыдущей статье я рассказывал о том, можно ли использовать машинное обучение (в частности определение лица и маски) в браузере, подходах к детекции и оптимизации всех процессов.
Сегодня я хочу рассказать о технических подробностях реализации.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 2.8K
Comments 2

Как при помощи ИИ сделать распознавание вводимых вами рукописных цифр прямо в браузере

SkillFactory corporate blog Website development *JavaScript *Machine learning *TensorFlow *
Tutorial
Translation

Эта статья для новичков и не претендует на высокий технический уровень, а если вам интересны сложные современные решения, обратите внимание, например, на статью о GIRAFFE, который для генерации реалистичного движения объединяет самые современные подходы в ИИ.

В конце статьи вы найдёте ссылки на проект очень простой веб-страницы с распознаванием рукописного ввода при помощи ИИ, а прочитав это руководство, переводом которого мы делимся к старту курса о машинном и глубоком обучении, сможете самостоятельно написать такую страницу. Для этого вам понадобится свой блокнот Colab или блокнот автора статьи. Скачиваемые блокнотом файлы модели занимают меньше мегабайта.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Views 4.3K
Comments 8

ML5.JS — это как TensorFlow только без нижних уровней

JavaScript *Machine learning *
Tutorial

На Хабре есть уже множество статей об крутой библиотеке TensorFlow.js, но я так и не смог найти что-то об ml5.js - это как TensorFlow, только здесь не надо заботиться об нижних уровнях нейросети. К слову ml5.js не хуже TensorFlow, просто эта библиотека уже больше подходит для каких-то упрощенных проектов где не требуется внедрять нейронную сеть с контролем например: тензоров или оптимизитаров. Да и сама библиотека ещё хорошо подойдет для тех кто ещё свой путь в машинном обучении.

И об этом сегодня и пойдет речь в нашей статье, где мы рассмотрим функционал ml5.js, рассмотрим какие примеры уже есть и как вообще работает код библиотеки. Поэтому, начинаем кодить.

Читать далее
Total votes 16: ↑15 and ↓1 +14
Views 5K
Comments 11
1