{"id":14287,"url":"\/distributions\/14287\/click?bit=1&hash=1d1b6427c21936742162fc18778388fc58ebf8e17517414e1bfb1d3edd9b94c0","title":"\u0412\u044b\u0440\u0430\u0441\u0442\u0438 \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0437\u0430 \u0433\u043e\u0434","buttonText":"","imageUuid":""}

face2sticker - бот, который превратит ваше фото в комикс-стикер. С текстом!

Как неудачное приложение из конкурса telegram обрело вторую жизнь. В telegram.

Идея

Этим летом telegram устроил конкурс по разработке мобильного приложения для создания стикеров.

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

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

¯\_(ツ)_/¯

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

face2sticker

В итоге получился telegram бот с одной функцией. Запустил я его еще летом, то есть до того, как это стало мейнстримом 😈

Работает просто:

- отправляете фото и текст @face2stickerbot
- получаете сами стикеры и их .png версии
- отправляете друзьям

Стикеры также можно добавить в стикерпак с помощью официального бота @stickers

.png файлы можно использовать как угодно, хоть в том же instagram - прозрачность там отлично работает.
Правда, это на самом деле не png, а webp, так как телеграм не дает отправить webp файлом :(

Детали

Расскажу немного о реализации.

Сам бот написан на TypeScript/telegraf.js, алгоритм обработки фото - на питоне.
Пример бота в связке с питоном. Ему уже пара лет, но если будет интерес, могу попробовать причесать код текущего бота и тоже выложить на гитхаб.

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

u2net создает маску для отделения ключевых объектов от фона,

RetinaFace обнаруживает лица и их ключевые точки.

Лицо вырезается, улучшается с помощью GPEN, стилизуется unet и вклеивается на фон, который также предварительно улучшается и стилизуется.

Вместе с этим изображения немного блюрятся и шарпятся для большего комикс-эффекта.

По координатам лица определяем, в какой части фото оно находится, и, исходя из этого, рисуем баббл с текстом. Вуаля!

Что дальше

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

Также в планах добавить и стикер-менеджмент, чтобы можно было создавать стикерпаки не отходя о кассы.

Если у вас есть какие-то пожелания - не забудьте отписать в комментах.

На этом все, спасибо за ваше время и крутых вам стикеров!
Как говорится, го тыкать, я создал -> @face2stickerbot

0
78 комментариев
Написать комментарий...
Невероятный Блондин

Ты не подумай, но выходит всрато пока ))

У База Лайтера на теле белые области и блики вырезало к херам.
Обводка мыльная и местами рваная, не кошерно.

Формат на выходе какой? Визуально выглядит как залупа 100х100

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

Но за старания аплодирую 👏🏼

Ответить
Развернуть ветку
Александр Спирин
Автор

За фидбек по статье спасибо, но вы и ботом воспользуйтесь ради интереса ;)

Ответить
Развернуть ветку
Невероятный Блондин

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

Это просто анрил.

Ответить
Развернуть ветку
Александр Спирин
Автор
Ответить
Развернуть ветку
Невероятный Блондин

Хаха ))
Со вторым плечом накосячил. Запорол отличный стикер.

Есть куда стремиться ;)

Ответить
Развернуть ветку
75 комментариев
Раскрывать всегда