TinyML在OBD-II边缘设备上燃油类型分类的实现与优化
论文标题:TinyML Implementation and Optimization for Fuel Type Classification on OBD-II Edge Device(TinyML在OBD-II边缘设备上燃油类型分类的实现与优化)
作者信息:Miguel Amaral, Morsinaldo Medeiros, Matheus Andrade, Thommas Flores, Marianne Silva, Ivanovitch Silva;来自巴西纳塔尔的里约格朗德北部联邦大学(Federal University of Rio Grande do Norte - Natal, Brazil)以及佩内多的阿拉戈斯联邦大学(Federal University of Alagoas - Penedo, Brazil)。电子邮件地址包括:{miguel.amaral.111, morsinaldo.medeiros.075, matheus.diniz.122, thommas.flores.101}@ufrn.edu.br 和 marianne.silva@penedo.ufal.br,以及 ivanovitch.silva@ufrn.br。
论文出处:2024 Symposium on Internet of Things (SIoT) | 979-8-3315-0746-6/24/$31.00 ©2024 IEEE | DOI: 10.1109/SIOT63830.2024.10780490
摘要: 全球对气候变化的关注推动了对交通行业温室气体排放量化方法的需求,其中化石燃料的使用是主要排放源。传统的车辆燃油类型确定方法依赖于手动和申报流程,存在不准确性,阻碍了环境政策的有效实施和可靠碳清单的创建。因此,本文提出了一种基于机器学习的自动化识别车辆燃油类型的方法,利用车辆传感器收集的数据和TinyML中实现的随机森林技术。这种方法在实际应用中具有潜力,可以广泛应用于各种车辆,为行业提供精确的碳清单需求提供了一个有希望的解决方案。此外,通过使用OBD-II Edge Freematics ONE+设备进行了案例研究,实现了实时数据收集和直接在设备上执行机器学习模型。研究评估了模型在现实世界场景中的准确性。这种方法在识别燃油类型方面显示出高精确率,强调了TinyML在资源受限的嵌入式设备中分类应用的可行性。研究结果表明,这种方法可以促进交通行业环境管理,帮助制定精确的碳清单和支持有效的减排政策。
引言: 气候变化的关注和减少温室气体排放的需求加剧,不断寻找解决方案以减轻人类活动对环境的影响。交通行业是温室气体排放的主要来源之一,因此准确量化车辆排放对于碳清单的发展和减排政策的实施至关重要。确定车辆使用的燃油类型是一项依赖于手动和申报方法的任务,这些方法可能不准确且容易受到人为错误的影响。缺乏自动化阻碍了有效和实时的分析,使得环境政策的应用和准确碳清单的创建变得复杂。在这种情况下,物联网(IoT)作为一种有前景的解决方案出现,它能够整合传感器和设备以收集实时数据。众所周知,车辆中安装的传感器可以记录诸如燃油消耗、驾驶模式等数据,并将这些信息传输到集中管理系统。这不仅有助于识别排放异常的车辆,还允许进行实时调整以优化能效和减少污染物排放。因此,本文旨在提出一种使用车辆传感器收集的数据并应用机器学习中的随机森林技术来自动识别车辆使用的燃油类型的方法。此外,该方法将在OBD-II Edge Freematics ONE+设备上实现,这是一个允许通过Tiny Machine Learning(TinyML)技术进行数据收集和机器学习模型执行的车辆遥测平台。这涉及到在计算资源有限的设备上,如微控制器和传感器上实现机器学习算法,以实现高效和准确的实时数据收集和分析。
相关工作: 车辆排放的研究在推进碳信用生成和TinyML算法应用的研究中扮演着重要角色。这一趋势得到了科学文献的回顾和现有应用分析的支持,这些贡献直接影响了本研究的构思和发展。文献中提出了在嵌入式系统中创建一个虚拟传感器,基于OBD-II接口收集的车辆传感器数据估计CO2值。虚拟传感器的计算需要质量空气流量(MAF)和歧管绝对压力(MAP)传感器的数据。此外,使用了一个无监督的TinyML算法来从数据流中移除异常实例,提高虚拟传感器的准确性,而不依赖于基于云的服务器。在Freematics ONE+上的初步实施结果证明了该提议的可行性,数据采集频率为1Hz,排放粒度测量为gCO2/km。类似地,文献中介绍了在OBD-II设备Macchina A0上部署多层感知器(MLP)模型,使用Tensorflow Lite框架。该模型作为回归器,旨在估计二氧化碳排放。使用通过排放测量系统从各种车辆类型获得的真实世界数据进行训练、测试和验证。此外,作者还采用了量化技术来降低模型响应精度和内存使用。结果表明,这种技术是有效的,显示了内存使用减少了10到17倍,同时保持了类似的平均绝对百分比误差(MAPE)。从另一个角度来看,文献中使用了三种机器学习算法来估计单缸点燃式发动机的排放。使用的数据包括不同的工作条件和三种不同的燃料:汽油、乙醇和烷烃。使用的模型包括线性回归、决策树和随机森林。这项研究表明,尽管所有三种算法都表现良好,但随机森林比其他两种算法更准确。在这种情况下,文献中存在一个空白,即使用TinyML算法进行实时燃油类型分类,这区分了本研究提出的方法。因此,本研究的目标是在网络边缘嵌入一个TinyML算法,能够实时分类车辆燃油类型,包括汽油和乙醇。
提出的方法: 本文提出了一种自动识别车辆使用的燃油类型的方法,使用车辆传感器收集的数据并应用机器学习中的随机森林技术。文章结构由五个主要部分组成:模型选择、部署、数据偏移、数据选择和数据采集。
- 模型选择:随机森林模型在十种模型中脱颖而出,尽管其初始大小对于微控制器来说过大(750 MB)。
- 部署:为了在资源受限的硬件上实时执行模型,需要进行剪枝以降低模型的复杂性和大小。通过减少n估计器参数到30和最大深度到9,简化了模型,同时力求保持最大的分类效率。最终模型工件在C++格式下的大小为2.52816 MB。使用这个工件进行离线推理,以评估由于剪枝导致的性能损失,测试数据集上的准确率为84%。
- 数据选择:基于TorquePro应用程序和Freematics ONE+之间的数据收集可用性和一致性,选择了传感器,确保不同技术和车辆之间收集的数据是一致和可比的。此外,特定传感器的选择基于可用的测试车辆。只有所有测试车辆中都可用的传感器才被包括在内,以确保数据的统一性。此外,只选择了五个与车辆燃油类型最相关的传感器:RPM(每分钟转数)、提前角、发动机负荷、发动机冷却液温度和短期燃油修正(STFT)—第1组。选择的特征数量是为了避免过载处理模型的微控制器处理能力。
- 数据偏移:为了模型训练,每个选定的传感器上都使用了滑动窗口技术,如图2所示。不是使用每个传感器的单个数据点作为模型的输入,而是定义了一个大小为3的窗口,结果是一个包含15个数据点的输入向量。随着每次新的收集,窗口向右移动,忘记第一个数据点并在末尾添加一个新的。窗口大小是通过测试经验确定的,以获得最佳性能。随后,数据集被构建为包含实现滑动窗口所需的新列。整个数据集包括184,720个样本,按乙醇和汽油两类比例划分。为了确保在训练期间使用未见数据进行模型评估,将数据集分为三个子集:训练(157,000)、验证(9,240)和测试(18,480)。拆分后,使用训练数据的均值和标准差对数据集进行归一化,以防止数据泄露。
案例研究: 案例研究旨在评估使用随机森林算法对OBD-II设备Freematics ONE+进行燃油类型分类的有效性。为了实现这一目标,将讨论以下子部分:准备、仪器、将方法集成到嵌入式系统和评估方法的指标。
- 准备:最初,基于可用性和数据收集的可行性选择了驾驶员及其各自的车辆。每位驾驶员使用Fiat Mobi、Honda Fiat、Hyundai HB20和Honda WR-V等车辆进行典型的城市和高速公路驾驶路线。为确保所有样本可比且准确性分析有意义,采用了平衡采样方法。确定了为任何燃油类型收集的最小样本数量。随后,调整数据集以确保所有收集的数据集具有相同数量的样本。这一程序允许无偏见地评估分类模型的性能,减少与不均匀数据分布相关的偏见。
- 仪器:选择了Freematics ONE+ OBD-II边缘设备,因为它的可访问性、开源性质和可用性。该设备配备了双核心ESP32微控制器和16 MB的闪存,可以独立于智能手机连接进行操作。它能够执行各种任务,如数据收集、边缘处理和将信息传输到中央服务器。该设备包括许多内置功能,包括蓝牙、Wi-Fi、4G连接、GNSS用于地理定位、G力测量和运动检测。特别是,本研究使用了支持12V和24V电源输入并带有集成4G模块的H型号。此外,它可以处理高达32GB的microSD卡的本地数据存储。
- 将方法集成到嵌入式系统:本研究将随机森林模型集成到嵌入式系统的过程非常注重细节和精度。该过程涉及将随机森林模型代码翻译成与选定硬件平台兼容的C++语言,
使用micromlgen2库。这一任务是使用带有PlatformIO扩展的Visual Studio Code(VS Code)完成的,优化了开发和部署工作流程。最初,从项目存储库中获取并适应Freematics ONE+的源代码。随后,在VS Code环境中访问了特定目录(Freematics/firmware v5/telelogger),为有效地将随机森林算法集成到硬件系统中奠定了基础。在固件中实现随机森林模型的关键步骤包括集成必要的头文件和库、初始化RandomForestClassifier类的全局实例,并将这些实例纳入主处理循环。具体来说,main.cpp或等效文件是集成随机森林模型逻辑的主要位置。在这里,模型被配置为处理实时传感器数据采集、分类任务和潜在的数据传输到中央服务器或存储介质。
- 评估指标:本研究中使用的评估指标是模型的准确率,它衡量正确分类样本的比例占总评估样本的比例。这一指标决定了随机森林模型在分类燃油类型方面的有效性。采用的标准是,如果模型的预测与车辆的实际燃油类型匹配,则将样本视为正确分类。否则,样本被视为错误分类。然后,基于正确分类的数量与错误数量评估模型的整体性能,直接衡量模型在区分汽油和乙醇方面的准确性。为确保可重复性并促进协作进步,整个开发过程都是在开源环境中进行的。所有使用的脚本、库和资源都公开访问在我们的GitHub存储库上。这个存储库是一个全面的资源,使研究人员和实践者能够复制、验证和扩展我们的方法和发现。我们鼓励社区探索并为这一领域的进一步进步做出贡献。
-
结果和讨论: 本节旨在讨论第IV节中提出的案例研究的结果,以展示嵌入式TinyML分类模型的可行性和案例研究中实现的准确性。在OBD-II边缘Freematics ONE+设备上的实现代表了TinyML技术在嵌入式设备分类应用中的进步。这项研究验证了这些技术在资源受限环境中的可行性,突出了模型优化以确保实时执行的重要性。通过在Freematics ONE+上集成随机森林,实现了有效的燃油类型分类,为需要实时数据分析和低延迟的应用打开了大门。这种方法不仅最大限度地利用了可用的计算资源,还促进了在移动和远程环境中实施智能解决方案。此外,结果表明,嵌入式算法成功地分类了燃油类型,如图4所示。这些实验中的测试数据是实时收集的,模型被嵌入式并由微控制器处理。
图4显示了每次测试中主要值的百分比。橙色条表示模型主要识别汽油的测试,而蓝色条表示主要使用乙醇的测试。这突出了模型在分类特定类型的燃油方面表现更好和更差的地方。每个条形图中的灰色部分代表了每次测试中错误分类的比例。因此,模型在Fiat Mobi的测试中达到了94.44%的准确率。对于Honda WR-V(Car 1)和Honda WR-V(Car 2),准确率分别为92.78%和89.87%。即使在相同型号的不同车辆(Car 1和Car 2)中,模型在识别燃油类型方面也表现出一致性。然而,其他车辆的结果有所不同。例如,Hyundai HB20的准确率下降到63.52%,Volkswagen Polo的准确率为62.42%。这表明在将模型推广到不同类型的车辆或特定条件时存在挑战。另一个可能的因素是模型在部署前的简化或剪枝。重要的是要强调,由于微控制器的计算能力,这些简化是必要的,可能会略微改变模型的性能,可能导致准确性略有下降。最后,这些结果不仅强调了模型在许多情况下准确识别燃油类型的能力,而且还指出了改进的机会,特别是在数据变异性可能影响整体分类准确性的背景下。
结论: 本文研究了一种使用车辆传感器数据并应用TinyML中的随机森林技术自动识别车辆使用的燃油类型的方法。此外,通过在OBD-II边缘Freematics ONE+设备上的案例研究评估了模型。在像Freematics ONE+这样的设备上部署TinyML展示了其在受限环境中的潜力,特别是在改善交通行业环境管理方面。这些系统提供了准确的燃油使用洞察,帮助政策制定者在碳清单精度和排放合规方面。模型在测试中取得了高精度,特别是与Fiat Mobi和Honda WR-V等车辆,尽管在不同型号之间的性能有所不同,表明需要进一步改进以适应不同的环境。未来的工作包括探索额外的策略来增强模型在不同车辆类型和操作条件下的泛化能力。持续改进数据预处理技术和模型优化可以进一步增强系统在不同汽车场景中的准确性和鲁棒性。
相关文章:

