местный датасасер ☮️
1.92K subscribers
1.01K photos
61 videos
7 files
659 links
Пишу всякое о технологиях и моих проектах, @egorvoron
Download Telegram
Алгебра есть часть математики весьма трудная, но и преполезная, понеже служит в решении труднейших задач всея математики. Можно назвать ее генеральною арифметикою, понеже части их по большей мере между собою сходны, только что арифметика употребляет для всякого числа особливые знаки, а алгебра генеральные, которые всякому числу служат. Наука сия, сказывают, в Европу пришла от арап, которых мнят быть ея изобретательми; имя самое алгебры есть арапское, которые ее называют Алжабр Валмукабала, то есть наверстать или соравнять.
Из сатир Кантемира
Forwarded from Журнал «Код»
Идеальный клип 2020 года

Используя дип-фейк-алгоритм Wave2Lip, один энтузиаст склеил видео из разных популярных фильмов и мультиков и вынудил персонажей петь All Star. Благодаря идеальному липсинку это выглядит одновременно и крипово, и забавно.

👥 Кто: ютубер-программист ontyj.

👉 Посмотреть на это: https://youtu.be/UuaYDZd8-cI

⬇️ Прога на GitHub: https://github.com/Rudrabha/Wav2Lip

⬇️ Код синхронизации речи: https://cvit.iiit.ac.in/research/projects/cvit-projects/a-lip-sync-expert-is-all-you-need-for-speech-to-lip-generation-in-the-wild
Есть такой учёный в Стенфорде, Терри Виноград, известный специалист по человеко-машинным интерфейсам. В его честь названа Winograd Schema Challenge (альтернатива теста Тьюринга), а в молодости Терри прославился созданием программы SHRDLU. Она была результатом его диссертации в MIT AI Lab и представляла собой систему управления виртуальной средой с помощью команд на английском языке. На экране отображалось пространство, содержащее разные объекты (кубы, шары, конусы, ...), и оператор мог отдавать команды вида "возьми большой шар" и "положи его на синий куб". Система отвечала на вопросы о расположении блоков, обрабатывала команды перемещения, сносно справлялась с разрешением анафор по контексту, отвечала на вопросы о предыдущих действиях, отрабатывала базовую физику — что на чём может лежать и т.п.. (SHRDLU можно считать первым примером interactive fiction, жанра, о котором я уже как-то писал.) Всю эту магию Терри опубликовал в конце шестидесятых, чем вызвал хайп вокруг исследований в области AI и NLP, обернувшийся позже некоторым разочарованием. Оно во многом было связано с тем, что в SHRDLU так хорошо были выбраны параметры среды (типы объектов, их характеристики, словарь команд), что система легко справлялась с редуцированным пространством задач и воспринималась, как универсальная, но все попытки как-то развить её и сделать что-то более полезное, чем пирамидки на кубиках, проваливались. Чуть ли не с этого началась первая AI winter, а сам Виноград, разочаровавшись, решил заниматься человеко-машинными интерфейсами в более широком смысле.

Код SHRDLU был написан на языке Micro-Planner, реализованным на MacLisp на компьютере DEC PDP-6 с ОС ITS. Язык Плэнер разрабатывался тем же самым Виноградом и его коллегами, и представлял из себя смесь Лиспа с некоторыми идеями, которые позднее вошли в Пролог. (Успех SHRDLU стал основой для распространения Плэнера, по слухам оказавшего определённое влияние на авторов Пролога). Страшнее зверя, чем этот Плэнер, лично я среди языков, пожалуй, не встречал. Кроме того, как было принято в те лихие времена, SHRDLU был самомодифицирующимся, т.е. при обработке команды он мог переписывать и перезапускать свой код. Но самое главное, в классическом ночном угаре перед сдачей диссера Терри пришлось внести несколько патчей прямо в машинный код своего интерпретатора Лиспа. В итоге получилось, что выполнить код SHRDLU можно было только этим конкретным модифицированным бинарником, для которого не было исходного кода. Это никого не напрягало, и программа разошлась в народе более чем десятком копий (а в мире было всего 23 компьютера PDP-6). Но по мере того, как операционная система ITS обновлялась, совместимость этого модифицированного бинарника с осью постепенно терялась, и по воспоминаниям Дейва Макдональда (студента Терри Винограда) через несколько лет SHRDLU совсем перестал работать — код сохранился, но не было железа+OS, чтобы его запустить. Сохранилось видео работы, сохранился также транскрипт диалога с программой, использованного в диссертации ("SHRDLU demo"). С тех пор люди время от времени пытаются восстановить работу алгоритма, существует много довольно похожих на оригинал клонов, но ни один из них не даёт в точности те же ответы, что приведены в SHRDLU demo.

