| Literature DB >> 35062529 |
Konstantinos Kotrotsios1, Anastasios Fanariotis1, Helen-Catherine Leligou1, Theofanis Orphanoudakis1.
Abstract
In this paper, we present the results of a performance evaluation and optimization process of an indoor positioning system (IPS) designed to operate on portable as well as miniaturized embedded systems. The proposed method uses the Received Signal Strength Indicator (RSSI) values from multiple Bluetooth Low-Energy (BLE) beacons scattered around interior spaces. The beacon signals were received from the user devices and processed through an RSSI filter and a group of machine learning (ML) models, in an arrangement of one model per detected node. Finally, a multilateration problem was solved using as an input the inferred distances from the advertising nodes and returning the final position approximation. In this work, we first presented the evaluation of different ML models for inferring the distance between the devices and the installed beacons by applying different optimization algorithms. Then, we presented model reduction methods to implement the optimized algorithm on the embedded system by appropriately adapting it to its constraint resources and compared the results, demonstrating the efficiency of the proposed method.Entities:
Keywords: Bluetooth; beacons; embedded IPS; indoor localization; machine learning
Year: 2022 PMID: 35062529 PMCID: PMC8781641 DOI: 10.3390/s22020570
Source DB: PubMed Journal: Sensors (Basel) ISSN: 1424-8220 Impact factor: 3.576
Figure 1(a) Bluetooth beacons used in our experiments; (b) apartment map with beacon locations; (c) example result of the position inference method in [18].
Experiment No. 1 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 1 | 64, 64, 1 | RMSprop (0.001) | 1000 | 38,993 bytes | Mean absolute error (MAE): 40.17/34.51/45.52/37.18/39.29— |
Figure 2Experiment No. 1 results: (a) learning curve for our baseline model; (b) plot of the predicted distance (in cm) from our basic model against the actual distance of the user for the set of 1111 measurements; (c) distribution of the prediction error (in cm) using our basic model (distances expressed (in cm) in (a–c)).
Distance error distribution for our algorithm using the baseline model (in cm).
| 0–25 | 25–50 | 50–75 | 75–100 | 100–125 | 125–150 | >150 | |
|---|---|---|---|---|---|---|---|
|
| 226 | 327 | 221 | 121 | 84 | 49 | 83 |
|
| 20.53 | 29.70 | 20.07 | 10.99 | 7.63 | 4.45 | 7.54 |
Experiments No. 2, No. 3, and No. 4 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 2 | 64, 64, 1 | RMSprop (0.001) | 500 | 38,993 bytes | MAE: 40.09/ 33.12/ 42.23/ 39.51/ 38.97— |
| 3 | 64, 64, 1 | RMSprop (0.001) | 200 | 38,993 bytes | MAE: 39.59/33.91/43.72/38.12/42.34— |
| 4 | 64, 64, 1 | RMSprop (0.001) | 100 | 38,993 bytes | MAE: 42.25/36.04/46.28/41.70/44.71— |
Experiments No. 5, No. 6, No. 7, and No. 8 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 5 | 64, 64, 1 | Adam | 1000 | 58,158 bytes | MAE: 37.73/33.56/43.09/35.93/39.42— |
| 6 | 64, 64, 1 | Adam | 500 | 58,158 bytes | MAE: 41.04/31.77/39.55/35.66/37.95— |
| 7 | 64, 64, 1 | Adam | 200 | 58,158 bytes | MAE: 38.44/32.67/43.02/36.87/41.75— |
| 8 | 64, 64, 1 | Adam | 100 | 58,158 bytes | MAE: 41.18/36.10/46.43/41.67/43.20— |
Experiments No. 9, No. 10, No. 11, and No. 12 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 9 | 128, 128, 64, 64, 1 | RMSprop (0.001) | 500 | 241,273 bytes | MAE: 38.47/29.36/43.96/35.19/36.57— |
| 10 | 128, 128, 64, 64, 1 | RMSprop (0.001) | 200 | 241,273 bytes | MAE: 36.25/29.97/35.54/37.71/35.07— |
| 11 | 128, 128, 64, 64, 1 | Adam | 500 | 346,036 bytes | MAE: 36.54/27.01/35.82/35.52/33.60— |
| 12 | 128, 128, 64, 64, 1 | Adam | 200 | 346,036 bytes | MAE: 36.61/23.13/39.39/33.44/33.38— |
Experiments No. 13, 14, 15, and 16 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 13 | 256, 256, 128, 128,64, 1 | Adam | 200 | 1,556,594 bytes | MAE: 31.35/22.56/35.93/27.65/32.27— |
| 14 | 512, 512, 256, 256, 128, 1 | Adam | 200 | 6,304,416 bytes | MAE: 27.72/20.13/37.34/28.04/28.14— |
| 15 | 256, 256, 128, 128, 64, 64, 1 | Adam | 200 | 5,955,675 bytes | MAE: 27.98/23.65/35.16/32.02/30.07— |
| 16 | 512, 512, 256, 256, 128, 128, 64, 64, 1 | Adam | 200 | 1,505,883 bytes | MAE: 28.26/21.02/32.89/28.13/29.10— |
Experiment No. 17 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 17 | 512, BN, 512, BN, 256, BN, 256, BN, 128, 1 | Adam | 200 | 6,009,443 bytes | MAE: 25.65/20.47/28.82/23.35/25.52— |
Experiments No. 18 and No. 19 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 18 | 512, BN, 512, BN, 256, BN, 256, BN, 128, 1 | Adam | 500 | 6,009,443 bytes | MAE: 26.35/22.73/29.91/23.83/29.97— |
| 19 | 512, BN, 512, BN, 256, BN, 256, BN, 128, 1 | Adam | 1000 | 6,009,443 bytes | MAE: 26.35/22.73/29.90/23.83/29.97— |
Experiments No. 20 and No. 21 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 20 | 512, BN, DO(0.3), 512, BN, DO(0.3), 256, BN, DO(0.2), 256, BN, DO(0.2), 128, 1 | Adam | 1000 | 6,009,507 bytes | MAE: 28.19/21.46/30.86/26.49/24.95— |
| 21 | 512, BN, DO(0.3), 512, BN, DO(0.3), 256, BN, DO(0.2), 256, BN, DO(0.2), 128, 1 | Adam | 2000 | 6,009,507 bytes | MAE: 28.19/21.46/30.86/26.49/24.95— |
Experiment No. 22 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 22 | 512, BN, DO(0.3), 512, BN, DO(0.3), 256, BN, DO(0.2), 256, BN, DO(0.2), 128, 1 | Adam (lr = 0.005; decay = 5 × 10–4) | 1000 | 6,009,587 bytes | MAE: 27.37/21.10/29.50/25.81/26.15— |
Figure 3Learning curves of experiment No. 22 for beacons A (a), B (b), C (c), D (d), and E (e). Distances are expressed in cm.
Experiment No. 23 parameters and results.
| # | Layers | Optimizer | Epochs | Model Size | Results per Beacon A/B/C/D/E—Average (in cm) |
|---|---|---|---|---|---|
| 23 | 1024, BN, DO(0.4), 512, BN, DO(0.3), 512, BN, DO(0.3), 256, BN, DO(0.2), 256, BN, DO(0.2), 128, 1 | Adam | 1000 | 12,378,812 bytes | MAE: 27.40/20.08/24.96/23.85/24.57— |
Figure 4Experiment No. 23 results: (a) learning curve with the MAE of our final model; (b) plot of the predicted distance (in cm) from our final model against the actual distance of the user for the set of 1111 measurements; (c) distribution of the prediction error (in cm) using our final model. (Distances are expressed in cm in (a–c)).
Figure 5(a) Average error improvements for specific experiments; (b) models sizes for specific key models.
Distance error (ε) distribution of the final model (in cm).
| 0–25 | 25–50 | 50–75 | 75–100 | 100–125 | 125–150 | >150 | |
|---|---|---|---|---|---|---|---|
|
| 768 | 119 | 65 | 48 | 37 | 29 | 45 |
|
| 69.13 | 10.71 | 5.85 | 4.32 | 3.33 | 2.61 | 4.05 |
Figure 6Inference scattering diagrams for nodes A (a), B (b), C (c), D (d), and E (e) (predicted distance in cm (y-axis) vs. true value (x-axis) in cm). Inference error distributions for nodes A (f), B (g), C (h), D (i), and E (j) (sample count (y-axis) vs. prediction error (x-axis) in cm).
TFLite optimization results.
| Optimization | Inference Results | ||||||
|---|---|---|---|---|---|---|---|
| Sparsity | Quantization | Fine-Tuning | Loss | MAE | MSE | Mean Error | |
| Beacon A | 0.8 | float32 to int8 | 1000 | 18.4476 | 18.4476 | 1848.2050 | 0.6376 |
| Beacon B | 0.8 | float32 to int8 | 1000 | 15.1017 | 15.1017 | 1194.3876 | −2.2250 |
| Beacon C | 0.8 | float32 to int8 | 1000 | 20.6127 | 20.6127 | 2342.6716 | 1.2697 |
| Beacon D | 0.8 | float32 to int8 | 1000 | 23.8207 | 23.8207 | 2111.8499 | −11.6955 |
| Beacon E | 0.8 | float32 to int8 | 1000 | 18.0798 | 18.0798 | 2187.8782 | −2.2230 |
|
|
|
|
|
| |||