In this experiment, you will get hands-on experience with wireless sensing using Wi-Fi CSI.
In this Lab, you will learn how to:
- Collect CSI data (in Breathing scenario)
- Visualize CSI data, and understand its meaning
- Process CSI data.
- Estimate breath rate using DSP-based method.
- Write your own pipeline
Hornor Code: You should NEVER share your code with others groups or as a public repository. All the code is supposed to be the original outcome from your teamwork. Any violation of this rule will be considered as academic dishonesty and given zero score. However, you are encouraged to discuss the problem with your teammates and ask questions to the TAs.
In this part, you will learn how to collect, visualize, and process CSI data. We will provide you a example pipeline for breath rate estimation. All you need is to read, run, and understand the code.
Please kindly note that the tutorial is not sufficient for you to get a very high score. (grading criteria is at the end of this document) You are encouraged to read the paper and understand the algorithm mentioned in the tutorial.
This section will introduce the basics of CSI and how to collect it. As we will provide datasets for you to use (to test your model), therefore you do not need to collect CSI data (Please download the dataset from https://1drv.ms/u/s!Ajq1o16ob8nOpAdw7fcq_YnsyJPM?e=k47DJb and place it in the current directory).
You will be able to:
- Get an understanding of CSI data, from both time and frequency domain, and the meaning of its amplitude and phase.
- Understand the data format of ground truth (generated by PLUX Respiration Belts)
Breath rate estimation is a typical application of wireless sensing. In this section, we will provide you with a baseline method to estimate breath rate. And then you are advised to implement a complete pipeline for CSI breathing estimation, including dataloading, preprocessing, feature extraction, peek detection, and evaluation.
In this part, you are required to implement your own pipeline for breath rate estimation, or modified from PART I. You are encouraged to use the tutorial as a reference. You are also encouraged to read the paper and understand the algorithm mentioned in the tutorial.
We will only grade your code for Task 1-3. We will grade your code based on the following criteria (Totally 80 points in this lab): 1. Completeness of the pipeline, 2. Correctness of your code, 3. Performance of your method. (Details refer to the lab_wifi_sensing.ipynb file)
* Originality: You are encouraged to read the mentioned paper and algorithm, and either borrow the ideas or design your own method to finish the job. You can also fine tune the baseline method provided in the tutorial, and get at most 80% of the Originality points.
** Performance is measured by the mean squared error (MSE) between the estimated breath rate and the ground truth. The lower the MSE, compared to baseline, the better the score you will get.
1. Part1: Tutorial
-
1.1 Dataset introduction
- 1.1.1 Experiment environment
- 1.1.2 Dataset files
-
1.2. Visualization
- 1.2.1 CSI visualization in the time domain
- 1.2.1.1 Visualization of one subcarrier's amplitude and phase of one link
- 1.2.1.2 Visualization of amplitude and phase of all subcarriers
- 1.2.1.3 Visualization of one subcarrier's amplitude of all links
- 1.2.1.4 Comparison of background CSI and 12 BPM CSI
- 1.2.2 CSI visualization in frequency domain
- 1.2.3 Visualization of all ground-truth
- 1.2.1 CSI visualization in the time domain
-
1.3. Breath estimation pipeline
- 1.3.1 Data loading
- 1.3.2 Preprocessing
- 1.3.3 Feature Extraction
- 1.3.4 Peak Detection
- 1.3.5 Result Evaluation
2. Part2: Task
-
2.1 Task1: Controlled breath estimation (one person) (Points: 60)
-
2.2 Task2: Controlled breath estimation (two person) (Points: 10)
-
2.3 Task3: Varied breath estimation (one person) (Points: 10)
-
2.4 Advanced Task (Optional Bonus)