О названии Терри пишет, что хотел выбрать "ненастоящую" аббревиатуру, и первое, что пришло в голову, было слово SHRDLU, которое он в юности встречал в журналах типа Mad Magazine, где оно использовалось для обозначения бессмыслицы. Эта традиция пришла со времён, когда наборщики на линотипах заполняли этими буквами ошибочные строки — кнопки backspace на линотипе не было, и, сделав ошибку, проще было забить строку до конца мусором, чтобы её потом отбраковал корректор; иногда, однако, корректоры пропускали такие строки и SHRDLUSHRDLUSHRDLU попадало в печать. Почему именно эти буквы? Кнопки на линотипе были отсортированы по частоте использования в английском языке (а не как в истории с QWERTY), первый ряд был ETAOIN, а второй — SHRDLU. Вот такая история.
Сос мыслом
Forwarded from Neural Machine
Язык родился из нужды солгать
Слово ХОРНИ и слово СМЕРТЬ означает для вас одно и то же!
Forwarded from Loskir's
🆎 О переводе @RoundDFBot на другие языки.

Последняя неделя выдалась жаркой. Стоило только добавить в бота просьбу откликнуться тем, кто готов перевести бота на свой язык, как почти тут же мне написало с десяток неравнодушных господ, говорящих на всевозможных языках. Я просто не мог не ответить на их предложения взаимностью, поэтому каждый получил по yaml-файлу с английским шаблоном и приступил к работе. После того, как переводы были завершены и проверены (и завершены ещё раз), мне надо было пофиксить стилистические ошибки (двойные пробелы, лишние отступы, заглавные буквы), включить авто-детект для этого языка, подключить соответствующую локаль для date-fns и, конечно, добавить имена переводчиков на доску почёта. Задачи не сколько сложные, сколько утомительные🥱

Но это стоило того! Сейчас в бота уже добавлено 9 языков: 🇸🇦🇩🇪🇬🇧🇪🇸🇮🇹🇧🇷🇷🇺🇹🇷🇻🇳 и ещё несколько на подходе. Надеюсь, пользоваться ботом стало удобнее🤗

Но как аккуратно намекнуть старым пользователям, что в боте появился их язык? Просто сделать рассылку — не самый хороший способ, лучше отправить сообщение тогда, когда пользователь сам решит воспользоваться ботом. Именно так я и сделал (правда, пришлось переворотить при этом почти весь код, хотя бы косвенно связанный с локализацией) (пришлось — это такая отмазка, оно как-то само так вышло за несколько часов тыканья по кнопкам). Выкатил обнову и сижу довольный, хоть и уставший😌
2 часа ночи, с нк (площадь перед Физтех.Квантом) доносятся крики и раммштайн, а я доделываю английский после многочасовой долбежки с матаном. Романтика!
Вчера рассказывали с ребятами как мы делали ASR ВКонтакте. Я всегда жутко волнуюсь, когда выхожу в публичное пространство. Я начала с того, что перепутала акустическую модель с языковой, но раскачалась, поймала вайб и дальше уже было нестрашно. Были трудности, но я рада, что мы организовали этот ивент — сейчас мы работаем над другими интересными проектами, о которых вы скоро тоже услышите 😏

https://vk.com/tech?z=video-147415323_456239362%2F7618ef4a64069b66a0%2Fpl_wall_-147415323
Forwarded from Loskir's
🆎 POEditor

Как результат моих мучений с переводом @RoundDFBot на другие языки я таки решил воспользоваться каким-нибудь сервисом для crowd-translation. После обращения всё к тому же списку GitHub Student Developer Pack я остановился на POEditor.

За несколько минут импортнул туда все существующие локализации, за полчаса написал скрипт, который по API достаёт их оттуда и записывает в файлы, быстренько раздал переводчикам join-ссылки. И вот у нас уже есть страничка, где все желающие могут внести свой вклад в общее дело.

