Enxergar pessoas através das paredes com Wi-Fi – π RuView: WiFi DensePose

O projeto RuView (tambem chamado de WiFi DensePose) é daqueles projetos que parecem ficção científica e bruxaria: ele estima pose humana, presença e até sinais vitais usando apenas ondas de rádio do Wi-Fi, sem capturar um único pixel de vídeo, ou seja somente Wifi.

O que é o RuView, em uma frase?

O RuView é um sistema open source que analisa perturbações no CSI (Channel State Information) do Wi-Fi para reconstruir, em tempo real, pose humana (skeleton/DensePose), presença e métricas de respiração/batimentos com foco forte em privacidade, porque não usa câmeras.
Por que “CSI” importa (e por que seu notebook comum não faz tudo)

Aqui está o pulo do gato:

  • RSSI (o que Wi-Fi comum costuma expor) é basicamente “um número por AP” (força do sinal). Serve para presença/movimento de forma bem mais grossa.
  • CSI expõe informações ricas por subportadora (amplitude/fase), permitindo extrair padrões finos do ambiente e do movimento.

O próprio projeto deixa claro: pose/vitais/through-wall dependem de CSI; em laptops comuns você tende a ficar no máximo em presença/movimento via RSSI.

O que ele consegue detectar hoje

O “cardápio” técnico do projeto:

  • Pose estimation: CSI (amplitude/fase por subportadora) → DensePose UV maps / skeleton
  • Respiração: bandpass ~0,1–0,5 Hz → pico por FFT (faixa típica 6–30 BPM)
  • Batimentos: bandpass ~0,8–2,0 Hz → pico por FFT (faixa típica 40–120 bpm)
  • Presença: variação de RSSI + energia de banda de movimento com latência muito baixa
  • Through-wall sensing: usando geometria de zona de Fresnel + multipath (o README menciona “até ~5m” em certos cenários)
    E tem um detalhe importante de responsabilidade: a estimativa de sinais vitais no firmware alpha é heurística e “não é para uso médico” melhor com pessoa parada e ambiente controlado.

O projeto esta disponível nos seguintes hardware:

  • ESP32-S3 (recomendado) para capturar CSI e montar uma malha (mesh) de sensores; o README cita cenários com ESP32-S3 “~$8” como add-on por zona.
  • NICs de pesquisa (ex.: Intel 5300 / Atheros AR9580) com drivers/patches para CSI no Linux.
  • Sem hardware: dá para brincar o pipeline com execução determinística/“proof replay”. Além disso, o projeto mostra uma linha interessante para edge AI: um modelo/embedding de “fingerprint” do ambiente com ~55 KB total, cabendo na memória do ESP32, com backbone + head + MicroLoRA por ambiente.

Arquitetura: do rádio ao 3D

  • O RuView não é só “um script”; ele é um sistema completo:
  • Captura e streaming (ESP32-S3): captura CSI em frequência definida e pode enviar bruto por UDP para um servidor.
  • Processamento e API (Rust): o “sensing server” expõe REST API e WebSocket para frames/vitais/pose e integra com UI.
  • Visualização (Observatory/Three.js): um modo “Observatory” para ver cenários (multi-person, fall detect, intrusion, etc.) e animações em 3D.

O projeto também enfatiza performance com um rewrite em Rust, citando pipeline completo em ordem de dezenas de microssegundos por frame e um comparativo de speedup vs Python.

Primeiros passos em 30 segundos (sem instalar ferramentas compiladas localmente)

O caminho mais simples é via Docker:

docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 -p 3001:3001 -p 5005:5005/udp ruvnet/wifi-densepose:latest
# depois abra http://localhost:3000

Abaixo as URL da API:

curl http://localhost:3000/health
curl http://localhost:3000/api/v1/vital-signs
curl http://localhost:3000/api/v1/pose/current

Verificação “científica”: pipeline determinístico (sem Wi-Fi real)

Um pedaço que eu achei muito bem pensado: o projeto oferece um modo “verify” para confirmar que o pipeline de sinal é real e reproduzível sem hardware, sem GPU, sem Docker. Para isto basta usar o comando ./verify

Ele roda checagem de ambiente, replay de um sinal de referência por toda a cadeia (filtragem, janelamento, FFT/Doppler etc.) e compara um hash SHA-256 do resultado.

Edge Intelligence no ESP32: do “raw streaming” ao “standalone”

O RuView também descreve “tiers” de processamento no próprio ESP32-S3:

  • Tier 0: só streaming bruto (raw CSI)
  • Tier 1: limpeza + estatística + seleção de subportadoras + compressão
  • Tier 2: Tier 1 + presença + vitais + motion scoring + fall detection
  • (No README do github, também aparece um tier com módulos WASM, para extensões customizadas)

A ideia é reduzir banda e permitir detecção local sem PC/servidor, dependendo do tier configurado.

Casos de uso que fazem sentido (e por que isso chama tanta atenção)

Quando você junta “funciona no escuro”, “não precisa line-of-sight” e “sem câmera”, começa a aparecer uma lista enorme de aplicações. Por exemplo, como monitoramento de idosos (quedas/sono), segurança perimetral, ambientes industriais e robótica, entre outros. A parte legal aqui é que não é só “conceito”: o projeto também discute limitações físicas (subportadoras, multipath, atenuação por metal) e escalabilidade por múltiplos APs/nós.

Privacidade: “sem câmera” não significa “sem dado sensível”

Mesmo sendo privacy-first (sem imagem/vídeo), o próprio user guide lembra que posição, movimento e sinais vitais ainda são dados pessoais e podem cair em regulações dependendo do contexto.

RESUMO: RuView é um daqueles projetos que redefinem o que a gente entende por “sensor”: em vez de adicionar mais uma câmera ao mundo, ele tenta extrair informação do que já está no ar ondas de rádio. E mesmo que você não vá colocar isso em produção amanhã, só o fato de ter:

  • pipeline verificável (hash),
  • stack completa (edge → API → UI),
  • e documentação extensa,

já torna o repositório um prato cheio para quem pesquisa IA aplicada, sistemas embarcados e computação “ambiental”.

Fonte: https://github.com/ruvnet/RuView

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.