Instructions to use ElementalDLC37/flashview-csi-fall-detection with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use ElementalDLC37/flashview-csi-fall-detection with Keras:
# !pip install -U keras tensorflow huggingface_hub # Keras needs TensorFlow installed to read "hf://" paths, so the tensorflow backend is selected here; # "jax" and "torch" also work for computation once TensorFlow is installed. import os os.environ["KERAS_BACKEND"] = "tensorflow" import keras model = keras.saving.load_model("hf://ElementalDLC37/flashview-csi-fall-detection") - Notebooks
- Google Colab
- Kaggle
FlashView — Detecção de queda via Wi-Fi CSI (v1, em validação)
Modelo de detecção de queda a partir de Channel State Information (CSI) de Wi-Fi, coletado com ESP32-S3. Treinado em TensorFlow/Keras e convertido para TensorFlow.js para inferência local no navegador, sem servidor.
⚠️ v1, em validação. Este card declara o resultado real do split entre sessões, incluindo o que não funcionou. A v2 está em andamento (ver "Limitações" e "Próximos passos").
Arquitetura
CNN 1D + LSTM sobre janelas de 30 quadros, normalização por quadro, 64 features LLTF, saída binária
(queda / não-queda). Treino com class_weight para classe rara, early stopping, 13 épocas.
Dados
- 39.690 quadros de CSI, 1.321 janelas (346 positivas)
- 5 sessões, 128 eventos de queda rotulados
- 1 sujeito (auto-experimento), 2 ambientes
- Cadência estável: 33,3 fps em todas as sessões
- Rotulagem ancorada em janela
[toque − 2 s, toque + 0,5 s]
Resultado — e o resultado honesto importa mais
Split por sessão (a sessão de teste nunca aparece no treino). Limiar escolhido no treino, para não inflar métrica dependente de limiar.
| Regime | AUC-ROC | Acurácia balanceada | F1 |
|---|---|---|---|
| Treino (mesmas sessões) | 0,886 | 0,828 | 0,729 |
| Teste (sessão não vista) | 0,520 | 0,495 | 0,143 |
Detalhe do teste: TP 12 · FP 44 · TN 332 · FN 100 · sensibilidade 0,107 · especificidade 0,883 · 468 falsos positivos por hora.
Por que este resultado é publicado assim
O modelo decorou a sessão, não o movimento. Em split intra-sessão (corte temporal com embargo) o AUC chega a 0,827; entre sessões cai para 0,506–0,787. Isso tem nome na literatura: sobreajuste ao componente estático do ambiente (background DC), que muda de sala para sala e de posição para posição (Strohmayer & Kampel, 2024; Wang et al., 2025 — survey de generalização em wireless sensing).
Publicar o número ruim é o ponto: um modelo com F1 0,14 em split por sessão é mais informativo que um F1 0,98 em split aleatório, que vaza quadro da mesma sessão para o teste.
Limitações (declaradas)
- 1 sujeito — sem validação entre pessoas.
- 2 ambientes — generalização espacial não demonstrada.
- Sessão de teste curta (442 s) — intervalo de confiança largo.
- Sem LLM — este é um modelo supervisionado clássico (CNN-LSTM), não um modelo de linguagem.
- Rótulo por visão computacional — a rotulagem automática pode conter erro sistemático.
Próximos passos (v2)
- Aumentação no eixo do tempo:
randomCircularRotation(jitter do rótulo) erandomResizedCrop(variação de velocidade) — as duas com maior ganho medido na literatura (+6 a +16 p.p.). - Remoção do componente DC por gate de variância temporal (Wang et al., 2026).
- Mais sujeitos e um terceiro ambiente.
- Avaliação com intervalo de confiança (bootstrap sobre janelas).
Uso
import tensorflow as tf
model = tf.keras.models.load_model("csi_fall_detection.keras")
# entrada: (batch, 30, 64) — janela de 30 quadros, 64 features LLTF, normalizada por quadro
pred = model.predict(x) # [p_nao_queda, p_queda]
Versão para navegador: model.json + pesos (TensorFlow.js), usada no dashboard do FlashView.
Contexto do projeto
FlashView é um sistema completo: firmware ESP32-S3 (PlatformIO) → API de ingestão (Bun/Elysia + PostgreSQL) → dashboard com rotulagem e inferência TF.js. Projeto integrador do Bacharelado em Sistemas de Informação (UNIPAR), com artigo em preparação.
Citação
@misc{gomes2026flashviewcsi,
title = {FlashView: detecção de queda via Wi-Fi CSI com ESP32-S3},
author = {Gomes, Rui Lucas Anthony},
year = {2026},
note = {Modelo v1 em validação. Split por sessão.},
url = {https://huggingface.co/ElementalDLC37/flashview-csi-fall-detection}
}
Referências
- Strohmayer & Kampel (2024) — aumentação em CSI, transferência entre cenários
- Wang et al. (2025) — survey de generalização em wireless sensing
- Gao, Liu & Li (2023) — aumentação para séries temporais
- Wang et al. (2026) — Dynamic Variance Gate para detecção de queda cross-domain
- Downloads last month
- -