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 опубликовали статью DensePose From WiFi [1], в которой доказали, что WiFi-сигналы, отражающиеся от человеческого тела, несут достаточно информации для восстановления полной позы — с точностью, сопоставимой с кaмерами. Теперь open-source проект RuView [6] превратил это исследование в полноценную edge AI систему на Rust, способную работать на микроконтроллерах стоимостью менее $10.

Мы провели комплексный аудит кода RuView с помощью Code Indexer — семантического поискового движка для кода — проанализировав все 1 139 исходных файлов: 45 017 блоков кода, 18 078 символов и 78 311 перекрёстных ссылок — чтобы понять, как эта система устроена изнутри. Вот что мы нашли.

Физика: почему WiFi может вас «видеть»

Каждый WiFi-роутер непрерывно передаёт радиоволны на частоте 2,4 ГГц или 5 ГГц. Когда эти волны встречают человеческое тело, они рассеиваются, отражаются и ослабляются предсказуемым образом в зависимости от положения тела. Современные WiFi-чипсеты сообщают об этом взаимодействии через измерение, называемое Channel State Information (CSI) — матрицу комплексных чисел, описывающих амплитуду и фазу сигналов по множеству поднесущих частот и антенных пар.

Поднятая рука создаёт один паттерн CSI, сидящий человек — другой. Расширение грудной клетки при дыхании создаёт тонкие ритмические вариации. Даже сердцебиение производит детектируемые микродвижения. Задача — извлечь осмысленную информацию из этого зашумлённого многомерного сигнала, и именно тут в дело вступает глубокое обучение.

От сигнала к скелету: AI-пайплайн

Архитектура RuView — это четырёхстадийный пайплайн, преобразующий сырые WiFi-измерения в 3D-точки скелета. Примечательно, что весь ML-стек — включая линейную алгебру, слои нейронных сетей, оптимизаторы и функции потерь — реализован на чистом Rust без единой внешней ML-зависимости. Ни PyTorch, ни TensorFlow, ни ONNX Runtime.

Этап 1: предобработка сигнала

Сырые данные CSI по своей природе зашумлены. Модуль CsiProcessor в RuView применяет три этапа очистки: удаление шума путём фильтрации амплитудных значений ниже настраиваемого порога в децибелах, оконную функцию Хэмминга для уменьшения спектральных утечек на границах фреймов и нормализацию к единичной дисперсии, чтобы сигналы от разного оборудования были сопоставимы. Процессор поддерживает скользящее окно истории для темпорального сглаживания с помощью экспоненциальных скользящих средних.

Этап 2: Graph Transformer

Это архитектурный центр системы. RuView реализует гибридную модель CsiToPoseTransformer, комбинирующую две мощные идеи из исследований глубокого обучения: Transformer (механизм внимания, лежащий в основе GPT и подобных моделей) и графовые нейронные сети (сети, работающие со структурированными графовыми данными).

Процесс работает следующим образом. Сначала CSI-признаки каждой антенной пары проецируются в многомерное пространство эмбеддингов через обучаемое линейное преобразование. Далее 17 обучаемых query-векторов — по одному на каждую ключевую точку тела в формате COCO (нос, глаза, плечи, локти, запястья, бёдра, колени, лодыжки) — обращаются к эмбеддингам CSI через cross-attention. Этот механизм позволяет каждой точке динамически фокусироваться на наиболее релевантных WiFi-сигналах, аналогично детектору объектов DETR [1].

Полученные признаки проходят через графовую свёрточную сеть (GCN), работающую на топологии человеческого скелета — графе, где суставы являются узлами, а кости — рёбрами. Этот этап навязывает анатомические ограничения: локоть должен быть соединён с плечом, колено — с бедром. 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 — за пределами ключевых точек

Если ключевые точки дают скелет, то DensePose идёт дальше — он отображает каждую точку поверхности тела в UV-координатную систему по 24 анатомическим регионам (голова, торс, плечи, предплечья, кисти, верхняя часть ног, голени, стопы). RuView включает модуль DensePoseHead с двумя ветвями: сегментационная ветвь классифицирует, к какой части тела относится каждое пространственное положение, а ветвь UV-регрессии предсказывает непрерывные координаты поверхности. Это позволяет использовать систему для детального распознавания жестов и отслеживания поверхности тела.

