Митя об интересном – Telegram
Митя об интересном
198 subscribers
61 photos
13 videos
2 files
142 links
Люблю писать про 2D/3D генеративные модели, AR/VR, ML фокусы, и вообще про всякое интересное
Автор - 🗿
🗿 - @Xallt

Личное & смешное - @i_laughed_dont_tag_me
Download Telegram
У нас там недавно релиз вышел 👀
https://x.com/gracia_vr/status/1792991384917479570

Очень крутую штуку сделали. И я даже поучаствовал в разработке!!!! Кайф

Если можете попробовать (если есть Quest 3 / игровой ПК + любой шлем), очень рекомендую. Справедливости ради, это версия 1.0 — пока можно только смотреть курируемые нами сцены, и загружать свои.
Но качество на курируемых сценах уже такааая бомба. Сам в шоке
4
Боже мой где ты был PiVPN

До этого у меня долго висел droplet на DigitalOcean с базовым OpenVPN шаблоном в Амстердаме, и он работал хорошо, но у него была проблема в том что позволяло только 2 параллельных соединения.

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

Начал изучать WireGuard про который в многих местах пишут что это лучший вариант для self-hosting VPNов. Нифига не понял — там какая-то магия с линуксовыми сетевыми интерфейсами, и по Quickstart вообще непонятно, что надо исполнять на сервере, а что локально.

Сначала пытался сам разобраться, потом понял что не хочу в это долбиться, начал искать туториалы. Наткнулся на этот, где чел сказал что будет всё делать через PiVPN который в базиллион раз упрощает жизнь — буквально одна CLI строка для установки самого VPNа, несколько штук интерактивно дозаполнить, и вуаля!

Приложение на телефон даже более простое чем у OpenVPN. И теперь без ограничения на соединения!!!! Это победа
👍5
Поделюсь всеми 3D принтами которые в итоге пока что сделал.

Метаинформация — всё делал на Ender 3 Pro который стоял в Тбилисском хакерспейсе, он типо и дешёвый, и способный. Но из-за дешёвости надо самому кучу всего калибровать и настраивать. Но делаемо! Филамент — PETG Tough отсюда. (и для октаэдра какой-то PLA)

