Найти тему
Blur

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

Оглавление

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

Ссылки на бота в telegram и вконтакте в конце статьи
Фото Ильи Варламова, обработанное нашим ботом
Фото Ильи Варламова, обработанное нашим ботом

Небольшое лирическое отступление

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

К счастью, определение лиц на фотографиях уже давно довольно простая задача(любая мыльница за 2 тысячи может делать это в реальном времени)

Первый шаг

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

Второй шаг

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

Нашли лицо Ильи, но что нам с ним делать?
Нашли лицо Ильи, но что нам с ним делать?

Третий шаг

На этом шаге я снова воспользовался готовым решением, скачал один файл, написал еще 4 строчки кода и готово

Нашли 68 основных точек на лице Варламова (и даже борода нам не помешала). Нужные мне точки соединены линиями
Нашли 68 основных точек на лице Варламова (и даже борода нам не помешала). Нужные мне точки соединены линиями

Четвертый шаг

Тут помощь братьев программистов заканчивается и приходится действовать самому. Надо сделать маску, которую я буду надевать

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

Пятый шаг

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

Вам ведь тоже уже надоел Варламов?
Вам ведь тоже уже надоел Варламов?

Шестой шаг

Немного пошаманив с кодом добавил наложение тени (довольно сложный процесс, моя реализация далека от идеала)

Просто подходящая фотография
Просто подходящая фотография

Седьмой шаг

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

Ой, опять Варламов. На этой фотографии он повернул готову, поэтому веревочки с правой стороны не рисуются
Ой, опять Варламов. На этой фотографии он повернул готову, поэтому веревочки с правой стороны не рисуются

Восьмой шаг

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

Иван Ургант в маске с названием нашего бота
Иван Ургант в маске с названием нашего бота

Девятый шаг

Шел параллельно с 7м и 8м шагами. Знакомый дизайнер нарисовал несколько масок, которые бот надевает по умолчанию.

Снова Ургант, снова в маске, но теперь с другим рисунком
Снова Ургант, снова в маске, но теперь с другим рисунком

Десятый шаг

Оформить группы, написать тексты и запустить бота. Желательно, чтобы пользователи максимально делились фотографиями, полученными в боте.

Сейчас прошло 5 дней с момента запуска, у нас более 700 пользователей и около 4000 обработанных фотографий.

Написать боту можно по ссылкам:

Бот в Вконтакте: @bbblur

Бот в Telegram: @bbblurBot

Дополнительный шаг

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

Вот так выглядит реклама
Вот так выглядит реклама

Заключение

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