For my master's thesis I collected CSI with 4 WiFi network cards (Intel AX210) for three different persons for 102 positions (spaced roughly 30cm apart). The covered area was around 10m x 7m and in each corner {(0,0), (10,0), (0,7), (10,7)} I placed a desktop computer with an AX210, collecting CSI from a router that was placed at (5,7). I then pinged each computer from my laptop (which was in the network spanned by the WiFi Router) in parallel with 20Hz for 10s for each position (yielding 200 CSI samples per positions).

I then fed this data (unprocessed) into my simple convolutional neural network (3 Conv-Layers->AvgPool->Flatten->Dense->Output) for classification or regression of the positions (I tried both). For my first test I did a random train-test-split (80/20) of the dataset from one person. Surprisingly, the network achieved over 93% classification accuracy for 102 positions! For my second test, I trained the network on the dataset of one person and then tested it with the same person but from a different dataset (collected at a different time, to see if the network is able to generalise at all). Unfortunately, the accuracy dropped to something like 23%, very bad! I then thought maybe the classification accuracy is so bad because even close-by positions are considered the wrong class, e.g. if (0,0) is the right position but the network classified it as (1,0), it is false but still pretty close. For that reason, I tried regression and ended up with a mean euclidean distance error of 4. So 4 squares with a square being 30cm = 1.20m. Not so bad! But unfortunately after doing some plots the network fails completely at covering the edge-positions. It basically classifies everything as being around (5, 3) - the center of the room.

Now I am a bit lost for what I can do to improve the accuracy of my neural network. Basically the only thing I can do is to try different preprocessing approaches. Unfortunately, as a computer science student (with minor in electrical engineering) I am not very familiar with signal processing of radio wave signals.

Do you guys find any obvious reasons why my network fails at generalising and do you have a recommendation for a preprocessing approach I could try to improve the results?

I plotted the absolute valued CSI of the 4 receivers for two positions. The top row is at position (0,0), the bottom row at (10,7). The CSI change a lot even though the scene was completely static (the person wasn't moving much at all). Why is there so much randomness in the data?

CSI plot

  • 1
    $\begingroup$ Welcome to SP.SE! There is a lot of different phenomena happening under the hood. However, even in simple experiments with simpler settings (single-carrier, narrowband signals, and so on) you could still see variations in the CSI. All these issues fall into what we call "fading", which can happen in a variety of ways with different schemes to mitigate it. For the specifics of WiFi (depending on the standard version, namely 801.11a/b/g/n/ax/...) things also might behave differently. You would need to dig deep into each one of this considerations to understand the full picture. $\endgroup$
    – cjferes
    Jul 28 at 17:27


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.