Die Sensor Based Activity Recognition (SBAR) API ist eine Machine Learning-basierte API, die auf unkalibrierten Sensordaten beruht. Die API verwendet verschiedene Machine- und Deep-Learning Modelle, um Bewegungsprofile vorherzusagen. Diese API hat zwei Hauptendpunkte, die CNN und HGBC heissen und jeweils unterschiedliche Modelle verwenden.
Die beiden Hauptendpunkte sind:
-
CNN: Ein Endpunkt, der ein Convolutional Neural Network (CNN) verwendet. Dieses Modell nutzt STFT Spektren zur Vorhersage von Bewegungsprofilen. Zu erreichen unter: https://sbar.fuet.ch/CNN
-
HGBC: Ein Endpunkt, der den Histogram Gradient Boosting Classifier (HGBC) verwendet. Dieses Modell verwendet eine Zusammenführung von Fast Fourier Transformationen. Zu erreichen unter: https://sbar.fuet.ch/HGBC
Die Endpunkte erwarten Daten im CSV-Format, die gzip-komprimiert sind.
- Python 3.10 oder höher
- Die Python-Pakete, die in der Datei requirements.txt aufgeführt sind.
Um die API mittels Docker zu installieren, führen Sie die folgenden Schritte aus:
- Klonen Sie das Repository mit
git clone https://github.com/Sensor-Based-Activity-Recognition/api.git
. - Wechseln Sie in das Verzeichnis.
- Passen Sie die Netzwerkeinstellungen in der Datei create_docker_container.sh an.
- Führen Sie das Skript mit
sudo sh create_docker_container.sh
aus. - Richten Sie einen Reverse Proxy (z.B. NGINX) ein, um die API zu routen.
Ein Beispiel für einen API-Request finden Sie im Jupyter Notebook example_request.ipynb.
Die Response der API ist ein JSON-Objekt, das die Vorhersage der Aktivitäten für verschiedene Zeitsegmente beinhaltet. Beispielsweise sieht eine Response wie folgt aus:
{
"0": {
"Sitzen": 1.0,
"Laufen": 0.0,
"Velofahren": 0.0,
"Rennen": 0.0,
"Stehen": 0.0,
"Treppenlaufen": 0.0
},
"1": {
"Sitzen": 1.0,
"Laufen": 0.0,
"Velofahren": 0.0,
"Rennen": 0.0,
"Stehen": 0.0,
"Treppenlaufen": 0.0
},
...
}
Die Daten werden beim Einlesen in 5-Sekunden-Segmente unterteilt. Für jedes dieser Segmente wird eine Vorhersage gemacht. Die Segmente sind durch einen Index gekennzeichnet, der als Schlüssel ("Key") im JSON-Objekt verwendet wird.
Die Vorhersage für ein Segment ist ein weiteres JSON-Objekt, das die Wahrscheinlichkeit für jede Aktivität enthält. Die Aktivitäten sind als Schlüssel und die Wahrscheinlichkeiten als Werte ("Value") gespeichert