当前位置: 首页 > news >正文

使用机器学习边缘设备的快速目标检测

论文标题:Fast Object Detection with a Machine Learning Edge Device

中文标题:使用机器学习边缘设备的快速目标检测

作者信息:

  • Richard C. Rodriguez, MSDA Information Systems and Cyber Security Department, The University of Texas at San Antonio, San Antonio, Texas, USA
  • Jonah Elijah P. Bardos, MS Electrical and Computer Engineering Department, The University of Texas at San Antonio, San Antonio, Texas, USA

论文出处:arXiv:2410.04173v1 [cs.RO] 5 Oct 2024

摘要: 这项机器学习研究探讨了一种低成本的边缘设备,该设备与具有计算机视觉功能的嵌入式系统集成,以提高目标检测和分类的推理时间和精度。研究的主要目标是减少推理时间并降低功耗,以支持一个竞技型类人机器人的嵌入式设备,并实现实时目标识别、场景理解、视觉导航、运动规划和机器人的自主导航。本研究比较了中央处理单元(CPU)、图形处理单元(GPU)和张量处理单元(TPU)在推理时间性能上的差异。TPU在推理时间上比GPU减少了25%,与CPU相比则大幅减少了87.5%。本文的许多信息都有助于最终选择谷歌的Coral品牌Edge TPU设备。虽然也考虑了Arduino Nano 33 BLE Sense Tiny ML Kit进行比较,但由于初始的不兼容性和完成研究的时间限制,决定在未来的实验中审查该套件。

引言: 机器学习是人工智能(AI)的一个子集,它使计算机能够从图像中提取特征并学会识别模式。这对于图像质量、照明和其他因素的广泛变化非常重要。AI擅长基于图像定义概率,这使其成为目标检测和识别等任务的理想选择。除了目标检测和识别,计算机视觉还使类人机器人能够导航和与环境互动。AI为机器人提供了感知周围环境和理解对象之间空间关系的能力。这使它们能够检测和跟踪目标,估计深度,并重建3D场景。

CPU、GPU和TPU的比较: CPU是通用处理器,可以用于许多不同的应用,但它们在机器学习任务上的速度不如GPU或TPU快。在这项处理器比较中使用的CPU是第13代Intel Core i9-13900H 2.60 GHz。GPU是专为矩阵乘法设计的专用处理器,这是神经网络中的常见操作。GPU在机器学习任务上的速度比CPU快,但仍然不如TPU快。在这项处理器比较中使用的GPU是NVidia品牌的GEFORCE RTX 4070。TPU是专为神经网络工作负载设计的专用处理器,如用于计算机视觉推理的卷积神经网络(CNN)。TPU是机器学习任务中速度最快的处理器类型。在这项处理器比较中使用的TPU是谷歌Coral品牌的Edge TPU。

假设: 假设1:将张量处理单元(TPU)与嵌入式设备或微处理器(无论是否带有图形处理单元GPU)集成,将显著提高推理时间和目标检测,为嵌入式设备提供低成本和低功耗的选项。 假设2:使用机器学习并配备单目相机的嵌入式设备在目标检测性能上显著提高,成本更低,与立体视觉相机相比。

方法论: A. 卷积神经网络 图2描述了用于图像识别的卷积神经网络(CNN)架构的概述。来自具有三通道RGB输入的彩色相机的图像,在卷积神经网络的卷积主干部分,通过卷积+激活函数(例如,修正线性单元ReLU)和最大池化操作反复执行,直到它们到达分类器,这是架构的头部,是一个完全连接的多层人工神经网络。 B. 训练和部署 使用卷积神经网络进行目标检测是一种强大且多功能的技术,用于识别和定位图像中的对象。使用CNN进行目标检测的一般过程可能包括以下步骤:图像预处理、特征提取、目标分类和边界框回归、后处理。

硬件: A. 实验套件选项 考虑了两种设备进行实验,Arduino Nano 33 BLE Sense ML Kit和谷歌Coral Edge TPU设备。由于软件版本的问题和无头连接的困难,选择了TPU设备作为本研究的主要设备。 B. 谷歌Coral Edge TPU 图3展示了谷歌Coral TPU。谷歌Coral Edge TPU在CPU和GPU之上提供了最佳的推理时间性能。以下是本研究使用的关键硬件组件。

软件: 以下是支持本研究中使用的硬件的软件产品列表。

