Как подключить нейросеть к сайту

Запускаем нейросеть на домашнем компьютере

Пошаговое руководство для начинающих

Сегодня у нас нестандартный проект: будем устанавливать и запускать настоящую нейросеть у себя на компьютере.

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

И ещё: нейросети — это на самом деле скучно, медленно и не очень эффектно в настройке. Мы привыкли сразу видеть классный и красивый результат, а то, что было до этого, нам обычно не показывают. Эта статья работает наоборот: долго показывает весь процесс, а финальный результат получается за пару секунд.

В этом суть нейросетей: долгая и кропотливая работа ради эффектной концовки.

Что сделаем

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

Как собрать и настроить такой датасет — расскажем в другой раз.

Что понадобится

Python версии 3.8 и выше, обязательно под архитектуру x64. Если взять 32-разрядную версию, то нужная в проекте библиотека tensorflow работать не будет. Мы использовали версию 3.9.7.

Остальное установим в процессе. Главное — рабочий Python (по ссылке — как его установить).

👉 Все команды, которые есть в проекте, мы будем запускать в командной строке. Чтобы не было ошибок и затыков, лучше всего запустить её от имени администратора (в Windows) или с правами суперпользователя root (в Mac OS и Linux).

Создаём виртуальное окружение

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

Чтобы подключить себе виртуальное окружение, запускаем команду:

Как подключить нейросеть к сайту

Теперь можно устанавливать окружение. Для этого придумаем ему название — мы выбрали tell-me, но вы можете выбрать любое другое:

Как подключить нейросеть к сайту

Эта команда создаст папку на компьютере (путь к ней можно посмотреть на предыдущем скриншоте на третьей строке, параметр «dest») и запустит в ней виртуальное окружение:

Как подключить нейросеть к сайту

Устанавливаем tensorflow

Tensorflow — открытая библиотека для машинного обучения и работы с нейросетями. Она будет отвечать за то, чтобы наш компьютер мог запустить нейросеть и правильно с ней работать.

Для установки пишем команду:

pip install tensorflow

Как подключить нейросеть к сайту

pip — это программа, которая отвечает в Python за скачивание, установку и обновление библиотек и вспомогательных пакетов. Это как магазин приложений Apple, только для командной строки и для разработчиков.

Чтобы убедиться, что библиотека установилась правильно и работает штатно, проверим её простым тестом.

2. Начало командной строки поменялось на >>> — это значит, питон готов к приёму своих команд. Пишем по очереди такое:

hello = tf.constant(‘Hello, TensorFlow’)
sess = tf.compat.v1.Session()
print(sess.run(hello))

Если в ответ питон нам выдал что-то вроде ‘Hello, TensorFlow’, это значит, что мы всё сделали правильно.

Как подключить нейросеть к сайту

Устанавливаем классификатор

Классификатор в нейросетях — это алгоритм, который смотрит на объекты и пытается понять, к какой категории их отнести. То есть классифицировать.

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

Как подключить нейросеть к сайту

3.Копируем содержимое архива в папку tell-me. Если вы выбрали другое название для проекта, замените tell-me на своё название.

Добавляем фото для обучения

Скачиваем уже собранный датасет с цветами, распаковываем его и копируем в папку tell-me → tf_files.

Как подключить нейросеть к сайту

Адаптируем скрипты под актуальную версию tensorflow

👉 На момент написания статьи актуальная версия tensorflow — 2.0. Но скрипты и алгоритмы, которые мы используем, заточены под старую версию, поэтому нужно применить немного магии автозамены:

Благодаря этому колдунству мы заставим старый скрипт работать с новой библиотекой.

Обучаем нейросеть

python scripts/retrain.py
—output_graph=tf_files/retrained_graph.pb
—output_labels=tf_files/retrained_labels.txt
—image_dir=tf_files/flower_photos

Пошёл процесс обучения. В нём 4000 этапов, по времени занимает примерно 20 минут. За это время нейросеть обработает около 250 фото (это очень мало для нейросети) и научится отличать розу от ландышей:

Как подключить нейросеть к сайту

Запускаем нейросеть

Чтобы проверить работу нашей нейросети, скачиваем любой файл с розой из интернета, кладём его в папку tell-me (или как у вас она называется) и пишем такую команду:

Нейросеть думает, а потом выдаёт ответ в виде процентов. В нашем случае она на 98% уверена, что это роза:

Как подключить нейросеть к сайту

А вот как нейросеть реагирует на фото Цукерберга:

Как подключить нейросеть к сайту

50% — что на фото тюльпан, и на 18% — что это одуванчик. А всё потому, что она умеет различать только 5 видов цветов, а не всяких там цукербергов.

Источник

Нейронные сети на JS. Создавая сеть с нуля

Как подключить нейросеть к сайту

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

Но врожденные любознательность и энтузиазм довели меня до того, что я стал одним из разработчиков Synaptic — проекта фреймворка для построения нейронных сетей на JS с 3к+ звезд на GitHub. Сейчас мы с автором фреймворка занимаемся созданием Synaptic 2.0 с ускорением на GPU и WebWorker-ах и с поддержкой почти всех основных фич любого приличного NN-фреймворка.

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

Для начала — маленькая предыстория.

В конце октября я выступал с докладом на мероприятии #ITsubbotnik в Петербурге и начал тему, которую решил продолжить здесь. Давайте поговорим о том, как написать с нуля нейронную сеть на JavaScript.

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

Что такое нейронная сеть?

Лучшее из определений я услышал от одного умудренного опытом человека на конференции. Он сказал, что нейронные сети — это просто красивое название, которое придумали, потому что на определение «цепочки операций над матрицами» грант получить куда сложнее.

В общем-то это очень точно описывает реальную ситуацию с нейронными сетями. Это крутая и мощная технология, но хайпа вокруг нее больше, чем реальной информации. Тот же самый Google Brain, делающий вещи вроде «нейронная сеть изобрела алгоритм шифрования», стабильно подвергается высмеиванию за них в тематических сообществах, так как кардинально новых идей в таких вещах не содержится, и делаются они, в первую очередь, для привлечения внимания и пиара компании.

Чтобы объяснить, что такое сеть, нужно зайти немного издалека.

С точки зрения Data Scientist-ов (еще есть точка зрения нейробиологов, например) нейронная сеть — это один из инструментов моделирования какого-либо физического процесса. И любой из инструментов моделирования работает следующим образом:

Линейная зависимость

В качестве примера можно взять металлургию. Представим, что у нас есть сплав из 2 металлов. Если мы берем 80% чугуна и 20% алюминия (например), балка из такого сплава сломается, если на нее будет давить одна тонна. Если берем 70%+30% — она сломается, если будет давить 2 тонны. 60%+40% — 3 тонны.

Можно предположить, что вариант 50%+50% должен выдержать 4 тонны. В жизни все работает немного иначе, но упрощая — можно представить себе, что оно так работает.

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

Одним из самых простых и эффективных инструментов является линейная регрессия. Пример выше — где % в сплаве прямо пропорционален максимальной нагрузке — является линейной регрессией.

В общем виде линейная регрессия выглядит следующим образом:

Стоит запомнить термин «weight», вес. В дальнейших примерах он тоже будет использоваться. Весом (или значимостью) каждого параметра называется его значимость в нашей предсказательной модели — а и нейронная сеть, и линейная регрессия — всё суть модели для предсказания.

Вес “bias”, или в переводе на русский “сдвиг” — это дополнительный параметр, который характеризует значение в нуле.

Нелинейная зависимость

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

Одним из хороших примеров для изучения является датасет (набор данных) титаника со статистикой по выжившим людям.

Если поиграться с интерактивной визуализацией, можно увидеть, что в среднем женщин выжило больше. Однако если углубиться в детали, заметим, что среди экипажа и третьего класса — процент выживания был куда меньше. Чтобы построить более точную предсказательную модель, нам нужно каким-то образом записать в ней — «если это женщина и она из 1 класса, то она имела +10% вероятности выжить».

Ребята от науки предложили простую схему — такие параметры назвать дополнительными фичами и использовать их в оригинальной функции. То есть к нашим x1, x2, x3 и так далее добавляется еще один xN+1, который равен 1, если это женщина из первого класса, и 0, если нет. Потом появляются еще и еще параметры, и мы начинаем все это учитывать в наших расчетах.

Как на языке математики можно описать функцию «если условие, то 1, иначе 0″?

Если решать задачу в лоб, сделав аналог тернарного оператора, то у нас будет функция, график для которой выглядит так:

Как подключить нейросеть к сайту

Как подключить нейросеть к сайту

Эта функция называется функцией активации.

В итоге мы получаем новый параметр через функцию вида

Такая функция называется перцептроном.

Перцептрон — это простейший вид нейронной сети, не имеющий скрытых слоев. В визуальном представлении он выглядит как-то так:

Как подключить нейросеть к сайту

