IT
April 5, 2022

Нейросети для нубов

Рефейсы, дипфейки и прочие чудеса XXI века бесплатно, без строчки кода и без крутой видеокарты.

Шалом, уважаемые. Этот текст написан ради простой цели: дать возможность как можно большему количеству людей использовать возможности нейронных сетей себе на пользу, причём бесплатно (но регистрация и СМС понадобятся). Не нужно будет писать ни единой строчки кода, всё уже написано за вас. Статья подразумевает только утилитарное использование нейронок без прихода в сознание. Также уточню, что всякие мобильные приложения даже не будем задевать, так как они цензурят контент или лепят поверх вотермарки, что лично меня не устраивает, да и рассказывать о них нечего, тиктокеры и те разобрались.

Как всё это вообще работает?

В нашем случае всё происходит благодаря Python, с его помощью сейчас пишется 99,9% нейронок. Код, работающий с нейросетями, мы будем запускать в Jupyter Notebook. Это проект, позволяющий запускать какой-либо код без настройки окружения и позволяющий выполнять код пошагово, видя результаты предыдущего шага. Обычно этим пользуются учёные, но нам тоже пригодится. Разумеется, эти ноутбуки мы будем запускать не на своём ПК, а на Google Colab. Это сервис, позволяющий бесплатно использовать кому угодно машинное время, но с некоторым ограничениями, которые мы будем частично обходить.

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

Что-то ещё нужно знать?

Да, конечно. Во-первых, в том же самом Colab вы можете работать не только с нейронками, но и с Python в целом, после чего можете расшарить ваш колаб (он же ноутбук, далее будет использоваться, как синоним выражения “ноутбук в среде Google Colab”) и дать кому-то ссылку, как на гугл-документ, к примеру. Применений тоже множество, если вы кодер.

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

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

В-четвертых, потыкать в базовый функционал и привыкнуть к интерфейсу колаба можно тут.

В-пятых, у бесплатного тарифа есть лимиты. О лимитах можно почитать на официальном сайте по-русски здесь. Если вкратце, ваша сессия ограничена 12 часами (это максимум), но есть и динамические лимиты на использование ресурсов (посмотреть их нигде нельзя). Графический чип вы тоже не можете выбрать, он даётся рандомно.

Плюсом есть интересный нюанс: вы не можете поставить колаб на выполнение какого-то действия и условно уйти спать. Гугл мониторит вашу активность во вкладке и если он её не обнаруживает в течение какого-то времени, то выполнение кода прерывается. Чтоб такого гадства не было, откройте консоль во вкладке с колабом (Ctrl+Shift+I) и запустите там этот скрипт, который будет кликать по кнопке коннекта раз в минуту:

function ClickConnect() {
  console.log('Working')
  document
    .querySelector('#top-toolbar > colab-connect-button')
    .shadowRoot.querySelector('#connect')
    .click()
}

setInterval(ClickConnect, 60000)

Если именно этот скрипт работать не будет (чего я не исключаю по прошествии какого-то времени), погуглите подобный и/или сообщите мне, пожалуйста.

Что по практической части?

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

1. Подготавливаем исходники. Рандомизатор на биологической основе выбрал портрет Николая I.

2. Переходим в колаб и нажимаем кнопку “Подключиться”. Ждём, когда на её месте появится график используемых ресурсов. Выглядеть это должно так:

Сюда жмем
Этого ждём

3. Теперь идём пошагово. Жмём на треугольник слева от первой ячейки, смотрим на вывод в ячейке и ждём галочки слева от треугольника.

Вот здесь жмём на треугольник
И ждём галочки слева
Если выдаст подобное предупреждение, соглашаемся и жмём "Выполнить"

4. Так как это демо-колаб, в нём нет интерфейса для выбора своей пикчи. Раз выбора нет, то ссылку на пикчу нужно будет менять вручную. Обычно в колабах есть кнопка для загрузки своего материала, но тут чёт нет, поэтому в переменной img меняем ссылку на нужную. После запуска ячейки будут показаны результаты выполнения.

Здесь я уже заменил ссылку в переменной img
Разметка лица
До и после

5. Ниже есть ячейка, показывающая результат преобразования более детально.

По идее можно сохранить и этот вариант, но мы идём дальше

6. В колабе есть и апскейлинг, будем увеличивать разрешение в 4 раза. Запускаем следующие две ячейки.

Прожатые ячейки
Кусочек апскейла

7. Теперь можно и сохранить аниме-императора с апскейлом в 4 раза. Жмём на следующую ячейку, жмём на значок папки слева, находим внутри файл “test.jpg”, жмём на три точки слева от него (появятся при наведении курсора) и скачиваем.

Жмём на эту ячейку
Сохраняем отсюда

8. Смотрим то, что получилось. Ещё я подготовил несколько пикч для более широкой демонстрации работы колаба.

Николай I
Николай II
Елизавета II

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

Где взять ещё колабов?

Я знаю только три варианта: гугл, GitHub и Telegram-каналы.

Почти все далее указанные Telegram-каналы – личные. Они не посвящены только колабам, там очень много и про нейросети/Machine Learning в целом. Это значит, что именно колабы нужно искать в самих каналах. На всякий случай уточню запросы для поиска колабов: колаб, colab. Опционально можно ещё “ноутбук” поискать, но этот термин редкий.

Telegram-каналы

https://t.me/denissexy
https://t.me/MLArt
https://t.me/derplearning
https://t.me/lovedeathtransformers
https://t.me/DeepFaker
https://t.me/NeuralShit
https://t.me/NeuralNoobs
https://t.me/labelmedata

Для тех, кого слишком заинтересовала тема и кто хочет поиграть с нейронками похардкорнее: https://t.me/vlad_pedro/3524