Насчёт тарифов: бесплатный ограничивается 1000 строками, в рамках GitHub Student Developer Pack дают 10000. В принципе, для простенького бота с тремя-четырьмя языками хватит и бесплатного тарифа, у нас, если доперевести все языки, получится около 1100 строк.

Интерфейс достаточно удобный, неудобств я не заметил. Пока что всё нравится
Ребята, теория множеств это страшно...
🎉 У нас отличные новости: число пользователей @RoundDFBot перевалило за миллион!

📈 Примерно за шесть месяцев существования (7 октября боту будет полгода🍾) наш бот пережил несколько взрывных ростов популярности, самый большой из которых пришелся на август-сентябрь, когда дипфейки, сделанные с его помощью, стали вирусными в TikTok. В начале августа у нас было менее 20 тысяч пользователей, к концу же мы пересекли отметку в 360 тысяч, а за сентябрь количество пользователей практически утроилось.

🙏 Огромное спасибо всем, кто поддержал бота материально — благодаря Вам мы смогли арендовать большие вычислительные мощности, без которых бот бы не справился.
Forwarded from Loskir's
🙄 Как уже написали @localhost_ru и @bpblog, сегодня начался Hacktoberfest. Это цифровой ивент, проводимый компанией DigitalOcean.

В чём суть? Цель ивента — поддержка OpenSource комьюнити. Если сделать 4 пулл-реквеста в любые публичные репозитории в течение октября, можно получить бесплатную футболку (или попросить посадить дерево вместо неё).

И несмотря на то, что в правилах явно сказано "если мейнтейнер пожалуется на спам или нарушение code of conduct, тебя отстранят от участия", начался сущий кошмар.

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

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

В общем, участвуйте на здоровье, но не позорьтесь, пожалуйста🥺
Forwarded from Loskir's
🚙 Сегодня спонтанно оптимизировал генерацию видео в @RoundDFBot, а точнее сохранение результата в файл.

Для работы с видео мы используем moviepy. По сути это обёртка над ffmpeg, хоть и с большим количеством своих API. Её достаточно просто использовать для поверхностной работы, а вот для каких-то особых задач она может показаться громоздкой и ограниченной.

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

По историческим причинам до сегодняшнего дня мы использовали API с самого последнего слоя: семейство Clip'ов, а именно VideoClip и ImageSequenceClip. Пользоваться ими было очень просто:
ImageSequenceClip(frames_with_watermark).write_videofile(output_path)
Но их главная проблема в том, что сначала все кадры загружаются в оперативную память, а только потом скармливаются ffmpeg'у.

"Но ведь ffmpeg умеет принимать кадры через stdin! Почему бы не скармливать их сразу по мере готовности? Ведь тогда потребуется меньше оперативной памяти, а, может быть, и уменьшится время работы. Я же даже реализовывал это в @ArcDrawerBot, хоть и на JS", — подумал я и принялся за дело.

Решив не переписывать всё с нуля, я спустился всего на две ступеньки по лестнице абстракций и использовал FFMPEG_VideoWriter. В нём реализовано самое низкоуровневое взаимодействие с ffmpeg: создание субпроцесса, скармливание ему кадров через stdin, закрытие субпроцесса. Работа с ним выглядит примерно так:
with FFMPEG_VideoWriter(output_path, size, fps) as writer:
for frame in frames:
frame_with_watermark = add_watermark(frame)
writer.write_frame(frame_with_watermark)

Теперь кадры видео не складываются в массив лишний раз, а сразу записываются в файл. А ещё это изменение позволило реализовать нормальный прогресс-бар. И даже если реальная скорость записи не выросла, следить за прогрессом явно стало приятнее🌚
Нашел классного бота, который с помощью нейронки меняет расу...
Forwarded from Deleted Account
Forwarded from Not Boring Tech
This media is not supported in your browser
VIEW IN TELEGRAM
🌊 Незамысловатую нейронку «Sea-thru» недавно показали интернету. Она учитывает и анализирует глубину, диапазон, расстояние до объекта и источники света — всё для идеального удаления воды на фото и видео. В некоторых случаях получается очень даже прикольно.

🐡 Такая нейросетка может пригодится не только нам на «позабавиться и поиграться», но и исследователям для новых подводных изучений водоёмов, морей и океанов.

💾 Кода я не нашёл на их сайте (зато нашёл пейпер — 14,86 мб): https://csms.haifa.ac.il/profiles/tTreibitz/datasets/sea_thru/index.html