7149
Обо мне: karfly.github.io – @karfly
Локализация – это боль. Но GPT-4 поможет
Еще когда мы делали Avatarify, я понял, что локализация приложения на N языков – это супер боль в попе 💩. Мы пользовались сервисом, куда ты закидываешь свой .strings файл, и носители языка руками (и глазами) переводят его.
Процесс был ужасно медленным (ждешь перевода несколько дней), да еще и дорогим (платишь за каждую строчку и язык). Но самое главное – локализация блочила релизы, т.к. на каждый чих в интерфейсе надо было делать перевод.
Долгое время в моем боте @chatgpt_karfly_bot (юзайте его, это самый удобный способ взаимодействия с ChatGPT/GPT-4!) было только 2 языка: 🇬🇧 Английский и 🇷🇺 Русский. Но стало приходить много юзеров с самых разных стран, и появился запрос на локализацию.
Как устроена локализация в боте
Если упрощать (без потери общности), то есть strings.yml, в котором содержатся все ui-строчки для разных языков. Для каждого юзера мы знаем его язык, и в боте отображаем ему строчки для этого языка.
Файл вида (yaml):
hello_message:
en: |-
Hello, {username}! How can I <b>help</b> you today?
ru: |-
Привет, {username}! Как я могу вам <b>помочь</b>?
...
Задача – научиться переводить такие файлы на все языки автоматически с помощью GPT-4. За основу я взял ноутбук, написанный Егором и допилил его.
Работает так:
1. На вход подаешь список желаемых языков (в моем случае 14 штук) и strings.yml
2. Код находит строчки, для которых нет перевода
3. И переводит их с помощью правильного промптинга GPT-4
4. Переведенные строчки дампятся обратно в strings.yml
5. Заходишь в merge editor в VS Code, проверяешь все глазами
6. git add/commit/push
Изначально в strings.yml было около 1 700 строк (английский и русский языки). После добавления еще 12 языков стало 10 000 строк! Если бы я руками это все переводил через DeepL, то процесс занял бы около 17 часов (и минус психика 😵💫).
*В комментах поделитесь, как вы решаете эту проблему у себя. Мне интересно узнать, какие сервисы, библиотеки и подходы вы используете для локализации!
🎒 @karim_iskakov
Сегодня в @chatgpt_karfly_bot число юзеров перевалило за 300K!
За все время в него прислали более 1.5M (!) сообщений. По отзывам многих пользователей наш бот самый удобный и быстрый в Телеграме. Но у меня есть идеи, как из бота сделать кое-что большое...
🧑🏼💻 Своих рук для этого уже не хватает, поэтому ищу крутого Python Backend разработчика.
Я ищу человека, который любит кодить, любит много кодить. Которого не надо микроменеджить, который любит брать ответственность. Который не просто имплеменит фичу, а глубоко понимает, почему и для кого он имплементит эту фичу. Который готов (и даже рад) сложным и амбициозным задачам.
– Что нужно точно уметь: хорошо кодить, asyncio, docker compose, работа с бд, rest api
– Что желательно уметь: python-telegram-bot, llm и все что с этим связано, ml/llm-ops
Мне навскидку кажется, что идеальный кандидат – это тот, кто сейчас работает в компании, но глобально хочет когда-то начать делать свой стартап. У нас можно будет посмотреть, как это происходит изнутри (как рождаются идеи, прототипируются/тестируются MVP и пр). Будем рады, если в итоге получится вместе работать не только над ботом, но и над нашими будущими проектами.
Условия:
– Part-time (20ч/нед)
– ЗП: $2-3K (обсуждаемо)
– Удаленка
– За успешную рекомендацию бонус 300$
Куда писать:
– В тг: @karfly
– Скидывайте CV, но лучше в нескольких предложениях написать про релевантные проекты, в которых участвовали, и что там делали (без булщита)
Как интерфейсы победили технологии
Думали ли вы о том, что ChatGPT стал такие популярным не благодаря технологическому скачку, а благодаря тому, что кто-то умный внутри OpenAI обернул модель в формат чата, с которым было очень легко взаимодействовать, без дополнительных окон или кнопок. Бум - и у тебя 100М пользователей за 2 месяца. При этом вы попадали туда сразу
Вроде бы мысль простая, но я хочу показать на примере двух продуктов, как это можно было понять или не понять:
1) Первый - наш обозреваемый OpenAssistant - коллаборативный проект, supervised fine-tune открытой языковой модели. Модель работает хорошо, они сделали ее сами, но есть нюанс.
На скриншоте я показал, что в интерфейсе есть лишний шаг, чтобы попасть в чат. При этом кнопка плохо ищется глазами. Если ты не технарь, половина кнопок тебе нафиг не нужна. В чате остановить генерацию нельзя. Комон - вы же можете просто скопировать интерфейс OpenAI. Один лишний шаг на этапе доступа к основной функции может сломать все конверсии.
2) Бот для перевода голосовых сообщений в текст. Тут достаточно просто попробовать. Я реально перешел из премиум функции Telegram к данному боту, так как можно пересылать откуда угодно сообщение, оно распознается лучше (спасибо Whisper), умеет делать суммари (и хорошо, хотя функция тоже простая), можно переслать файлы из WhatsApp (не пишите мне туда) и в боте удобно встроена оплата.
Вроде очень простая задача, но я тестировал кучу сервисов и тут ребята обернули чужие нейронки в удобную оболочку, и я уверен, что это будет иметь много лояльных пользователей.
В общем, техно-гикерство - это круто, но если вы хотите сделать массовый продукт, то надо думать про интерфейсы и пользовательский опыт. Иначе создать привычку у пользователей будет невозможно. Учимся на чужих ошибках.
@aihappens
Realtime NeRF inference in browser! Try it out:
🌐 https://phog.github.io/snerg/#demos
📉 @loss_function_porn
New banger from OpenAI – DALL·E (Dalí + WALL·E).
It generates images from text captions and it's fucking amazing! You must go to the webpage and stare at other examples 🤯
🌐 openai.com/blog/dall-e
📉 @loss_function_porn
MPG: A Multi-ingredient Pizza Image Generator with Conditional StyleGANs
Work on conditional image generation
ArXiV: https://arxiv.org/abs/2012.02821
#GAN #DL #food2vec
Turning selfie video into Deformable NeRF for high-fidelity renderings from novel viewpoints.
The work smashes previous methods (Neural Volumes, NeRF) in terms of quality by a wide margin. Just look at these curls at 0:46 (timecode is clickable)!
🌐 nerfies.github.io
📝 arxiv.org/abs/2011.12948
📉 @loss_function_porn
Deep generative model writes programs to build novel 3D chairs from cuboids. Well-learned latent space supports interpolations between programs. No doubt, the next step is to train an embedder from IKEA assembly instructions.
🌐 rkjones4.github.io/shapeAssembly
📝 arxiv.org/abs/2009.08026
📉 @loss_function_porn
One (of few) GAN applications – generation of 3D landscape patches (desert dunes, rocky mountains, snow hills, etc). Results are more realistic than Perlin noise. Available as a Unity plugin.
🌐 apseren.com/mlterraform
📝 Online demo
📉 @loss_function_porn
in3D: app for creating photorealistic 3D avatars. Dance in AR, pick the perfect size for jeans or even export 3D model to GTA V. iPhone X and higher is required
📱 apple.co/30Xm7MT
🌐 in3d.io
📉 @loss_function_porn #friends
Автоматический монтаж видео
Part 2 (первая часть тут)
Итак, спустя год после "проверки спроса" мы сделали работающий MVP.
🍬 Идея продукта
Провели касдевы и выявили несколько проблем в монтаже видео:
⤷ Сложно придумать идею монтажа
⤷ Сложно найти музыку
⤷ Проблема "белого листа"
Мы не питали иллюзий, что можно получить контент от юзера и сразу выдать ему идеально смонтированный ролик. Мы не можем залезть к юзеру в голову, да и технологий еще недостаточно.
Поэтому мы решили сделать не 🪄магическую палочку, а инструмент с вот таким флоу:
1. Юзер загружает свой контент
2. И получает ♾ бесконечную ленту автоматически смонтированных видео под разную музыку
С таким флоу, юзер может за 10 минут 🕖 посмотреть кучу вариантов монтажей. Выбрать самый классый и минимально дотюнить его руками. Также это бьет по всем проблемам из касдевов.
⚙️ Технология
Мы руками разметили 20+ треков. Каждый трек – это шаблон, в котором размечены переходы (чтобы идеально попадать в бит), тип контента, какой наложить эффект и пр.
Написали автоэдитор, который принимает контент и шаблон, и выдает смонтированное видео. Использовали всякие умные эвристики и рендерили с помощью ffmpeg.
Также сделали "рекомендательную систему", которая ранжировала шаблоны, исходя из входного контента. Например, если скинули мало видосов, то мы сначала покажем юзеру короткие шаблоны.
Реализовали в виде Телеграм-бота
📊 Результаты
Сухая статистика (на данный момент):
⤷ 5K юзеров
⤷ 40K созданных видео
⤷ 30+ купленных подписок (монетизацию включили только в феврале)
Однако нас не удовлетворил ретеншен, конверсия в подписку, а также появились сильные конкуренты: Reels-шаблоны в Инстаграме и автомонтаж в CapCut (TikTok).
Поэтому данный продукт мы поставили на паузу. Может быть в скором будущем возродим его и сделаем еще одну итерацию!
* Прикрепленное видео сделано с помощью нашего бота.
Попробуйте сами: 🎬 Magic Clip Bot
🎒 @karim_iskakov
Автоматический монтаж видео
Part 1
2 года назад мы с ребятами гоняли на эндуро-мотиках в горах Дагестана. Наснимали кучу видосов с дрона, GoPro, айфонов. Я сел их монтировать и в очередной раз охуел от того, сколько времени занимает монтаж.
В голове в который раз загорелась 💡 мысль – надо делать автоматический монтаж видео!
Для начала мы решили проверить спрос (написав 0 строчек кода):
🛑 Завели телеграм-бота, которому можно было скидывать видео/фото
🛑 Бот был фейком, он просто отвечал заглушкой вида "Извините, бот перегружен" (юзеры, простите стартаперов 🥲)
🛑 Записали тикток с рекламой этого бота
🛑 Тикток залетел в рекомендации (~500K просмотров и ~60K лайков)
🛑 Юзеры скинули в фейкового бота >200K (!) своих видео/фото
Все конверсии и другие показатели выглядели очень приятно 🥑, но в то время мы занимались разработкой другого приложения. Да и тогда не очень понимали, как технически сделать хороший автомонтаж. Поэтому реализацию отложили на потом.
Спустя год мы вернулись к этой идее и сделали MVP – 🎬 Magic Clip Bot... (про это расскажу в сл. серии)
🎒 @karim_iskakov
Мы все не любим голосовые сообщения!
Команда Телеграма это понимает и в Premium подписке предлагает фичу для их распознавания. Но у них распознавание работает очень медленно (порой дольше, чем длительность самого аудио), да еще и хуево плохо.
Мы сделали бота, который переводит голосовые сообщения в текст!
Он в ⚡ 3 раза быстрее Телеграм Premium и сильно лучше распознает слова (там whisper под капотом).
А еще он:
– Автоматически пишет краткое содержание голосового сообщения (хз, как я раньше жил без этой фичи)
– Форматирует сообщение по абзацам с таймкодами
– Распознает кругляшки и видео/аудио-файлы
– Ну и главная фича: можно переслать войс из WhatApp'a (выбрать сообщение -> переслать -> поделиться в Телеграм)!
*На видео демо бота. Там я ему пересылаю голосовуху, в которой озвучил текст этого поста
Ждем вашего фидбека в комментариях! Также в комменты положу ссылку на GitHub с полезным репозиторием.
Затестить бота можно по ссылке:
🎙Voice Messages Bot
🎒 @karim_iskakov
Season of CVPR’21 papers!
FastNeRF renders at 200FPS on GPU thanks to revised architecture, efficient querying and caching.
Such a solid result with no videos to share!
📝 arxiv.org/abs/2103.10380
📉 @loss_function_porn
New method to create relightable 3D selfies from Samsung AI (Moscow). You have: single smartphone video of a head with blinking flash. You get: sharp renderings under any lighting and from any viewpoint.
🌐 saic-violet.github.io/relightable-portrait
📝 arxiv.org/abs/2012.09963
📉 @loss_function_porn
A mask-guided optimization in latent space of StyleGANv2 to manipulate distinct face regions. Realism is great (look at teeth and wrinkles), but strong color artifacts spoil the impression.
🌐 github.com/bmolab/masked-gan-manifold
📝 Paper (.pdf)
📉 @loss_function_porn
NVIDIA has just announced Maxine – a new AI SDK for video conferencing. It includes real-time language translation, low-light correction, gaze correction, super-resolution, noise removal, and more.
The most intriguing feature is the reduction of video bandwidth by transmitting only lightweight facial landmarks of a speaker. On the other side the face is re-generated from landmarks with NN (see video).
🌐 developer.nvidia.com/maxine
📉 @loss_function_porn
Finally, Snapchat anime lens! Look at admins and their friends saying hello.
Kudos to developers for realtime performance.
🌐 Snap link
📉 @loss_function_porn
X-Fields: Image interpolation in View, Light, and Time dimension.
Сompared to NeRF, this method needs just several minutes to train. New efficient scene representation + lightweight rendering network enable real-time scene navigation.
🌐 xfields.mpi-inf.mpg.de
📝 Paper (pdf)
📉 @loss_function_porn
Generating infinite landscape timelapse videos from single static image. Under the hood there is an augmented StyleGAN which allows modeling dynamic changes in a scene.
🌐 saic-mdal.github.io/deep-landscape
📝 Paper (pdf)
📉 @loss_function_porn #ECCV2020