RuView: как WiFi-сигналы видят сквозь стены — глубокий разбор edge AI системы, превращающей радиоволны в позу человека
Глубокий код март 23, 2026 Research Review

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-сигналов.

Пайплайн инференса RuView
graph LR
    CSI["Матрица CSI\n(антенны x поднесущие)"] --> Embed["Линейный\nэмбеддинг"]
    Embed --> CA["Cross-Attention\nQ: точки тела, K/V: CSI"]
    CA --> GCN["GCN-стек\nна скелете COCO"]
    GCN --> XYZ["XYZ-голова\n3D-координаты"]
    GCN --> CONF["Голова\nуверенности"]

Этап 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 Jiaqi Geng, Dong Huang, Fernando De la Torre, 2022 arxiv.org
[2] A Simple Framework for Contrastive Learning of Visual Representations (SimCLR) Ting Chen, Simon Kornblith, Mohammad Norouzi, Geoffrey Hinton, 2020 arxiv.org
[3] LoRA: Low-Rank Adaptation of Large Language Models Edward J. Hu, Yelong Shen, Phillip Wallis et al., 2021 arxiv.org
[4] Person-in-WiFi-3D: End-to-End Multi-Person 3D Pose Estimation with Wi-Fi Kangwei Yan et al., 2024 arxiv.org
[5] Overcoming Catastrophic Forgetting in Neural Networks (EWC) James Kirkpatrick, Razvan Pascanu et al., 2017 arxiv.org
[6] RuView — WiFi DensePose Edge AI System (GitHub Repository) rUv, 2025 github.com
[7] Code Indexer — AI-Powered Semantic Code Search Engine Code Indexer, 2025 codeindexer.dev
Share X Reddit LinkedIn Telegram Facebook