Как видеть сквозь стены без камер и магии
Представьте, что ваш домашний роутер превратился в рентгеновское зрение. Нет, это не сюжет из «Черного зеркала» и не очередная теория заговора. Оказывается, Wi-Fi волны, которыми пронизана любая современная квартира, реагируют на каждое движение человеческого тела. Они рассеиваются, отражаются и меняют фазу, когда вы просто проходите мимо или даже когда у вас бьется сердце. Проект RuView — это попытка превратить этот шум в осмысленные данные: позы людей, их пульс и частоту дыхания.
Что это вообще такое
RuView (или WiFi DensePose) — это опенсорсный стек технологий, который анализирует CSI (Channel State Information) сигналы обычного Wi-Fi. Если говорить просто, CSI — это подробный отчет о том, как каждая поднесущая частота сигнала «чувствовала» себя, пока летела от передатчика к приемнику.
Разработчики проекта взяли идею из научной работы CMU «DensePose From WiFi» и довели ее до состояния рабочего инструмента. Главная фишка здесь в приватности. Система видит скелет человека и его жизненные показатели, но при этом не использует ни одного пикселя видео. Для больниц, домов престарелых или умных домов это идеальный компромисс между безопасностью и невмешательством в личную жизнь.
Железо и порог входа
Сразу предупрежу: запустить это на старом ноутбуке с первой попавшейся Wi-Fi картой не получится. Обычный потребительский софт скрывает CSI данные, поэтому нужно специфическое железо.
Самый бюджетный и популярный вариант — контроллеры ESP32-S3. Набор из 3–6 таких модулей обойдется примерно в 50 долларов. Расставляете их по комнате, и они начинают стримить данные в Rust-бэкенд. Если хочется чего-то более серьезного, проект поддерживает исследовательские сетевые карты вроде Intel 5300.
Интересно, что авторы предусмотрели режим симуляции. Можно скачать репозиторий, запустить докер-контейнер и покрутить пайплайн на синтетических данных, чтобы понять, как работают алгоритмы, прежде чем бежать в магазин за микроконтроллерами.
Как работает магия внутри
Проект недавно переписали на Rust, и это дало дикий прирост производительности. Раньше пайплайн на Python был узким местом, теперь же обработка одного кадра занимает микросекунды.
Вот как выглядит путь сигнала:
- ESP32 захватывает сырые пакеты и отправляет их по UDP.
- Бэкенд на Rust очищает фазу сигнала (алгоритм SpotFi) и убирает импульсные помехи фильтром Хампеля.
- Данные прогоняются через графовую нейросеть. Она сопоставляет искажения радиоволн с 17 ключевыми точками человеческого тела.
- На выходе мы получаем Pose estimation в реальном времени.
Кстати, о нейронках. В проекте используется RuVector — это набор инструментов для работы с графами и вниманием (attention). Он помогает системе «понимать», какие поднесущие частоты сейчас несут полезную информацию о движении, а какие просто бьются о шкаф.
Что умеет RuView
Помимо того, что система рисует ваш скелет на экране, у нее есть несколько по-настоящему крутых применений.
Мониторинг здоровья без датчиков
Система умеет вычленять микро-колебания сигнала, вызванные движением грудной клетки. Она определяет частоту дыхания (6–30 вдохов в минуту) и пульс (40–120 ударов). Причем человеку не нужно ничего на себя надевать. Я вижу в этом огромный потенциал для систем слежения за состоянием спящих младенцев или пожилых людей.
Работа в экстремальных условиях
Есть модуль WiFi-Mat, заточенный под спасательные операции. Wi-Fi сигнал проходит сквозь бетон, дерево и гипсокартон. В теории, спасатели могут развернуть такую сеть над завалами после землетрясения, чтобы найти живых людей по их дыханию. Система даже пытается проводить автоматическую сортировку пострадавших (триаж) по степени тяжести их состояния.
Самообучение в новых комнатах
Одна из главных бед подобных систем — чувствительность к обстановке. Передвинули диван — и нейронка «сломалась». В RuView завезли проект MERIDIAN. Это механизм адаптации, который позволяет модели подстраиваться под новую геометрию помещения за считанные секунды без переобучения с нуля.
Попробовать в деле
Если у вас под рукой есть Docker, запустить демо можно одной командой:
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
После этого по адресу http://localhost:3000 откроется интерфейс. Без ESP32-S3 вы не увидите живой поток, но сможете оценить структуру API и возможности визуализации.
Для тех, кто хочет встроить это в свой проект, есть готовые крейты на Rust. Можно забрать только обработку сигналов (wifi-densepose-signal) или только модуль для работы с витальными знаками (wifi-densepose-vitals).
RuView — это не просто забавная игрушка, а мощный фреймворк на стыке радиофизики и глубокого обучения. Проект активно живет, README постоянно обновляется (там сейчас больше 30 документов с описанием архитектурных решений), а переход на Rust сделал технологию пригодной для реального Edge-использования.
Кому стоит заглянуть в репозиторий:
- Разработчикам систем умного дома, которые устали от ложных срабатываний PIR-датчиков.
- Специалистам по Computer Vision, которые ищут альтернативы камерам в вопросах приватности.
- Всем, кто хочет посмотреть на нестандартное использование Rust в связке с DSP и нейронками.
Проект выглядит амбициозно, и хотя для полноценного запуска придется немного повоевать с прошивкой ESP32, результат того стоит. Возможность видеть «цифровой след» человека без единой линзы — это то будущее, которое уже наступило.
