Skip to content

ianbrown53/mmWaveRainML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

mmWaveRainML

Machine learning model trained to predict rainfall from Google Pixel mmWave link data

Background

This passion project started out as a graduate course project, evolved into my master's capstone, and has continued well past graduation.

Software Defined Radios (ECE 5674) course project

This project was done with Samantha Frietchen. We initially wanted train a machine learning model to predict rainfall using the received signal strength fluctuations on commercial microwave links (CMLs). We were unable to gain access to the data, so we simulated a link ourselves by analyzing the distributions of historical weather patterns using JMP. With the simulated weather, we determined randomized link budgets based on empirical standard deviation values for different frequencies. With the resulting relationship between RSS and weather patterns, we trained a neural network to make humidity and rain rate predictions. This project piqued my interest in pursuing this technique on real-life data.

Master's Capstone

System Design
Since commercial CML data is proprietary, I had to take a different approach. 5G mmWave links use high frequencies similar to CMLs, so I created my own real-life version of a CML. I created a stationary link between a Google Pixel phone and a mmWave base station and recorded how the low-level physical layer parameters, such as RSSI, varied during rainfall events. After collecting a large amount of phone data, which also included measurements from the phone's built in temperature and barometric pressure sensors, I merged it with local NOAA rainfall measurements to create a dataset that spanned weeks. Then, I trained a gradient boosting machine learning model to predict rainfall at the link based off of the phone's recorded data. The resulting model achieved an F1-score of 88.9%. Coordinating the data collection was enourmous undertaking, so since it's the "secret sauce" I've only included a small preview of the data. Credit to Rayhan Biju for helping me automate fetching NOAA's rainfall data from the internet so I could use it as ground truth for ML training.
Results

Current follow-on work

I had to use a paid Android app to access the low-level physical-layer data from the Google Pixel, and data logging bugs left much to be desired. I'm currently working on writing my own proprietary scripts access this data myself, which involves a combination of modifying open-source tools and reverse-engineering Android kernel interfaces. My end goal is to deploy the data collection and machine learning in real time and create a web app to display its measurements.

About

Machine learning model trained to predict rainfall from Google Pixel mmWave link data

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published