数据源: 作为该项目数据源的计算机视觉数据集来自RoboFlow.com,包含4000张图像。

结果: A. 类型1和类型2错误的含义 类型1错误是假阳性,类型2错误是假阴性。这对于利益相关者来说很重要,他们需要了解使用基于ML的决策和设计的错误类型,以避免最严重的后果。 B. 精确度和召回率 精确度是检测结果为真阳性的比率。换句话说,它是实际正确的阳性识别的比例。例如,如果精确度为0.8,则80%的时间你识别某物为阳性,它实际上是阳性的。召回率是检测结果正确的比率。换句话说,它是实际阳性被正确识别的比例。例如,如果召回率为0.9,则90%的时间有某物为阳性,你将正确识别它。 C. 训练和验证 程序被设置为运行50个周期,直到训练过程达到可接受的准确度水平。训练和测试数据的80/20分割确保神经网络不会意外地在稍后用于评估的数据上进行训练。我们利用迁移学习或使用预训练的网络并重新利用它。TensorFlow被用来帮助提高准确度并最小化框损失、分类损失(CLS)和双重焦点损失(DFL)。 D. 推理时间处理器性能 表II显示了每个处理器的推理时间性能结果。

结论和未来工作: 我们的研究得出结论,拥有强大的CPU对于目标检测并没有显著优势。将机器学习推理边缘设备(Edge TPU)与嵌入式设备集成,证明了在低功耗和最低成本下运行的可行选项。此外,使用单目视觉相机与立体视觉相比没有显著差异。未来的工作将是将Coral Edge TPU设备与竞技型类人机器人的主板处理器集成,以检测足球。

GitHub代码链接: Richard Rodriguez和Jonah Elijah Bardos的该项目和编程代码的GitHub仓库链接如下。 https://github.com/ThinkFastAI/AI Practicum

相关文章:

使用机器学习边缘设备的快速目标检测

论文标题:Fast Object Detection with a Machine Learning Edge Device 中文标题:使用机器学习边缘设备的快速目标检测 作者信息: Richard C. Rodriguez, MSDA Information Systems and Cyber Security Department, The University of Tex…...

Anthropic的CEO达里奥·阿莫迪(Dario Amodei)文章传达他对AI未来的乐观展望

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

Human-M3 多模态姿态估计数据集-初步解读

文章概述(个人总结):该论文重点提出一个用于人体姿态估计的RGB+点云数据集,针对该多模态数据集,作者阐述了数据集的收集、数据标注以及该数据集的特点。并提出了一个简单的多模态3D人体姿态估计算法,对比其他模型,该方法性能较好。最后总结了该数据集和该方法的限制。 …...

python爬虫 - 进阶正则表达式

🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、匹配中文 (一)匹配单个中文字符 (二…...

静态路由和nqa 联动实验

nqa 配置 1 test 断端口 很明显是切换到备机上了...

golang用any类型去接收前端传的数字类型的值,类型断言为float64

在 Go 中,使用 any 类型接收前端传来的数字时,通常会发现其被类型断言为 float64。这是因为在 JSON 解码的过程中,Go 的 encoding/json 包会将数字解析为 float64。但如果你在结构体中指明字段为 int 类型,框架会根据字段类型进行…...

5、Spring Boot 3.x 集成 RabbitMQ

一、前言 本篇主要是围绕着 Spring Boot 3.x 与 RabbitMQ 的集成,这边文章比较简单,RabbitMQ 的集成没有太大的变化,这篇文章主要是为了后续的 RabbitMQ 的动态配置做铺垫。 1、Docker 安装 RabbitMQ 2、Spring Boot 3.x 集成 RabbitMQ二、D…...

ENSP搭建基础网络拓扑图

一、ENSP的基本操作 1、配置网关 进入系统视图与退出 <Huawei>system-view [Huawei]quit 进入G0/0/0接口后配置ip [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24查询所有接口的ip配置 [R1]display ip interface brief…...

尚硅谷rabbitmq 2024 消息可靠性答疑二 第22节

returnedMessage()只有失败才调用&#xff0c;confirm()成功失败了都会调用&#xff0c;为什么&#xff1f; 在RabbitMQ中&#xff0c;消息的确认和返回机制是为了确保消息的可靠传递和处理。confirm和returnedMessage方法的调用时机和目的不同&#xff0c;因此它们的行为也有…...

在 Ubuntu 上安装 Whisper 支撑环境(ffmpeg、PyTorch)的教程(2024亲测可用)

在 Ubuntu 上安装 Whisper 的教程 以下是如何在 Ubuntu 系统上安装 Whisper 以进行视频转录的详细步骤。 步骤 1&#xff1a;更新系统 首先更新你的 Ubuntu 系统&#xff0c;确保安装最新的软件包&#xff1a; sudo apt update && sudo apt upgrade -y步骤 2&#…...

vue+echarts实现雷达图及刻度标注

文章目录 前言代码实现实现效果总结 前言 最近项目有做数据可视化 大屏 不免再次使用些echarts应用 记录下其中echarts雷达图的实现 代码实现 先上代码 <template><div class"container"><div ref"chart" style"width: 500px; heig…...

【进阶OpenCV】 (9)--摄像头操作--->答题卡识别改分项目

文章目录 项目&#xff1a;答题卡识别改分1. 图片预处理2. 描绘轮廓3. 轮廓近似4. 透视变换5. 阈值处理6. 找每一个圆圈轮廓7. 将每一个圆圈轮廓排序8. 找寻所填答案&#xff0c;比对正确答案8.1 思路8.2 图解8.3 代码体现 9. 计算正确率 总结 项目&#xff1a;答题卡识别改分 …...

实时从TDengine数据库采集数据到Kafka Topic

实时从TDengine数据库采集数据到Kafka Topic 一、认识TDengine二、TDengine Kafka Connector三、什么是 Kafka Connect&#xff1f;四、前置条件五、安装 TDengine Connector 插件六、启动 Kafka七、验证 kafka Connect 是否启动成功八、TDengine Source Connector 的使用九、添…...

Linux -- 初识动静态库

目录 为什么要有库&#xff1f; 静态库 什么是静态库&#xff1f; 特点 优点 缺点 动态库 什么是动态库&#xff1f; 优点 缺点 编译器会选择哪个库&#xff1f; 为什么要有库&#xff1f; 库的存在是为了提高软件开发的效率、促进代码复用以及简化维护工作。通过使用…...

vite 打包前请求接口和打包后的不一致

在使用 Vite 进行项目打包时&#xff0c;如果发现打包前请求接口和打包后的行为不一致&#xff0c;这可能是由于多种原因导致的。以下是一些可能的原因和相应的解决方案&#xff1a; 1. 代理配置问题 开发环境&#xff1a;在开发环境中&#xff0c;Vite 通常使用 vite.config…...

fairseq 安装包python

背景&#xff1a; Collecting fairseq Using cached https://pypi.tuna.tsinghua.edu.cn/packages/d7/0f/b7043b451a97eb9b4cfb1b1e23e567b947d9d7bca542403228bd53b435fe/fairseq-0.12.1.tar.gz (9.6 MB) Installing build dependencies ... done Getting requirements…...

使用Mockaroo生成测试数据

使用Mockaroo生成测试数据 最近在学习【Spring Boot & React】Spring Boot和React教程视频的P51.Generating 1000 students一课中&#xff0c;看到了https://www.mockaroo.com/网站可以用来模拟生成测试数据&#xff0c;觉得还不错&#xff0c;特此记录一下。感觉每次看老…...

使用频率最高的 opencv 基础绘图操作 - python 实现

以下是 opencv-python 基本操作绘制示例&#xff0c;绘制&#xff1a; 1&#xff09;圆&#xff0c;2&#xff09;矩形&#xff0c;3&#xff09;线段&#xff0c;4&#xff09;文本。 安装 opencv-python pip install opencv-python 在图上绘制圆的操作&#xff0c;示例如…...

Python 在Excel中添加数据条

在Excel中添加数据条是一种数据可视化技巧&#xff0c;它通过条形图的形式在单元格内直观展示数值的大小&#xff0c;尤其适合比较同一列或行中各个单元格的数值。这种表示方式可以让大量的数字信息一目了然。本文将介绍如何使用Python在Excel中的指定单元格区域添加数据条。 …...

Unity中搜索不到XR Interaction Toolkit包解决方法

问题&#xff1a; 针对Unity版本2020.3在中PackageManager可能搜素不到XR Interaction Toolkit包 在Package Manager中未显示XR Interaction Toolkit包 解决方法&#xff1a; Package manager左上角&#xff0c;点加号&#xff0c;选择 Add package from git URL..&#xff0c;…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...