TinyML在OBD-II边缘设备上燃油类型分类的实现与优化
论文标题:TinyML Implementation and Optimization for Fuel Type Classification on OBD-II Edge Device(TinyML在OBD-II边缘设备上燃油类型分类的实现与优化) 作者信息:Miguel Amaral, Morsinaldo Medeiros, Matheus Andrade, …...
vue3 中 defineProps 声明示例
1、直接声明 // 1、直接使用 defineProps(["tableData", "acceptType"]); 2、运行时声明方式不使用TypeScript类型注解,而是使用JavaScript对象,使用 type 来定义props // 2、运行时声明方式不使用TypeScript类型注解,…...
SpringBoot整合MybatisPlus报错Bean不存在:NoSuchBeanDefinitionException
报错信息: Exception in thread “main” org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.feng.mybatisplusdemo.dao.UserMapper’ available 解决办法: 将原来引入的MybatisPlus依赖:…...
异步电机的控制是否还有研究的必要,是不是已经非常成熟了?
随着工业现代化和自动化进程的加快,异步电机作为最为常见的电动机之一,广泛应用于各类机械设备和工业自动化系统中。异步电机因其结构简单、成本低廉、维护方便等优点而备受青睐。 异步电机的基本原理与应用 异步电机,又称感应电机…...
【Android】解决 ADB 中 SELinux 设置与 `Failed transaction (2147483646)` 错误
解决 ADB 中 SELinux 设置与 Failed transaction (2147483646) 错误 在使用 ADB 进行开发和调试时,经常会遇到由于 Android 系统安全策略(SELinux)引起的权限问题,尤其是在执行某些操作时,可能会遇到类似 cmd: Failur…...

