Keras
Portuguese
English
wifi-csi
fall-detection
human-activity-recognition
tensorflow
cnn-lstm
esp32
edge-ai
tensorflowjs
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
|
Download README.md from ElementalDLC37/flashview-csi-fall-detection: direct link, hf CLI and curl.
- Browser
- Download file 4.59 kB
-
https://huggingface.co/ElementalDLC37/flashview-csi-fall-detection/resolve/main/README.md
- Command line
-
hf download hf://ElementalDLC37/flashview-csi-fall-detection/README.md
-
curl -L -o README.md https://huggingface.co/ElementalDLC37/flashview-csi-fall-detection/resolve/main/README.md
4.59 kB
| language: | |
| - pt | |
| - en | |
| tags: | |
| - wifi-csi | |
| - fall-detection | |
| - human-activity-recognition | |
| - tensorflow | |
| - keras | |
| - cnn-lstm | |
| - esp32 | |
| - edge-ai | |
| - tensorflowjs | |
| license: mit | |
| pretty_name: FlashView CSI Fall Detection (CNN1D + LSTM) | |
| # 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. **1 sujeito** — sem validação entre pessoas. | |
| 2. **2 ambientes** — generalização espacial não demonstrada. | |
| 3. **Sessão de teste curta** (442 s) — intervalo de confiança largo. | |
| 4. **Sem LLM** — este é um modelo supervisionado clássico (CNN-LSTM), não um modelo de linguagem. | |
| 5. **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) e `randomResizedCrop` | |
| (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 | |
| ```python | |
| 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 | |
| ```bibtex | |
| @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 | |