https://github.com/conect2ai/etfa2025-autoencoders

This repository contains the code implementation of the embedded autoencoder in Freematics One+ proposed at the IEEE ETFA 2025 conference.

https://github.com/conect2ai/etfa2025-autoencoders

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: scholar.google
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.7%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

This repository contains the code implementation of the embedded autoencoder in Freematics One+ proposed at the IEEE ETFA 2025 conference.

Basic Info
  • Host: GitHub
  • Owner: conect2ai
  • License: mit
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 4.45 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme License

README.md

   

 

Autoencoders for Embedded Sensor Data Compression: A Case Study on Vehicular IoT Systems

✍🏾 Authors: Matheus Andrade, Miguel Amaral, Morsinaldo Medeiros, Marianne Diniz, Ivanovitch Silva, Massimiliano Gaffurini, Dennis Brandão, Paolo Ferrari


📖 Abstract

The growing integration of sensors and embedded devices into distributed Internet of Things (IoT) systems has increased the demand for real-time data collection and processing solutions. However, the high volume and frequency of sensor data create challenges related to storage, transmission, and response latency, especially in resource-constrained environments. In this context, locally executed compression techniques, aligned with the Tiny Machine Learning (TinyML) paradigm, become differentiators for enabling embedded applications. Thus, this work proposes an autoencoder-based approach for efficiently compressing sensor data on edge devices. Three autoencoder variants (feedforward, sparse, and contractive) are evaluated, combined with symmetric and asymmetric architectures, considering criteria such as compression ratio, information preservation, and embedded execution feasibility. For practical validation, a case study was conducted using vehicular data collected via the OBD-II interface, where the selected models were deployed on the OBD-II Edge Freematics One+ device. The results show that the models could reduce data dimensionality with minimal information loss, maintain competitive performance on discriminative tasks, and exhibit inference times compatible with real-time applications. Autoencoders represent a viable neural compression solution for IoT environments, potentially applicable to various embedded sensing scenarios.


Python PlatformIO Edge%20AI

Repository Structure 📂

  • ./notebooks/ — Source code to produce the dataset, traint the models and choose the models to Freematics.
  • ./Freematics/ — Source code from the Freematics project used for the embedded experiments (ESP32, OBD-II communication, etc.).
  • ./figures/ — Figures generated for analysis and publication.
  • .git/ — Version control metadata (Git).

🚀 About the Code

1️⃣ Cloning the Repository

bash git clone https://github.com/conect2ai/ETFA2025-Autoencoders.git cd ETFA2025-Autoencoders

2️⃣ Installing Dependencies

It is recommended to use Python 3.11+ with a virtual environment (venv or conda):

bash pip install -r requirements.txt

3️⃣ Running the Notebooks

Open the .ipynb files using Jupyter Notebook or JupyterLab and execute the cells according to the instructions provided in each section.

Executing on Freematics One+

4️⃣ Opening the Project

Open the project folder ./Freematics/firmware_v5/telelogger on PlatformIO, as illustrated in the figure below.

5️⃣ Connecting the Device

Connect the Freematics One+ to your computer and turn it on using the Freematics Emulator or inside the vehicle.

6️⃣ Compiling, Uploading, and Monitoring

Compile, upload, and monitor the serial (steps 1, 2, and 3, respectively, in the figure below).


:pagefacingup: License

This project is licensed under the MIT License - see the LICENSE file for details.


🌎 About Conect2AI

The research group Conect2AI is composed of undergraduate and graduate students from the Federal University of Rio Grande do Norte (UFRN). Our mission is to apply Artificial Intelligence (AI) and Machine Learning (ML) to emerging areas.

🎯 Our areas of expertise include:

  • Embedded Intelligence & IoT: Optimizing resource management and energy efficiency in connected environments.
  • Energy Transition & Mobility: Leveraging AI to optimize the energy consumption of connected vehicles and foster more efficient, sustainable mobility.