企业车辆管理系统(源码+数据库+报告)
一、项目介绍 352.基于SpringBoot的企业车辆管理系统,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块 二、项目技术 编程语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:Vue 后端技术&a…...

SAP RESTful架构和OData协议
一、RESTful架构 RESTful 架构(Representational State Transfer)是一种软件架构风格,专门用于构建基于网络的分布式系统,尤其是在 Web 服务中。它通过利用 HTTP 协议和一组简单的操作(如 GET、POST、PUT、DELETE&…...

centOS定时任务-cron服务
最近在训练模型的过程中,经常会因为内存爆炸而停止模型训练过程,而且因为内存占满停止的训练进程甚至都没有任何的报错提示。 1、需要减少num_worker的数量,降低需要占用内存的数据数量 2、可以通过free -h监控内存的占用情况 3、可以通过lin…...

Python毕业设计选题:基于django+vue的宠物服务管理系统
开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 宠物商品管理 医疗服务管理 美容服务管理 系统…...
css常用属性有哪些
在上篇文章我们知道了利用css选择器来对HTML进行简单装饰,就像做word文档一样,需要对哪一段落修改格式,就需要先选中,css选择器就是这意思。这格式如何修改,怎么放大字体,怎么加粗,怎么修改背景…...

八大设计模式
设计模式在日常软件开发中的重要性 目录 单例模式工厂模式策略模式代理模式观察者模式装饰器模式模板方法模式建造者模式总结 单例模式 单例模式确保一个类只有一个实例,通常用于管理共享资源,如配置、缓存、线程池等。 代码实现:双重检查…...

神经网络基础-初识神经网络
人工神经网络( Artificial Neural Network, 简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型。人脑可以看做是一个生物神经网络,由众多的神经元连接而成。各个神经…...

《计算机视觉:瓶颈之辩与未来之路》
一、计算机视觉的崛起 计算机视觉是使用计算机模仿人类视觉系统的科学,让计算机拥有类似人类提取、处理、理解和分析图像以及图像序列的能力。它是一个多学科交叉的领域,与机器视觉、图像处理、人工智能、机器学习等领域密切相关。 计算机视觉行业可分为…...
Centos gcc 12.3 安装
参考博文1:Centos系统升级gcc_centos6升级gcc-CSDN博客 参考博文2:centos7升级gcc9之代码笔记_centos7 gcc9-CSDN博客 CentOS系统通常自带的软件包管理器(如YUM)不会包含最新版本的GCC,要安装GCC 12.3,你需要使用CentOS的第三方仓库,或者从源代码编译。 如果选择从源…...

B站bilibili视频转文字字幕下载方法
本文将讲述介绍一种使用本地工具如何快速的下载B站的字幕为本地文本文件的方法。 通常获取B站字幕需要在浏览器中安装第三方插件,通过插件获取字幕。随着大模型,生成式AI,ChatGPT的应用,B站也提供了AI小助手对视频的内容进行总结…...

vue CSS 自定义宽高 翻页 剥离 效果
新增需求,客户需要类似PPT的剥离效果用于WEB页面翻页,查找资料后,参考下方的掘金博主的文章,并将HTML修改成vue的页面进行使用。其中宽度、高度改成了变量,样式style中的属性与宽高的关系整理成了公式进行动态计算。 …...

uniapp使用百度地图配置了key,但是显示Map key not configured
搞了我两天的一个问题。 hbuilderx版本:4.36 问题介绍: 我的项目是公司的项目,需要在H5端使用百度地图,使用vue-cli创建的uniapp,就是uni代码在src里的目录结构。就是使用这种方式才会遇到这个问题。 问题原因…...

Leetcode42-环形链表
题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使…...

C语言进阶(2) ---- 指针的进阶
前言:指针的主题,我们在初阶的《指针》章节已经接触过了,我们知道了指针的概念: 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2.指针的大小是固定的4/8个字节(32位平台/64位平台)。 3.指针是…...

使用Python筛选图片
需求:图片识别,一堆人脸照片中,其中有不是人脸的,把模糊的,侧脸的,重复的去掉 使用说明: 安装好所需要的包: 第一步:输入图片路径 第二步:创建图片输出路径…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...