Этап 4: извлечение жизненных показателей

Помимо оценки позы, RuView извлекает физиологические сигналы из тех же WiFi-данных. Дыхание создаёт периодическое расширение грудной клетки (0.2–0.5 Гц), а сердцебиение — микровибрации (0.8–2.0 Гц). Система использует полосовую фильтрацию и спектральный анализ временных рядов CSI для выделения этих ритмических компонентов. Специальный классификатор жизненных показателей валидирует, соответствуют ли обнаруженные частоты реальным физиологическим сигналам или средовым артефактам вроде вентилятора.

Обучение без разметки: самообучение без учителя

Один из самых изощрённых аспектов RuView — способность выучивать осмысленные представления сигналов без каких-либо размеченных обучающих данных. Создание ground truth для WiFi-оценки позы — дорогое удовольствие: требуются синхронизированные камерные системы, фиксирующие позы одновременно с записью CSI. RuView решает эту проблему через пайплайн контрастного обучения в стиле SimCLR [2].

Подход работает так: создаются два различных аугментированных вида одного и того же окна CSI — например, один с добавленным гауссовым шумом и временным джиттером, другой с маскированием поднесущих и вращением фазы. Оба вида проходят через трансформер-бэкбон и проекционную голову (двухслойная нейросеть, отображающая признаки в 128-мерное пространство эмбеддингов). Функция потерь InfoNCE обучает модель распознавать, что эти два вида произошли из одного исходного сигнала, отличая их от видов других сигналов.

Этот процесс создаёт богатое, универсальное представление WiFi-сигналов, улавливающее осмысленную структуру — какие комнаты похожи, какие движения создают похожие паттерны — до любого supervised fine-tuning с реальными метками поз. Концепция идентична тому, как GPT изучает языковую структуру перед fine-tuning для конкретных задач.

SONA: адаптация к новым средам без потери знаний

WiFi-сигналы кардинально различаются в разных средах. Модель, обученная в бетонном офисе, будет плохо работать в квартире с ковровым покрытием, потому что стены, мебель и геометрия комнаты влияют на распространение сигнала. Переобучать с нуля для каждой новой комнаты непрактично. RuView решает эту задачу с помощью SONA (Self-Organizing Neural Architecture) — фреймворка онлайн-адаптации, комбинирующего две техники из современных ML-исследований.

Первая техника — LoRA (Low-Rank Adaptation) [3] — изначально разработана для fine-tuning больших языковых моделей. Вместо модификации всех параметров модели, LoRA обучает небольшую факторизованную дельту: произведение двух матриц малого ранга (обычно ранг 4), масштабированное константой. Это означает, что адаптация к новой комнате требует обновления лишь нескольких тысяч параметров вместо всей модели, что делает процесс осуществимым на микроконтроллерах.

Вторая техника — Elastic Weight Consolidation (EWC) [5] — метод регуляризации от DeepMind, предотвращающий катастрофическое забывание. Когда модель адаптируется к новому окружению, 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 магических чисел в коде обработки сигналов, которым не помешали бы именованные константы, и main.rs на 3 800 строк, выступающий монолитной точкой входа сервера — классический антипаттерн связанности, частично компенсируемый системой крейтов. Документация разрежена по формальным docstring, но компенсируется 20+ Architecture Decision Records (ADR), объясняющими проектные решения.

Почему это важно

WiFi-сенсинг — далеко не только академическое любопытство. Рабочая группа IEEE 802.11bf активно стандартизирует возможности WLAN Sensing, сигнализируя общеотраслевое признание того, что WiFi-инфраструктура может служить двойной цели — обеспечивать и связь, и восприятие. RuView демонстрирует, как выглядит полная реализация от сигнала до скелета на практике.

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

Полный исходный код доступен по адресу github.com/ruvnet/RuView. Данный анализ проведён с помощью 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