В своей первой статье на дзене хочу рассказать про то, как мы делали бота для наложения масок на фотографии людей
Ссылки на бота в telegram и вконтакте в конце статьи
Небольшое лирическое отступление
Многие люди со страхом смотрят в сторону искусственного интеллекта и машинного обучения, однако на самом деле технологиям предстоит еще многому научиться, прежде чем можно будет сравнивать человеческий мозг и компьютер. Сейчас благодаря алгебре и теории графов компьютеры научились воспроизводить базовые механизмы человеческого мозга и использовать их для решения очень узкоспециализированных задач. Например, можно найти 20000 фотографий апельсинов, вручную отметить их границы и скормить машине на обучение. После этого машина сможет находить на фотографиях апельсины(а еще заодно лимоны и мандарины, потому что для того, чтобы компьютер начал их отличать нужно натренировать еще одну модель, которая уже вырезанный из фотографии цитрусовый будет делить на лимоны, апельсины и пр.). Все это требует ручной работы с изображениями и пока очень плохо автоматизировано.
К счастью, определение лиц на фотографиях уже давно довольно простая задача(любая мыльница за 2 тысячи может делать это в реальном времени)
Первый шаг
Для начала нужно получить фотографию. Процесс написания ботов для социальных сетей заслуживает отдельной статьи, поэтому я просто напишу, что у меня уже был готовый обработчик входящих сообщений и этот шаг я пропустил.
Второй шаг
Получив изображение, нужно найти на нем лица. Как я уже писал выше, это давно решенная задача(хотя точность нахождения лиц оставляет желать лучшего). Я просто установил несколько готовых библиотек и написал 7 строчек кода.
Третий шаг
На этом шаге я снова воспользовался готовым решением, скачал один файл, написал еще 4 строчки кода и готово
Четвертый шаг
Тут помощь братьев программистов заканчивается и приходится действовать самому. Надо сделать маску, которую я буду надевать
Пятый шаг
Сделали маску, теперь ее надо надеть. Для этого я использовал уже имеющееся разбиение на треугольники и свои знания в линейной алгебре и матрицах.
Шестой шаг
Немного пошаманив с кодом добавил наложение тени (довольно сложный процесс, моя реализация далека от идеала)
Седьмой шаг
Добавил вычисление угла поворота головы. Сначала использовал сложную 3д модель и код из открытого источника, однако потом пришел к выводу, что методы школьной геометрии работают лучше, быстрее и понятнее
Восьмой шаг
Как вы могли заметить, на предыдущем шаге у Варламова не просто белая маска, а маска с фотографией. Это все из-за того, что пока я реализовывал седьмой шаг я заодно реализовал наложение фотографий на маску, а дизайнер успел нарисовать несколько масок специально для нашего бота
Девятый шаг
Шел параллельно с 7м и 8м шагами. Знакомый дизайнер нарисовал несколько масок, которые бот надевает по умолчанию.
Десятый шаг
Оформить группы, написать тексты и запустить бота. Желательно, чтобы пользователи максимально делились фотографиями, полученными в боте.
Сейчас прошло 5 дней с момента запуска, у нас более 700 пользователей и около 4000 обработанных фотографий.
Написать боту можно по ссылкам:
Бот в Вконтакте: @bbblur
Бот в Telegram: @bbblurBot
Дополнительный шаг
Мы добавили ненавязчивую рекламу (не рассылки, а ненавязчивые сообщения, с которыми вы можете ознакомиться, пока обрабатывается ваша фотография), которая позволит нам самим покупать рекламу. По вопросам размещения рекламы в боте обращайтесь к Богдану
Заключение
Надеюсь, что эта статья показалась вам интересной. Пишите в комментариях, о каких шагах стоит рассказать подробнее, ставьте лайки и пишите боту. Поставив на аватарку фото в маске вы убеждаете других людей, что маска - это не очередная блажь правительства, а действительно действенный инструмент для обезопашивания окружающих.