Напечатал:
- Свисток который в итоге нифига не работает (мб настройки неправильные поставил) (https://www.thingiverse.com/thing:1179160)

- Сетчатый череп - я даже удивился что напечался в итоге (https://www.thingiverse.com/thing:1388237)

- Струпцина - если честно мне не то чтобы нужно в быту, просто хотелось напечатать хоть что-то что в теории могло бы быть полезно, а не просто "о хихи оно напечатанное" (https://www.thingiverse.com/thing:1673030)

- Осьминожек - классика, просто очень популярный и милый принт (https://www.thingiverse.com/thing:3495390)

- Октаэдр Серпинского (https://www.thingiverse.com/thing:1123004) . Из забавного - есть же математическое обоснование тому что у фракталов своя нетипичная "размерность" (https://www.youtube.com/watch?v=gB9n2gHsHN4) и если следовать такой математике, но этот 3D-напечатанный октаэдр на самом деле 2.322D :)))) (ладно я напечатал не фрактал а его приближение с какой-то точностью поэтому оно так не работает, но блаблабла)

- Книжкодержатель для большого пальца (https://www.thingiverse.com/thing:650623). Пару раз пока потестил — то удобно, то неудобно. Чуть больше с ним устаёт палец
3
Типичный пример огромного достижения в математике / Computer Science которое имеет (насколько научному обществу известно) нулевую практическую пользу, но когда читаешь текст об этом, звучит прям очень круто

https://scottaaronson.blog/?p=8088

Вкратце — есть супер-последовательность Busy Beaver, BB(N) = максимальное возможное количество итераций в Тьюринг Машине с N состояниями (среди тех машин которые работают конечное количество итераций)

Эту функцию невозможно посчитать алгоритмически, т.к. если бы мы так могли, была бы решена The Halting Problem (для каждой программы из N состояний могли бы узнать работает ли она больше BB(N) )

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

И BB(6) уже очень маловероятно когда-либо смогут посчитать 🥲

Короче, блаблабла, nerd shit, и оно правда интересное, рекомендую к ознакомлению
🔥4
Я уже долгое время интересовался как на низком уровне работает электроника (школьная физика меня подвела и почти ничего не закрепилось), и наконец появился повод — у меня сломалась клавиатура, и я её разобрал с целью хоть насколько-то разобраться как этот чёрный ящик работает.

Вышло забавно — разобрал я её на части, увидел на одной из схемок внутри надпись IQS550 — решил погуглить, оказалось что это как раз компонента отвечающая за тачпад (что было очевидно, если заметить что она находится ровно под тачпадом).

Продолжил гуглить, причём конкретно хотел узнать как именно эта клава (Logitech K400 Plus) использует в себе эту компоненту. Загуглил "IQS550 logitech" и, о чудо о чудо, наткнулся на чей-то submission в Reverse Engineering Challenge где ровно разбирали мою клаву!!

И я продолжал-продолжал гуглить и изучать, так что просто перечислю все свои файндинги:

- Этот разбор клавы на самом деле не супер детальный, но как минимум там я узнал о "NSK Crystal" который используется для отслеживания времени, что видимо критично для любой такой схемки

- Там же написали что пластиковый лист под клавой это Mylar который часто используется в клавиатурах для передачи сигнала нажатии клавиши в микросхемку. А ещё, схема на этих Mylar'ах часто сделана из серебра, поэтому кто-то собирает их чтобы соскрести серебро

- В том числе мне гугл дал ссылку на release notes ядра Linux 5.2, где была строчка про добавление поддержки как раз IQS550 тачпадов. Я пошёл смотреть в коммит и поржал что в коде драйвера есть инструкция goto ;)) (я на самом деле не знаю насколько это норма для программирования драйверов — просто меня всегда учили что goto это кринж)

- Решил разобраться как вообще "читать" эти зелёные электросхемы — наткнулся на шикарные видео-пояснялки на ютубе: про PCB, про Капаситоры, про Резисторы, про Диоды (ректифаеры?). Видосы супер-классные и с практическими демонстрациями, рекомендую именно их смотреть если хотите прошариться

- Пока смотрел про Капаситоры (на русском видимо Конденсаторы, пофиг), услышал упоминание AC и DC электричества — пошёл гуглить, и оказывается реально в основном в проводах ток постоянно меняет направление (AC) и таким образом (пока не знаю почему) электричество оптимальнее на большие расстояния передавать, а внутри самих устройств этот ток преобразуется в постоянный односторонний (DC) ток. И это преобразование соответственно делается Диодами

Воть, интересно было в этом всём разбираться, и нашёл многие онлайн-пояснялки которые во мноооого раз лучше того что было в школе!!
🔥7
Вот как выглядит разобранный чёрный ящик
5
Пожалуй тоже подключусь к AI кодинг хайпу

Я почти с самого выхода Github Copilot пользуюсь им и расхваливал его, но в основном он был для меня Autocomplete buddy — за меня дописывает что-то что я сам очевидно знал как написать, просто ускоряет процесс.
И только недавно (около недели назад) я осознал что, ах да, вообще его можно промптить, запрашивать целые куски кода создавать / переписывать / пояснять. Было круто, но что-то сложное он всё ещё не до конца справлялся делать сам.

Но внезапно новый чемпион — Cursor — набирает обороты в популярности как THE AI coding buddy, и я решил сегодня тоже опробовать. И ооочень доволен.
Как все и пишут, это то чем изначально копилот должен был быть. Очень умело (и заметно быстрее) генерирует огромные куски кода, и быстро редактирует.

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

Ииии за 4 часа (было бы 2-3 если бы не сложные форматы в Notion API) есть вот это https://github.com/Xallt/obsidian-link-aggregator !!! Там много кода который я бы сам без AI помощи поленился бы писать, и в целом процесс был бы как минимум в 2 раза дольше.

И вот соответственно автоматически созданная табличка: https://rare-save-0fa.notion.site/860ea27b912941c9a467547a9dfb44e9?v=4dfe8bc0e29141248627a8212de90d34

Правда сейчас мне надо руками зайти в Notion на созданную табличку и нажать Publish, поэтому следующим шагом сделать так чтобы это опубликовывалось на мой сайтик https://xallt.github.io/

Короче, валидность хайпа подтверждаю, теперь быть 10x-50x инженером значительно проще. Я раньше был скептичен насчёт всего этого, но сейчас огого как передумал
6🔥4
Помните я вот тут объявлял о выходе на новую работу в Gracia, а вот тут даже писал как доволен своими результатами на ней?

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

Короче, хоть и проработал я в Gracia только 4 месяца, я успел там немало крутого сделать для фотореалистичных Gaussian Splatting сцен для VR шлемов. И до сих пор активно слежу за их dev апдейтами и радуюсь любому релизу.

Однако такой прикол произошел — внезапно Meta без каких-либо предпосылок релизнула Hyperscape который оочень напоминает продукт Gracia, только независимо от них и под очень узнаваемым брендом Meta.

Т.е. гигант-Meta с кучей привлеченных Phd-шников и связью с командами которые непосредственно разрабатывают VR-шлемы, выходит как конкурент достаточно скромной по размеру Gracia.

Они конечно малые-да-удалые, но в любом случае им там наверное тяжко... А я просто грущу что доступ к Hyperscape Beta пока только аккаунтам внутри США 🙃🙃🙃
🔥8😢1
Так вот, после ужасно утомляющего переезда в Израиль, у меня наконец появились силы читать статеечки MLные
(Да, как ни странно, моя работа сейчас не состоит на 50% из чтения статей)

Решил глянуть на Sapiens от Меты, заявившийся как первый Foundational Model для картинок с людьми — и для segmentation, и для pose estimation, и даже для depth estimation / normal estimation.

Как обычно, добывают много картинок — аж 300M (!!! офигеть вообще-то) на которых есть люди, предобучают на нем большой трансформер. Используемый подход называется Masked Auto Encoder, по сути трансформер обучают по супер-испорченной картинке (убили 75% пикселей) восстанавливать исходную. Задача странная и общая, но если научиться делать так для 300M картинок, причем на которых именно много людей, то что-то оно умное про людей в начальных слоях модели выучит. Чуть похоже на I-JEPA.

Так вот, pretraining провели, а осталось обучить непосредственно голову для каждой из задач (segmentation, depth estimation, …). Во-первых, для Pose estimation (т.е. предсказания ключевых точек на теле) они вообще создают новый стандарт с сильно бОльшим количеством точек, так еще и руками размечают новый датасет из 1M картинок??? Звучит абсурдно — это же все-таки Meta, наверняка они там настроили себе пайплайн полу-автоматической разметки наподобие того что было в SAM.

И что-то аналогичное для сегментации — размечают 100К картинок, заявляют что руками, не верю…

Но это не самое интересное — для обучения Depth Estimation / Normal Estimation, хрен там руками разметишь. Зато там на ура работают синтетические данные — т.е. авторы добывают себе супер-детальные 3D сканнеры, делают много сканов людей (базовая фотограмметрия видимо), и потом генерируют картинки, ставя реконструированные модели в рандомные HDRI бэкграунды. Т.к. у нас доступ к 3D модели, мы знаем глубину+нормали, поэтому есть данные высочайшего качества.

Хоть и есть некоторый domain shift между искусственными картинками и реальными, наличие огромного количества картинок в датасете, плюс то что искусственные данные все-таки не худшего качества, дает модель которая SOTA на реальных данных, хоть и файнтюнилась чисто на искусственных.

Короче, очень мне нравится направление в последнем ресерче что синтетические данные очень помогают. Генерировать данные — имхо веселее, чем их собирать другими способами, плюс в контексте Computer Vision это значит больше востребованности в экспертах в 3D Reconstruction)

Depth Anything V2 / SceneScript / RoboCat примеры работ достигших крутого результата именно засчет хороших синтетических данных.
6🔥2
Пока ресерчил на тему применения синтетических данных в ML решил сначала поглядеть в сторону применения в Reinforcement Learning, т.е. для обучения всяких роботов

Наткнулся на много упоминаний Isaac Gym о котором слышал раньше, но в практическом плане никогда не изучал — это распространенная система как раз для Physical Simulations.

Робот с нейронкой, контролирующей его действия можно запустить в такой системе так, чтобы условия максимально напоминали реальные. Обучается он таким образом на несколько порядков быстрее, и можно его же деплоить уже в реальности с минимальными проблемами (хотя на практике наверняка требуется тюнинг под реальность).

Имплементаций physical simulations онлайн можно найти огромное количество, но конкретно Isaac Gym хорош тем, что абсолютно все в процессе RL: сама физическая симуляция, и прогон + обучение нейронки, может проходить очень эффективно на GPU

Общая философия в любой GPU разработке в том, что коммуникация между CPU и GPU очень низкопропускная, соответственно если уж используется GPU, нужно максимизировать его утилизацию (FLOPSы), и минимизировать data transfer CPU<->GPU.
Так что похоже, что в Isaac Gym все из GPU выжали на полную.


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

P.S.: Кажется, как следствие изучения книжки про компьютерную графику, про которую рассказывал в Real-time rendering посте, нашел там ссылку на какой-то интересный Real-time Physics Simulation Forum
👍1
Наконец-то догрузил лекцию про Synthetic Data!!

https://www.youtube.com/watch?v=n9rnwrC05EM

Первая лекция в Тель Авиве, с обрубленной записью 🙃
В любом случае получилось тоже хорошо, и тема сама по себе оказалась супер интересной

Презентация: https://docs.google.com/presentation/d/1UauURbh51VmHG9hecc6DFzDP79RF2PgX5v_zerXITGk/edit
4👍4🔥1
Рандомный безумно интересный факт — оказывается, магнитометры ставят в смартфоны / VR/AR устройства потому что они позволяют измерять магнитное поле Земли в точке, что помогает отслеживать позицию/поворот устройства в пространстве

mind blown

(и вообще я не знал про существование такого устройства как магнитометр, но логично)

Source: https://xinreality.com/wiki/Magnetometer

P.S.: Читал статью Project Aria и там наткнулся на упоминание магнитометров но не понимал зачем оно, поэтому загуглил
🔥3
TIL что для съемки The Lion King ремейка, Джон Фавро (да, оказывается он был директором ремейка) организовал использование VR шлемов на съемочной площадке

https://www.youtube.com/watch?v=CupdZeOJus4&t=407s

TLDR (насколько я понял):
Базовые анимации с Motion Capture на персонажей уже насадили, и cameraman'ы, видя некоторую предварительную анимацию в VR, понимают как лучше "снять" сцену, и это движение потом и используется в финальном кадре
👍2
Опубликовал постик про то как я разбирался в том что такое Homography Matrix и почему она линейная

https://xallt.github.io/posts/deriving-homography-matrix/

Оно меня совсем в какой-то момент запутало, но сесть и расписать полный вывод формулы очень помогло
1
Я тут опять HackerNews листал, и наткнулся на достаточно безобидный, но интересный пост про то как интересно работает калькулятор в Android

Мне очень понравилось как чел пишет, поэтому решил порыскать по его сайту, поглядеть другие посты — и на одном из них была ссылка на что-то про Stack is a Monoid что я еле-еле понял, но меня захватили эти слова в самом первом параграфе:
> it’s also well known that GPUs are good at algorithms like prefix sum
wtf? Пошел гуглить, нашел GPU Gem про Prefix Sum, и моя башка просто взорвалась от гениальности алгоритма

Для полного понимания мне пришлось еще глянуть на изначальную статью — там есть чуууть больше логики, и доказательство вообще работы алгоритма

Короче, очень классно гениально круто мозговзрывающе бомба
🔥6🤩2
Реалити чек по поводу всей темы с AI кодингом

https://deplet.ing/the-copilot-delusion/

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

Любые посты, которые я читаю на эту тему, только малось дают идей
И все, что я напишу — абсолютно не заменит огромного времени проведенного за тюнингом Cursor Rules / пробой MCP серверов / и тд и тп.

Оно не панацея, и нужно много возиться чтобы стабильно получать выгоду без ущерба качеству продукта. Но вклад того стоит, так что рекомендую не отставать.
👍3🔥1🤔1
Расписал несколько заметок про CMake

https://xallt.github.io/posts/cmake-is-a-pain-in-the-ass/

C++ разработку люблю, но почему-то CMake для меня был всегда супер-больным местом — я пытался досконально понять каждую команду, достичь "Thinking from first principles".

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

Тем более стоит это принять когда дело касается Build System'ы, в которой много-много настроек, и черной магии, которая скрывает на самом деле за собой много-много неприятных деталей.
👍5
Расписал пост про то как настраивать разработку на C++ для чайников

https://xallt.github.io/posts/c-programming-setup-for-noobs/

Несколько месяцев назад переквалифицировался на работе на какое-то время в C++ разработчика — мне тыкаться в плюсы не в новинку, но для сурьезного проекта все-таки впервые.
6