Owner

  • Name: conect2ai
  • Login: conect2ai
  • Kind: organization

GitHub Events

Total
  • Public event: 1
  • Push event: 2
Last Year
  • Public event: 1
  • Push event: 2

Dependencies

requirements.txt pypi
  • Markdown ==3.7
  • MarkupSafe ==3.0.2
  • Pygments ==2.18.0
  • RapidFuzz ==3.10.1
  • Werkzeug ==3.1.3
  • absl-py ==2.1.0
  • anyio ==4.7.0
  • arrow ==1.3.0
  • asttokens ==2.4.1
  • astunparse ==1.6.3
  • certifi ==2024.8.30
  • cffi ==1.17.1
  • charset-normalizer ==3.4.0
  • click ==8.1.7
  • codecarbon ==2.8.1
  • colorama ==0.4.6
  • comm ==0.2.2
  • contourpy ==1.3.1
  • cryptography ==44.0.0
  • cycler ==0.12.1
  • debugpy ==1.8.8
  • decorator ==5.1.1
  • exceptiongroup ==1.2.2
  • executing ==2.1.0
  • fief-client ==0.20.0
  • flatbuffers ==24.3.25
  • fonttools ==4.55.0
  • gast ==0.6.0
  • google-pasta ==0.2.0
  • grpcio ==1.67.1
  • h11 ==0.14.0
  • h5py ==3.12.1
  • httpcore ==1.0.7
  • httpx ==0.27.2
  • idna ==3.10
  • ipykernel ==6.29.5
  • ipython ==8.29.0
  • jedi ==0.19.2
  • joblib ==1.4.2
  • jupyter_client ==8.6.3
  • jupyter_core ==5.7.2
  • jwcrypto ==1.5.6
  • keras ==3.6.0
  • kiwisolver ==1.4.7
  • libclang ==18.1.1
  • markdown-it-py ==3.0.0
  • matplotlib ==3.9.2
  • matplotlib-inline ==0.1.7
  • mdurl ==0.1.2
  • ml-dtypes ==0.4.1
  • namex ==0.0.8
  • nest-asyncio ==1.6.0
  • numpy ==2.0.2
  • nvidia-ml-py ==12.560.30
  • opt_einsum ==3.4.0
  • optree ==0.13.1
  • packaging ==24.2
  • pandas ==2.2.3
  • parso ==0.8.4
  • pexpect ==4.9.0
  • pillow ==11.0.0
  • platformdirs ==4.3.6
  • prometheus_client ==0.21.1
  • prompt-toolkit ==3.0.41
  • protobuf ==5.28.3
  • psutil ==6.1.0
  • ptyprocess ==0.7.0
  • pure_eval ==0.2.3
  • py-cpuinfo ==9.0.0
  • pycparser ==2.22
  • pynvml ==12.0.0
  • pyparsing ==3.2.0
  • python-dateutil ==2.9.0.post0
  • pytz ==2024.2
  • pyzmq ==26.2.0
  • questionary ==2.1.0
  • requests ==2.32.3
  • rich ==13.9.4
  • scikit-learn ==1.5.2
  • scipy ==1.14.1
  • seaborn ==0.13.2
  • setuptools ==75.8.0
  • shellingham ==1.5.4
  • six ==1.16.0
  • sniffio ==1.3.1
  • stack-data ==0.6.3
  • tensorboard ==2.18.0
  • tensorboard-data-server ==0.7.2
  • tensorflow ==2.18.0
  • termcolor ==2.3.0
  • threadpoolctl ==3.5.0
  • tornado ==6.4.1
  • traitlets ==5.14.3
  • typer ==0.15.1
  • types-python-dateutil ==2.9.0.20241206
  • typing_extensions ==4.12.2
  • tzdata ==2024.2
  • urllib3 ==2.2.3
  • wcwidth ==0.2.13
  • wheel ==0.45.1
  • wrapt ==1.16.0
  • yaspin ==3.1.0