WiFlow: Estimating Optical Flow using WiFi Channel State Information
Thomas Weigel, Simon Kiefhaber, Fabian Portner, Matthias Hollick, Simone Schaub-Meyer
TU Darmstadt · TU Delft · hessian.AI
[Paper] [Dataset] [Project Page]
The code has been tested with Python 3.10 and PyTorch 2.0.
git clone https://github.com/visinf/wiflow.git
cd wiflow
pip install -e .Or install directly from the Git URL:
pip install "wiflow @ git+https://github.com/visinf/wiflow.git"Note: The WiFlow dataset will be released publicly soon. Please check the project page for updates.
Once available, download the dataset and place it under dataset/. The dataset provides three aligned variants — sideview, birdview, and birdviewplus — with synchronized CSI and pseudo ground truth optical flow. Dataset configs are provided in dataset_configs/; point the config's dataset_root to your download location.
If you want to generate pseudo-GT flow from your own camera frames, use the notebook tools/generate_psudo_gt.ipynb. It runs an ensemble of five optical flow models (rpknet, ms_raft_p, sea_raft_m, memflow, dpflow) via PTLFlow.
WiFlowSimple:
python train_recurrent.pyWiFlowRoI (two-step — pretrain mask, then full model):
python train_mask.py
python train_roi.pyWiFlowCombo:
python train_recurrent.py # train flow branch
python train_mask.py # train mask branch
# then combine weights via WIFlow/WIFlow_combined.pyTraining logs and checkpoints are written to runs/.
python evaluation.pyWe report EPE (all pixels), EPEM (moving pixels), EPES (static pixels), and EPEA (amplified, power 4). See the paper for full results.
python benchmarking/main.py@inproceedings{weigel2025wiflow,
title = {WiFlow: Estimating Optical Flow using WiFi Channel State Information},
author = {Weigel, Thomas and Kiefhaber, Simon and Portner, Fabian and Hollick, Matthias and Schaub-Meyer, Simone},
booktitle = {European Conference on Computer Vision (ECCV)},
year = {2026},
}