Selectel

Инструкция: Создание нейронной сети без навыков программирования

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

Шаг 0. Разбираемся, как устроены нейронные сети

Проще всего разобраться с принципами работы нейронных сетей можно на примере Teachable Machine — образовательного проекта Google.

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

Например, можно научить Teachable Machine при поднятой вверх ладони говорить «Hi». При поднятом вверх большом пальце — «Cool», а при удивленном лице с открытым ртом — «Wow».

Для начала нужно обучить нейросеть. Для этого поднимаем ладонь и нажимаем на кнопку «Train Green» — сервис делает несколько десятков снимков, чтобы найти на изображениях закономерность. Набор таких снимков принято называть «датасетом».

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

Как только нейросеть обучена, её можно использовать. Teachable Machine показывает коэффициент «уверенности» — насколько система «уверена», что ей показывают один из навыков.

Кроткое видео о работе Teachable Machine

Шаг 1. Готовим компьютер к работе с нейронной сетью

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

Для создания собственной нейронной сети понадобится Python — один из наиболее минималистичных и распространенных языков программирования, и TensorFlow — открытая библиотека Google для создания и тренировки нейронных сетей.

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

Если у вас Windows: скачиваем установщик с официального сайта Python и запускаем его. При установке нужно поставить галочку «Add Python to PATH».

На macOS Python можно установить сразу через Terminal:

brew install python

Для работы с нейронной сетью подойдет Python 2.7 или более старшая версия.

Устанавливаем виртуальное окружение

Открываем командную строку на Windows или Terminal на macOS и последовательно вводим несколько команд:

pip install --upgrade virtualenv
virtualenv --system-site-packages Название
source Название/bin/activate

На компьютер будет установлен инструмент для запуска программ в виртуальном окружении. Он позволит устанавливать и запускать все библиотеки и приложения внутри одной папки — в команде она обозначена как «Название».

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

Вводим команду:

pip install tensorflow

Всё, библиотека TensorFlow установлена в выбранную папку. На macOS она находится по адресу Macintosh HD/Users/Имя_пользователя/, на Windows — в корне C://.

Можно проверить работоспособность библиотеки последовательно вводя команды:

python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow')
sess = tf.Session()
print(sess.run(hello))

Если установка прошла успешно, то на экране появится фраза «Hello, Tensorflow».

Шаг 2. Добавляем классификатор

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

Открываем страницу «Tensorflow for poets» на Github, нажимаем на кнопку «Clone or download» и скачиваем классификатор в формате ZIP-файла.

Затем распаковываем архив в созданную на втором шаге папку.

Шаг 3. Добавляем набор данных

Набор данных нужен для обучения нейронной сети. Это входные данные, на основе которых нейронная сеть научится понимать, какой цветок расположен на картинке.

Сначала скачиваем набор данных (датасет) Google с цветами. В нашем примере — это набор небольших фотографий, отсортированный по папкам с их названиями.

Содержимое архива нужно распаковать в папку /tf_files классификатора.

Шаг 4. Переобучаем модель

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

Переходим в папку с классификатором

Открываем командную строку и вводим команду, чтобы перейти в папку с классификатором.

Windows:

cd C://Название/

macOS:

cd Название

Запускаем процесс обучения

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

Что указано в команде:

  • retrain.py — название Python-скрипта, который отвечает за запуск процесса обучения нейронной сети.
  • output_graph — создаёт новый файл с графом данных. Он и будет использоваться для определения того, что находится на картинке.
  • output_labels — создание нового файла с метками. В нашем примере это ромашки, подсолнухи, одуванчики, тюльпаны или розы.
  • image_dir — путь к папке, в которой находятся изображения с цветами.

Программа начнет создавать текстовые файлы bottleneck — это специальные текстовые файлы с компактной информацией об изображении. Они помогают классификатору быстрее определять подходящую картинку.

Весь ход обучения занимает около 4000 шагов. Время работы может занять несколько десятков минут — в зависимости от мощности процессора.

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

Перед тестированием нейросети нужно открыть файл label_image.py, находящийся в папке scripts в любом текстовом редакторе и заменить значения в строках:

input_height = 299
input_width = 299
input_mean = 0
input_std = 255
input_layer = "Mul"

Шаг 5. Тестирование

Выберите любое изображение цветка, которое нужно проанализировать, и поместите его в папку с нейронной сетью. Назовите файл image.jpg.

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

python scripts/label_image.py --image image.jpg

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

Например:

Это значит, что с вероятностью 72% на картинке изображена роза.

Шаг 6. Учим нейронную сеть распознавать предпринимателей

Теперь можно расширить возможности нейронной сети — научить её распознавать на картинке не только цветы, но и известных предпринимателей. Например, Элона Маска и Марка Цукерберга.

Для этого нужно добавить новые изображения в датасет и переобучить нейросеть.

Собираем собственный датасет

Для создания датасета с фотографиями предпринимателей можно воспользоваться поиском по картинкам Google и расширением для Chrome, которое сохраняет все картинки на странице.

Папку с изображениями Элона Маска нужно поместить в \tf_files\flower_photos\musk\. Аналогично все изображения с основателем Facebook — в папку \tf_files\flower_photos\zuckerberg\.

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

Переобучаем и проверяем

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

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

python scripts/label_image.py --image image.jpg

Шаг 7. «Разгоняем» нейронную сеть

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

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

Создание сервера с Ubuntu

Нам понадобится сервер с операционной системой Ubuntu. Её можно установить самостоятельно, либо — если арендован сервер Selectel — через техподдержку компании.

Установка Python

sudo apt-get install python3-pip python3-dev

Установка TensorFlow

pip3 install tensorflow-gpu

Скачиваем классификатор и набор данных

Аналогично шагам 2 и 3 на компьютере, только архивы необходимо загрузить сразу на сервер.

Переобучаем модель

python3 scripts/retrain.py --output_graph=tf_files/retrained_graph.pb --output_labels=tf_files/retrained_labels.txt --image_dir=tf_files/flower_photos

Тестируем нейросеть

python scripts/label_image.py --image image.jpg
0
59 комментариев
Популярные
По порядку
Написать комментарий...
Markus Kartavyi

как "информативно". главное хорошо сайт прорекламировал:)

Ответить
1
Развернуть ветку
Юрин Иван

Заголовок статьи — ...Создание нейронной сети без навыков программирования
По тексту — устанавливаем Python...
:))

Ответить
16
Развернуть ветку
Илья Улетаев

Python это не язык программирования )))

Ответить
1
Развернуть ветку
Румата Эсторский

Да!? А что же то тогда?

Ответить
2
Развернуть ветку
Илья Улетаев

у вас видимо чувства юмора совсем нет...

Ответить
2
Развернуть ветку
Румата Эсторский

А это была шутка?

Ответить
2
Развернуть ветку
Maxim Ataev

Типа поставил питон — научился программировать? =)

Ответить
1
Развернуть ветку
Michael Sapogov

А еще и устанавливаем его с помощью brew, который тоже бы надо сначала поставить на macOS )

Ответить
1
Развернуть ветку
Настя Каргаполова

Ничоси показали туториал. Освой программирование за 10 минут с vc.ru!

Ответить
11
Развернуть ветку
Избирательный фитиль

Комментарий удален по просьбе пользователя

Ответить
–1
Развернуть ветку
Маленький бокал

Сделайте нейронку, чтобы на основе коммента на vc можно было определить принадлежность человека к определенной группе.

Ответить
6
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

Среднестатистический россиянин с зп 50к белыми в месяц.
У вас несколько преувеличенное представление о среднестатистическом россияние

Ответить
18
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

Не угадал малость.

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

В какой прекрасной стране я оказывается живу. Если я это среднестатистический россиянин.
50к я только за кредит в месяц плачу )))

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Mikhail Komlev

То неловкое чувство, когда люди меряются кредитами, а не доходами.

Ответить
24
Развернуть ветку
Олег Ивахнов

Ну я не менялся. Просто он сказал что у меня зп 50, а я ему привел небольшой пример указывающий на то, что это не так.

Ответить
0
Развернуть ветку
Настя Каргаполова

Ну, это косвенный показатель дохода.