Если посмотреть на картинку из статьи «нейронная сеть» на википедии, то можно заметить очень большую схожесть:

Как подключить нейросеть к сайту

И мы подошли к определению нейронной сети с точки зрения реализации.

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

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

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

Нейронная сеть в коде

С нейронными сетями самым популярным примером является реализация XOR, это своеобразный Hello World для изучающих data science.

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

Датасет для нее выглядит таким образом:

Итак, нам нужно как-то реализовать XOR исключительно с помощью сложений и нелинейной функции, которое на вход принимает одно число.

Вот как выглядит такая реализация (пока без нейронной сети):

Где h1 и h2 — это скрытые параметры.

Или, если попытаться добавить веса, то получается:

Как выглядит наша функция нейронной сети? Ну, мы заменяем веса на случайные значения.

При попытке запустить сеть мы получаем кашу.

Теперь перед нами встает задача «найти наиболее правильные веса». Зачем мы это сделали?

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

Вернемся к поиску правильных весов. Чтобы выполнить его, нам необходимо сначала понять, что мы хотим уменьшить. Нам нужна какая-то функция, которая позволяет определить, насколько сильно мы ошиблись. А при попытке изменить наши веса — понять, движемся ли мы в правильном направлении или нет.

Для XOR мы будем использовать среднее квадратов ошибок.

Ученье — свет

Настало время учить нашу сеть.

Немного отступая назад, нам стоит разобраться, как «обучается» линейная регрессия. Работает она следующим образом — у нас есть тот же самый MSE (mean squared error), и мы пытаемся его уменьшить. Если вспомнить курс математики, то график квадрата от X выглядит так:

Как подключить нейросеть к сайту

И наша задача — скатиться к самому минимуму этой параболы.

Если представить себе это визуально, выглядеть это будет как-то так:

В комментариях пишут, что изначально эта картинка из курса Andrew Ng

Если мы представим нашу функцию ошибки как (f(x) — y) * 2, то производная от нее будет равна 2 (f(x) — y) f'(x). Пруф)

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

Вживую

Наверное, пора просто показать код с объяснением происходящего.

Вставлять такой объем кода в хабр — довольно жестокое занятие, поэтому я выложил код с большим количеством комментариев на RunKit:

и на всякий случай — дубль кода в gist.github.com

Заключение

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

А если вы хотите поучаствовать в разработке фреймворка для нейронных сетей, подключайтесь к нам с Cazala.

Источник

19 отличных бесплатных нейросетей

Как подключить нейросеть к сайту

К 2019 году искусственные нейронные сети стали чем-то большим, чем просто забавная технология, о которой слышали только гики. Да, среди обычных людей мало кто понимает что из себя представляют нейросети и как они работают, но проверить действие подобных систем на практике может каждый – и для этого не нужно становиться сотрудником Google или Facebook. Сегодня в Интернете существуют десятки бесплатных проектов, иллюстрирующих те или иные возможности современных ИНС, о самых интересных из них мы и поговорим.

Из 2D в 3D

Как подключить нейросеть к сайту

