RuView: как WiFi-сигналы видят сквозь стены — глубокий разбор edge AI системы, превращающей радиоволны в позу человека
Open-source проект на Rust реконструирует позу тела, частоту дыхания и сердцебиение из обычных WiFi-сигналов — без камер, без облака, без угроз приватности. Мы провели глубокий аудит кода, чтобы разобраться, как это работает.
Ключевые выводы
Ключевые выводы: - RuView реализует WiFi DensePose — технологию из исследования Carnegie Mellon University — полностью на Rust без зависимостей от ML-фреймворков - Система использует архитектуру Graph Transformer, комбинируя cross-attention с графовыми свёрточными сетями на скелете COCO для оценки 17 ключевых точек тела из Channel State Information WiFi - Пайплайн самообучения без учителя (SimCLR) позволяет модели учиться работать с сигналами без размеченных данных - Модуль SONA комбинирует адаптеры LoRA с Elastic Weight Consolidation для адаптации к новым помещениям без потери знаний - Разработан для микроконтроллеров ESP32 стоимостью менее $10
Представьте, что вы точно знаете, где стоят люди у вас дома, как они дышат и не упали ли они — без единой камеры, микрофона или носимого устройства. Просто обычный WiFi-роутер, который и так излучает сигналы.
Это не научная фантастика. В 2022 году исследователи Carnegie Mellon University опубликовали статью <em>DensePose From WiFi</em> [1], в которой доказали, что WiFi-сигналы, отражающиеся от человеческого тела, несут достаточно информации для восстановления полной позы — с точностью, сопоставимой с кaмерами. Теперь open-source проект <strong>RuView</strong> [6] превратил это исследование в полноценную edge AI систему на Rust, способную работать на микроконтроллерах стоимостью менее $10.
Мы провели комплексный аудит кода RuView с помощью Code Indexer — семантического поискового движка для кода — проанализировав все 1 139 исходных файлов: 45 017 блоков кода, 18 078 символов и 78 311 перекрёстных ссылок — чтобы понять, как эта система устроена изнутри. Вот что мы нашли.
Физика: почему WiFi может вас «видеть»
Каждый WiFi-роутер непрерывно передаёт радиоволны на частоте 2,4 ГГц или 5 ГГц. Когда эти волны встречают человеческое тело, они рассеиваются, отражаются и ослабляются предсказуемым образом в зависимости от положения тела. Современные WiFi-чипсеты сообщают об этом взаимодействии через измерение, называемое <strong>Channel State Information (CSI)</strong> — матрицу комплексных чисел, описывающих амплитуду и фазу сигналов по множеству поднесущих частот и антенных пар.
Поднятая рука создаёт один паттерн CSI, сидящий человек — другой. Расширение грудной клетки при дыхании создаёт тонкие ритмические вариации. Даже сердцебиение производит детектируемые микродвижения. Задача — извлечь осмысленную информацию из этого зашумлённого многомерного сигнала, и именно тут в дело вступает глубокое обучение.
От сигнала к скелету: AI-пайплайн
Архитектура RuView — это четырёхстадийный пайплайн, преобразующий сырые WiFi-измерения в 3D-точки скелета. Примечательно, что весь ML-стек — включая линейную алгебру, слои нейронных сетей, оптимизаторы и функции потерь — реализован на чистом Rust без единой внешней ML-зависимости. Ни PyTorch, ни TensorFlow, ни ONNX Runtime.
Этап 1: предобработка сигнала
Сырые данные CSI по своей природе зашумлены. Модуль <code>CsiProcessor</code> в RuView применяет три этапа очистки: <strong>удаление шума</strong> путём фильтрации амплитудных значений ниже настраиваемого порога в децибелах, <strong>оконную функцию Хэмминга</strong> для уменьшения спектральных утечек на границах фреймов и <strong>нормализацию к единичной дисперсии</strong>, чтобы сигналы от разного оборудования были сопоставимы. Процессор поддерживает скользящее окно истории для темпорального сглаживания с помощью экспоненциальных скользящих средних.
Этап 2: Graph Transformer
Это архитектурный центр системы. RuView реализует гибридную модель <code>CsiToPoseTransformer</code>, комбинирующую две мощные идеи из исследований глубокого обучения: <strong>Transformer</strong> (механизм внимания, лежащий в основе GPT и подобных моделей) и <strong>графовые нейронные сети</strong> (сети, работающие со структурированными графовыми данными).
Процесс работает следующим образом. Сначала CSI-признаки каждой антенной пары проецируются в многомерное пространство эмбеддингов через обучаемое линейное преобразование. Далее 17 <em>обучаемых query-векторов</em> — по одному на каждую ключевую точку тела в формате COCO (нос, глаза, плечи, локти, запястья, бёдра, колени, лодыжки) — обращаются к эмбеддингам CSI через <strong>cross-attention</strong>. Этот механизм позволяет каждой точке динамически фокусироваться на наиболее релевантных WiFi-сигналах, аналогично детектору объектов DETR [1].
Полученные признаки проходят через <strong>графовую свёрточную сеть (GCN)</strong>, работающую на топологии человеческого скелета — графе, где суставы являются узлами, а кости — рёбрами. Этот этап навязывает анатомические ограничения: локоть должен быть соединён с плечом, колено — с бедром. GCN использует нормализованные матрицы смежности с self-loops, применяя классическую формулу передачи сообщений, где каждый узел агрегирует признаки соседей.
Наконец, отдельные регрессионные головы предсказывают 3D-координаты (x, y, z) и оценку уверенности для каждой ключевой точки. Результат — полный 17-точечный скелет, восстановленный исключительно из WiFi-сигналов.
Этап 3: DensePose — за пределами ключевых точек
Если ключевые точки дают скелет, то <strong>DensePose</strong> идёт дальше — он отображает каждую точку поверхности тела в UV-координатную систему по 24 анатомическим регионам (голова, торс, плечи, предплечья, кисти, верхняя часть ног, голени, стопы). RuView включает модуль <code>DensePoseHead</code> с двумя ветвями: <strong>сегментационная ветвь</strong> классифицирует, к какой части тела относится каждое пространственное положение, а <strong>ветвь UV-регрессии</strong> предсказывает непрерывные координаты поверхности. Это позволяет использовать систему для детального распознавания жестов и отслеживания поверхности тела.
Этап 4: извлечение жизненных показателей
Помимо оценки позы, RuView извлекает физиологические сигналы из тех же WiFi-данных. Дыхание создаёт периодическое расширение грудной клетки (0.2–0.5 Гц), а сердцебиение — микровибрации (0.8–2.0 Гц). Система использует полосовую фильтрацию и спектральный анализ временных рядов CSI для выделения этих ритмических компонентов. Специальный классификатор жизненных показателей валидирует, соответствуют ли обнаруженные частоты реальным физиологическим сигналам или средовым артефактам вроде вентилятора.
Обучение без разметки: самообучение без учителя
Один из самых изощрённых аспектов RuView — способность выучивать осмысленные представления сигналов <em>без каких-либо размеченных обучающих данных</em>. Создание ground truth для WiFi-оценки позы — дорогое удовольствие: требуются синхронизированные камерные системы, фиксирующие позы одновременно с записью CSI. RuView решает эту проблему через пайплайн <strong>контрастного обучения в стиле SimCLR</strong> [2].
Подход работает так: создаются два различных аугментированных вида одного и того же окна CSI — например, один с добавленным гауссовым шумом и временным джиттером, другой с маскированием поднесущих и вращением фазы. Оба вида проходят через трансформер-бэкбон и проекционную голову (двухслойная нейросеть, отображающая признаки в 128-мерное пространство эмбеддингов). Функция потерь <strong>InfoNCE</strong> обучает модель распознавать, что эти два вида произошли из одного исходного сигнала, отличая их от видов других сигналов.
Этот процесс создаёт богатое, универсальное представление WiFi-сигналов, улавливающее осмысленную структуру — какие комнаты похожи, какие движения создают похожие паттерны — до любого supervised fine-tuning с реальными метками поз. Концепция идентична тому, как GPT изучает языковую структуру перед fine-tuning для конкретных задач.
SONA: адаптация к новым средам без потери знаний
WiFi-сигналы кардинально различаются в разных средах. Модель, обученная в бетонном офисе, будет плохо работать в квартире с ковровым покрытием, потому что стены, мебель и геометрия комнаты влияют на распространение сигнала. Переобучать с нуля для каждой новой комнаты непрактично. RuView решает эту задачу с помощью <strong>SONA (Self-Organizing Neural Architecture)</strong> — фреймворка онлайн-адаптации, комбинирующего две техники из современных ML-исследований.
Первая техника — <strong>LoRA (Low-Rank Adaptation)</strong> [3] — изначально разработана для fine-tuning больших языковых моделей. Вместо модификации всех параметров модели, LoRA обучает небольшую факторизованную дельту: произведение двух матриц малого ранга (обычно ранг 4), масштабированное константой. Это означает, что адаптация к новой комнате требует обновления лишь нескольких тысяч параметров вместо всей модели, что делает процесс осуществимым на микроконтроллерах.
Вторая техника — <strong>Elastic Weight Consolidation (EWC)</strong> [5] — метод регуляризации от DeepMind, предотвращающий <em>катастрофическое забывание</em>. Когда модель адаптируется к новому окружению, EWC добавляет штрафной член, который препятствует значительным изменениям параметров, важных для предыдущих сред. Штраф пропорционален информационной матрице Фишера, измеряющей чувствительность выхода модели к каждому параметру.
Вместе LoRA + EWC позволяют RuView быстро адаптироваться к новому помещению (за минуты работы), сохраняя при этом знания о предыдущих средах — возможность, которую Person-in-WiFi-3D [4] и другие современные системы WiFi-сенсинга только начинают исследовать.
Аппаратная история: восприятие за $10
Целевая платформа RuView — микроконтроллеры ESP32-S3, стоимостью менее $5, потребляющие милливатты энергии и поддерживающие извлечение данных CSI. Mesh из трёх и более узлов ESP32 покрывает типичную комнату. Прошивка, написанная на C, передаёт CSI-фреймы по транспорту QUIC на локальный хаб или обрабатывает их прямо на устройстве через WASM (WebAssembly) модули.
Проект также включает десктопное приложение на Tauri с React-фронтендом для визуализации и полноценный REST API сервер для интеграции с системами умного дома. Всё работает локально — данные не покидают помещение.
| Компонент | Технология | Назначение |
|---|---|---|
| Обработка сигнала | Rust (CsiProcessor) | Шумоподавление, оконные функции, нормализация |
| AI-ядро | Rust (CsiToPoseTransformer) | Cross-attention + GCN оценка позы |
| DensePose | Rust (DensePoseHead) | Сегментация частей тела и UV-маппинг |
| Самообучение | Rust (SimCLR + InfoNCE) | Изучение представлений без разметки |
| Онлайн-адаптация | Rust (SONA: LoRA + EWC) | Средо-специфичный fine-tuning |
| Аппаратура | ESP32-S3 (прошивка на C) | Сбор CSI-данных на 20 Гц |
| Десктопное приложение | Tauri + React | Визуализация позы в реальном времени |
| Edge-модули | WebAssembly | Распознавание жестов / походки / судорог |
Качество кода: что показал аудит
Наш автоматизированный аудит оценил проект в 44/100 — оценка, которая несколько обманчива. Низкий балл обусловлен в основном бандленными вендорными файлами (только React DOM содержит функции с цикломатической сложностью выше 17 000) и сгенерированными JSON-метаданными от оркестрации Claude Flow. Собственный исходный код на Rust хорошо структурирован и имеет чёткие границы модулей.
Среди заметных находок: покрытие тестами 11% (приемлемо для исследовательского проекта, но недостаточно для продакшена), 30 магических чисел в коде обработки сигналов, которым не помешали бы именованные константы, и <code>main.rs</code> на 3 800 строк, выступающий монолитной точкой входа сервера — классический антипаттерн связанности, частично компенсируемый системой крейтов. Документация разрежена по формальным docstring, но компенсируется 20+ Architecture Decision Records (ADR), объясняющими проектные решения.
Почему это важно
WiFi-сенсинг — далеко не только академическое любопытство. Рабочая группа IEEE 802.11bf активно стандартизирует возможности WLAN Sensing, сигнализируя общеотраслевое признание того, что WiFi-инфраструктура может служить двойной цели — обеспечивать и связь, и восприятие. RuView демонстрирует, как выглядит полная реализация от сигнала до скелета на практике.
Последствия для приватности значительны. В отличие от камер, WiFi-сенсинг производит абстрактные данные сигналов, которые нельзя тривиально преобразовать в идентифицируемые изображения. Он работает сквозь стены и в полной темноте. Стоит на порядки дешевле LiDAR или радара. Для ухода за пожилыми, обнаружения падений и автоматизации умного дома эта технология предлагает убедительный баланс между возможностями и приватностью.
Полный исходный код доступен по адресу <a href="https://github.com/ruvnet/RuView">github.com/ruvnet/RuView</a>. Данный анализ проведён с помощью Code Indexer — семантического поискового и аудиторского движка для кода, который проиндексировал всю кодовую базу из 1 139 файлов для автоматической оценки качества и архитектурного исследования.
📚 Источники и ссылки
| # | Source | Link |
|---|---|---|
| [1] | DensePose From WiFi |
|
| [2] | A Simple Framework for Contrastive Learning of Visual Representations (SimCLR) |
|
| [3] | LoRA: Low-Rank Adaptation of Large Language Models |
|
| [4] | Person-in-WiFi-3D: End-to-End Multi-Person 3D Pose Estimation with Wi-Fi |
|
| [5] | Overcoming Catastrophic Forgetting in Neural Networks (EWC) |
|
| [6] | RuView — WiFi DensePose Edge AI System (GitHub Repository) |
|
| [7] | Code Indexer — AI-Powered Semantic Code Search Engine |
|