Ответить
0
Развернуть ветку
Олег Ивахнов

У среднестатистического россиянина зарплата 35тр

Ответить
2
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

Интересно почитать развернутый анализ профиля в вк )

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

Маленький нюанс: я владелец бизнеса, а не наемный сотрудник.

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

В общем хреновая из тебя нейросеть получилась.

Ответить
16
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

Что угадал? Все в молоко.

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Олег Ивахнов

Я не хочу быть элиткой. Где я такое сказал?
Я зарабатываю больше озвученных изначально 50тр и больше чем "средний+1000длрв".
Это ни в коем случае не делает меня каким то элитарием в моих глазах .

Но статистика вещь суровая : если по стране средняя зарплата 35(или сколько там?) То человек зарабатывающий 10 уже не среднестатистический, и зарабатывающий 250-300-500 и тд тоже не среднестатистический.

Ответить
0
Развернуть ветку
Serg Guslyarov

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

Ответить
1
Развернуть ветку
Олег Ивахнов

Ты очень неправильно понял мое сообщение.
Оно указывало на то что цифры в статье сильно занижены.
Перевожу "если 120тр в Москве это средний класс то я балерина (олигарх в том случае)."

Забавно иногда читать как люди интерпретируют чужие слова и не воспринимают юмор.

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Артем Павлючук

Разговор с ботом он такой. Бот уверен - у него в коде так заложено.

Ответить
0
Развернуть ветку
Олег Ивахнов

у программиста в Москве зп больше

Не уверен) особенно после статьи про it вакансии

Живут на 35 и не являются мудаками

А я разве утверждал обратное?

Ответить
1
Развернуть ветку
Алексей Иванов

Опять редирект с двача на vc включили, вот и прибило сюда шерлока какого-то.

Ответить
4
Развернуть ветку
Александр Бех

Угадал, у парня IQ среднестатистического россиянина.

Ответить
0
Развернуть ветку
Олег Ивахнов

Icq

Ответить
0
Развернуть ветку
Андрей Владимиров

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

Ответить
1
Развернуть ветку
Маленький бокал

Я тут только комментарии читаю. Vc уже не тот.

Ответить
1
Развернуть ветку
Pixel Lens

А что щас рулит?

Ответить
0
Развернуть ветку
Маленький бокал

Телеграмм

Ответить
0
Развернуть ветку
Pixel Lens

Некорректное сравнение, как по мне. Всё равно что сказать "Гугл".

Ответить
4
Развернуть ветку
Alexander Petrov
Ответить
8
Развернуть ветку
Данил Василевский

Берёте самку репродуктивного возраста, оплодотворяете её. Через 9 месяцев появится нейронная сеть способная к обучению и развитию. И никаких навыков программирования не надо!

Ответить
4
Развернуть ветку
Maxim Syabro

Уточню: самку человека, если оплодотворяете сами.

Ответить
2
Развернуть ветку
Роман Романов

Сама самка не подходит?

Ответить
0
Развернуть ветку
Камаз Узбеков

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

Ответить
2
Развернуть ветку
Denis Brykov

Зато есть кнопочка "Заказать" :)

Ответить
4
Развернуть ветку
borodutch

А если кому интересно, как рили работают нейронки изнутри, то я написал статью "Нейронки за 5 минут" — даже самые заядлые гуманитарии поймут основные принципы: http://telegra.ph/Nejronki-za-5-minut-01-19 (сорямба за линк и сорямба за телеграф).

Ответить
2
Развернуть ветку
Semyashkin Oleg

Не открывает(

Ответить
1
Развернуть ветку
borodutch

Закинул на Хабр: https://habr.com/post/416211 — Телеграф, вроде как, в банк в России.

Ответить
2
Развернуть ветку
Semyashkin Oleg

Спасибо большое

Ответить
1
Развернуть ветку
Евгений Пешков

5 минут - непозволительная роскошь. нужно что-то более менее

Ответить
0
Развернуть ветку
Denis Veselov

А я всем интересующимся посоветую книгу "Создаем нейронную сеть" автор Т.Рашид. Прямо по-школьному просто и при этом достаточно интересно и правильно объясняется как работают нейронные сети изнутри (мат.аппарат), причем с примерами и кодом (не очень хорошим, но доходчивым).

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку
Superstartuper

Офф к редакции: обратите внимание на качество поиска на сайте. Эту статью найти через него непросто. Искал по запросу "нейросеть". Так постоянно - поиск очень странный, ни разу через него не находил конкретные статьи. Обычно ожидаешь, что сначала выдаются более свежие материалы по слову. Выхожу в Я-кс и уже с него захожу на конкретный искомый материал.

Ответить
0
Развернуть ветку
Виталий Морозов

Найти хорошее (не воду) сложновато ;)

Ответить
0
Развернуть ветку
Ренат Абясов

Ожидал построение через какой-нибудь визуальный конструктор, а-ля Asure ML Studio.

Ответить
0
Развернуть ветку
Антон Антонов

А если надо анализировать и распознавать не картинки, а какую-то кастомную информацию?

Ответить
0
Развернуть ветку
Виталий Морозов

Парсинг с "Мозгами"

Ответить
0
Развернуть ветку
Ivan Titov

""source" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом."

вот такую ошибку выдает(

Ответить
0
Развернуть ветку
Ivan Titov

если у кого-то на windows 10 не ставится tensorflow

python3 -m pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0-py3-none-any.whl

вот этим адресом всё работает.

Ответить
0
Развернуть ветку
Mark Prohorov

Ребят подскажите пожалуйста как можно практически использовать tf 4 poets? Я только начинаю разбираться как в программировании, так и в МЛ. Поставил всё это счастье на raspberry pi2 поставил туда apache, php, mysql по стандартам, для создания веб-приложений. В консоли всё работает. Как мне теперь закинуть фото и используя классификатор распознать что это за растение и выдать на сайте?

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку

Комментарий удален

Развернуть ветку
Ваня Новиков

нужно создать нейронную сеть которая по фото будет определять степень отработки моторного масла

Ответить
0
Развернуть ветку
Вадим Чернобровкин

Если самим нет времени заниматься наша команда сможет создать нейросеть любой сложности ООО "нейронные Технологии"

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
GamePlay Arcade

А тебе обещали?

Ответить
0
Развернуть ветку
Алексей Тарасов

Прикинь, да.

Ответить
0
Развернуть ветку
Читать все 59 комментариев
«Азбука вкуса» завоевала серебро и бронзу на международном конкурсе дизайна World Brand Design Society Awards

Проекты инхаус дизайн-студии «Азбуки вкуса» — упаковка Мосальского стейка и редизайн упаковки СТМ «Азбука вкуса» — получили серебряную и бронзовую награды в двух номинациях: Дизайн упаковки и Редизайн упаковки.

Авито и участники IT-коалиции подписали мировое соглашение с Яндексом
Люди на вырост: как it-компании получить новых сотрудников с нужными компетенциями

Чем занимаются стажеры «Ситимобила» — рассказывает (теперь уже) штатная сотрудница компании.

Avito доставка: Покупатель не принял товар, но при возврате он был выдан неизвестному лицу

Доброго времени дня. Вот и у меня произошла неприятная ситуация с Авито и Boxberry: вернувшийся мне товар в виде видеокарты GTX1070 стоимостью 35.000 руб. был вручен постороннему человеку без проверки документов.

«Яндекс» купит технологическую платформу рекламного сервиса eLama Статьи редакции

Платформа сохранит название и продолжит развиваться под брендом eLama.

Revolut запустил в США сервис для торговли акциями без комиссии Статьи редакции

До этого пользоваться приложением могли только жители Евросоюза и Великобритании.

На кого поставить при развороте рынка вверх
В новогоднюю ночь клиенты Yota переписывались в Viber и WhatsApp

По данным Yota, в период с 31 декабря по 1 января объем трафика мессенджеров Viber и WhatsApp среди пользователей оператора вырос более чем на 50% по сравнению с периодом 24-25 декабря.

«Альфа-банк»: звонки от фейковой «службы безопасности банка»

После оформления заявки на кредит на официальном сайте АльфаБанка, начали поступить звонки от мошенников

null