На этом сервисе вы сможете вдохнуть новую жизнь в свои старые фотографии, сделав их объемными. Весь процесс занимает меньше минуты, необходимо загрузить изображение и через несколько секунд получить 3D-модель, которую можно покрутить и рассмотреть во всех деталях. Впрочем, есть два нюанса — во-первых, фотография, должна быть портретной (для лучшего понимания требований на главной странице сайта представлены наиболее удачные образцы снимков, которые ранее загружали другие пользователи; во-вторых, детализация получаемой модельки зачастую оставляет желать лучшего, особенно, если фотография в низком разрешении. Однако авторы разрешают не только ознакомиться с результатом в окне браузера, но и скачать получившийся файл в формате obj к себе на компьютер, чтобы затем самостоятельно его доработать.

Нейминг брендов

Как подключить нейросеть к сайту

Придумали крутую идею для стартапа, но не можете определиться с именем для будущей компании? Достаточно вбить несколько ключевых слов, задать длину названия в символах и готово! В общем, больше не нужно искать на фрилансе людей, которые будут решать такой личный вопрос, как наименование дела всей вашей жизни.

Выбор досуга

Как подключить нейросеть к сайту

Пересмотрели все интересные вам фильмы, прочли все достойные книги и не знаете чем занять вечер? Система рекомендаций от специалиста по искусственному интеллекту Марека Грибни расскажет как увлекательно и с пользой провести свободное время. Для корректной работы сервиса вас сперва попросят указать ваши любимые произведения в кинематографе, литературе, музыке или живописи.

Рай для искусствоведа

Как подключить нейросеть к сайту

Google специально для поклонников современного (и не только) искусства запустила проект Google Arts & Culture, в котором можно подобрать произведения по вашему вкусу как от малоизвестных, так и от малоизвестных авторов. Большая часть контента здесь на английском, но если вы не дружите с языками, можно воспользоваться встроенным переводчиком.

Озвучивание картинок

Как подключить нейросеть к сайту

Японская студия Qosmo разработала очень необычную нейросеть Imaginary Soundscape, которая воспроизводит звук, соответствующий тому или иному изображению. В качестве источника информации вы можете указать ссылку на любую картинку в Интернете, загрузить свой файл либо выбрать случайную локацию на Google Maps.

Не умеешь рисовать – тогда тебе к нам!

Как подключить нейросеть к сайту

Если вы пробовали использовать рукописный ввод на своем смартфоне, эта нейросеть покажется вам до боли знакомой: она превращает любые каракули в аккуратные 2D-рисунки.

Генерация людей

Как подключить нейросеть к сайту

Thispersondoesnotexist – это один самых известных AI-проектов. Нейросеть, созданная сотрудником Uber Филиппом Ваном, выдает случайное изображение несуществующего человека при каждом обновлении страницы.

Генерация… котов

Как подключить нейросеть к сайту

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

Быстрое удаление фона

Как подключить нейросеть к сайту

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

Написать стихотворение

Как подключить нейросеть к сайту

Компания ‘Яндекс’, известная своей любовью к запуску необычных русскоязычных сервисов, имеет в своем портфолио сайт, где искусственный интеллект составляет рандомные стихотворения из заголовков новостей и поисковых запросов.

Окрашивание черно-белых фотографий

Как подключить нейросеть к сайту

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

Апскейлинг фото

Как подключить нейросеть к сайту

Лет 10-15 назад камеры мобильных устройств не отличались высоким разрешением, и слабый сенсор в телефоне никак не мог справиться с детализированной картиной окружающего мира. Теперь же, если вы захотите повысить разрешение своих старых фотографий, это можно сделать на сервисах вроде Bigjpg и Let’s Enhance, которые позволяют увеличить размер изображения без потери в качестве.

Чтение текста голосом знаменитостей

Как подключить нейросеть к сайту

Благодаря высоким технологиям, сегодня у вас есть возможность озвучить любую фразу голосом самых известных в мире людей. Все просто: пишите текст и выбираете человека (среди последних — Дональд Трамп, Тейлор Свифт, Марк Цукерберг, Канье Уэст, Морган Фриман, Сэмюель Л Джексон и другие).

Описание фотографий

Как подключить нейросеть к сайту

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

Музыкальная шкатулка

Напоследок расскажем о целой пачке нейросетей от Google, первая из них – Infinite Drum Machine. Открыв страницу приложения, вы увидите своеобразную карту, на которой находятся самые разнообразные звуки. С помощью круглых манипуляторов можно изменять сочетание элементов, если получившийся набор покажется вам бессмысленным, нажмите кнопку Play в нижней части экрана и звуковая картина сложится сама собой.

Птичий хор

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

Виртуальный пианист

В A. I. Duet пользователю предлагается сыграть какую-нибудь мелодию на пианино, а искусственный интеллект попробует самостоятельно закончить композицию, подобрав наиболее логичное и гармоничное продолжение.

Распознавание рисунков

Как подключить нейросеть к сайту

Еще во время первых экспериментов с нейросетями в середине прошлого века основной задачей машинного обучения было распознавание визуальных образов. Спустя десятки лет эта технология выбралась из лабораторий и доступна всем желающим: на сайте quickdraw.withgoogle.com/ вам предложат быстро рисовать простые наброски определенных предметов, при этом ИИ будет все время комментировать происходящее на экране синтезированной речью.

Объяснение логики машинного обучения

Как подключить нейросеть к сайту

Проект Visualizing High-Dimensional Space (“Визуализация многомерного пространства”) создавался для того, чтобы объяснить простым людям и начинающим разработчикам, как работают нейросети. Когда ИИ, оперируя большими базами данных, получает информацию (например, вашу фотографию, введенную фразу или только что нарисованное изображение), он сравнивает входящие данные с теми, что у него уже есть. VHDS наглядно демонстрирует корреляцию одного лишь выбранного вами слова с миллионами аналогичных понятий.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *