0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么机器学习在嵌入式系统中不成功

Wildesbeast 来源:今日头条 作者:闻数起舞 2020-02-12 16:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

换个角度思考,深入研究嵌入式世界以及迄今为止机器学习行业无法解决的问题

Photo by Daniel Wiadro on Unsplash

如今,机器学习达到了顶峰,并最终在各个地方得到了应用。 您可以在机场看到人脸识别系统,并在Facebook中看到个性化广告。

虽然,当我们谈论将ML与嵌入式设备结合时,仍然存在很大差距。

1.我们不了解什么是嵌入式世界

使用ML,我们曾经拥有巨大的计算能力。

AlexNet需要727 MegaFlops和235Mb的内存来处理小的227x227px图像。 例如,Google Nexus S上的ARM Cortex-A8每秒可产生66个MegaFlops。 因此,您必须等待〜11秒才能进行推断。 好慢啊!

· FLOP —浮点运算

查看更多信息:各种CNN的内存消耗和FLOP计数以及ARM内核的浮点性能及其效率的估计。

我在大学里有几门与ML相关的课程。 我们在功课上做了很多很酷的事情。 但是即使在那里我的4GB GTX1050也不足以训练所有模型。

Problem understanding is essential to build the right product

一般的ML工程师很少考虑计算资源。 此外,他/她很少关心内存使用情况。 为什么? 因为价格便宜,甚至您的手机都具有不错的CPU和大量内存。

上次聚会中的照片时,手机上是否仍然缺少内存? 想象一下,您使用的是具有256KB闪存的TrueTouch感应控制器。 是的,256KB。 而且由于现有固件,您无法使用所有这些功能。 因此,大约100KB。 查看您上一次的模型的尺寸。 可能更大。

变得有趣了吗? 让我们继续:)

当您听到"嵌入式设备"时您怎么看? 想象一下图片并牢记在心。

1.它是任何电器,甚至我的微波炉和洗衣机

Photo by Marcos Ramírez on Unsplash

嗯你是对的!

如今,几乎所有的电气设备都是嵌入式设备。 它内部可能具有一个或几个控制器来负责每个确切的功能:触摸感应,发动机状态监控等。

2. Arduino或/和Raspberry PI

Photos by Harrison Broadbent on Unsplash

MAKEBLOCK Arduino MegaPi 编程学习主控板 10050

¥209

购买

恭喜,您再次正确!

它们是用于DIY项目的最受欢迎和使用最广泛的工具包之一。 是的,它们是嵌入式设备。

3. Jetson Nano和类似产品

Photo by NVIDIA

moft 英伟达NVIDIA Jetson Nano TX2嵌入式开发套件nvidia AGX开发板 Jetson Nano【开13%增票】

¥846

购买

再次正确。

这是一个特殊的开发套件" aka mini-computer",专门为在其上运行ML模型而开发。 它非常强大,说实话,超级性感。

但是这里有些遗漏

我有很多朋友正在做很棒的硬件宠物项目。 他们通常在那里使用Arduino或STM32(又名Hardcore

Arduino)。

Smart helmet, Robotic car and ALU

我认识几个对Jetson Nano和类似设备感到兴奋的AI工程师。 他们被认为是嵌入式AI的未来。

Photo by Nvidia

现在。 请考虑"在生产级别使用了多少这种设备?"

答案-小

考虑一下您家中有多少个电气设备。 然后在您的汽车中添加大量的控制器。 您工作中的安全系统。 我可以继续很长的清单。

每个设备都有一个控制器。 通常,它是微型且超级便宜。 它无法与Jetson或Raspberry的资源和功能相提并论。

假设您有一个微控制器。 它的主要任务是处理您的手指触摸屏幕。 它具有ARM Cortex-M0处理器,256KB内存(其中只有80–120可用)。 这是一个实时系统,因此您可以花很少的时间来推断模型,例如100微秒。 您的目标是在那里改善或替换某些算法

祝您好运,欢迎来到"嵌入式AI"世界。

嵌入式世界"由资源有限的1-2美元成本的芯片组成。 这就是在生产水平上使用的东西。

2.纯基础设施

我一直在从事上述项目。 一切都很棒。 我开发了一个可能必须适合该微控制器的小型网络。

Photo by Matty Lynn Barnes on Unsplash

是时候开始将模型从我的电脑转移到设备了!

1.量化。

该处理器无法执行浮点数运算。 即使可以,我们也不会使用它,因为这是一个非常复杂的操作,需要很多时间。

因此,我对权重量化进行了模型化-将值的连续范围转换为离散值的有限范围。

你猜怎么着? PyTorch和TensorflowLite都不完全支持它。 它们不支持所有激活函数(尽管我使用了非常简单的HardTanh)。 PyTorch甚至无法将量化模型保存到文件中。

所以,我不得不手工做。

2.推理代码生成

您想在该控制器上运行模型。 对? 因此,您需要使用C代码进行模型推理。

很难过,但您必须手动完成。 为什么? PyTorch没有推理代码生成的功能。 相比之下,TFLite具有功能,但功能相当有限,并且不支持常见的激活函数。

因此,我再次手动完成。

我在工作中遇到了很多这样的情况。 这不是PyTorch或TF方面的重拳,而是"呼救声"。

*** ML社区的另一面是,正在寻找"嵌入式AI"的专业工具,但还找不到它。 ***

有什么好处吗

我看到大型半导体公司对AI产生了极大的兴趣,它们正在做非常有价值和重要的事情。 它们值得另一篇文章,因此我列出其中一些,以免使本文太长。

CMSIS-NN —用于Arm Cortex-M CPU的高效神经网络内核

产生高效推理代码的编译器,这些推理代码根据您拥有的硬件进行了优化

还有很多其他很酷的东西

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3717

    浏览量

    133162
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136287
  • cnn
    cnn
    +关注

    关注

    3

    文章

    355

    浏览量

    23263
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    分享一个嵌入式开发学习路线

    如果你想要学习嵌入式开发,我建议按照这个学习路线准备: 1. 基础铺垫期(1-2个月) 理解嵌入式系统的“硬件基础”和“编程入门”,能看懂
    发表于 12-04 11:01

    ARM嵌入式这样学

    , UCOS 等等,一个操作系统移植到里面去,跑起来,然后就自己利用操作系统的接口写一些应用软件,就可以直接控制其强大的外设了。当然了,这中间还有另外一种工程师工作,就是嵌入式驱动工
    发表于 12-04 07:48

    嵌入式系统的定义和应用领域

    嵌入式系统,简而言之,就是一种专为特定设备或装置设计的计算机系统。它们通常配备一个嵌入式处理器,其控制程序被存储ROM
    发表于 11-17 06:49

    嵌入式电力仪表配电系统的应用与选型

    现代配电系统,对电力参数的精确测量、电能计量以及设备运行状态的可靠监控,是保障供电安全、实现能效管理的基础。各类嵌入式电力仪表作为关键测量元件,广泛应用于进线柜、出线柜等场景,为
    的头像 发表于 09-26 09:37 470次阅读
    <b class='flag-5'>嵌入式</b>电力仪表<b class='flag-5'>在</b>配电<b class='flag-5'>系统</b><b class='flag-5'>中</b>的应用与选型

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式
    发表于 05-15 09:29

    嵌入式适合自学吗?

    缺乏系统的规划,而学习到一些不相关或不重要的内容。 2)缺乏实践机会:嵌入式开发需要大量的实践,而自学的学习者可能缺乏实际的项目练习和实践机会。这会导致
    发表于 04-27 09:54

    基于RISC-V内核的嵌入式系统机器人关节控制的应用研究

    控制提供了新的选择。本文结合多个基于RISC-V内核的芯片案例,详细探讨了基于RISC-V内核的嵌入式系统机器人关节控制的应用研究,分析
    的头像 发表于 04-13 00:00 1273次阅读

    Python嵌入式系统的应用场景

    你想把你的职业生涯提升到一个新的水平?Python嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言,Python的优势在于其简洁的语法、丰富的
    的头像 发表于 03-19 14:10 1233次阅读

    训练好的ai模型导入cubemx不成功怎么处理?

    训练好的ai模型导入cubemx不成功咋办,试了好几个模型压缩了也不行,ram占用过大,有无解决方案?
    发表于 03-11 07:18

    使用Lattice mVision打造嵌入式视觉系统解决方案

    嵌入式视觉是嵌入式系统机器视觉技术的集合,嵌入式视觉系统硬件集成摄像头模组和处理板,将图像捕获
    的头像 发表于 03-06 16:09 1249次阅读

    【入门必看】从菜鸟到大牛,嵌入式系统完整学习路线!看这篇就够了!

    嵌入式系统是许多现代电子设备和智能系统的核心,掌握嵌入式系统,意味着能够设计和开发更加智能化的产品。本文为所有想进入
    的头像 发表于 02-20 10:53 3248次阅读
    【入门必看】从菜鸟到大牛,<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>完整<b class='flag-5'>学习</b>路线!看这篇就够了!

    嵌入式机器学习的应用特性与软件开发环境

    作者:DigiKey Editor 许多嵌入式系统,必须采用嵌入式机器
    的头像 发表于 01-25 17:05 1249次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>机器</b><b class='flag-5'>学习</b>的应用特性与软件开发环境

    PLD嵌入式系统的应用实例

    随着技术的发展,嵌入式系统各个领域扮演着越来越重要的角色。从简单的家用电器到复杂的工业控制系统嵌入式
    的头像 发表于 01-20 09:42 1380次阅读

    MPU嵌入式系统的应用

    一、MPU的基本功能 微处理器单元(MPU)是嵌入式系统的大脑,负责执行程序指令、处理数据和控制其他硬件设备。MPU的基本功能包括: 指令执行:MPU能够从存储器读取指令,解码这些
    的头像 发表于 01-08 09:26 1552次阅读

    哪些专业适合学习嵌入式开发?

    哪些专业适合学习嵌入式开发? 传统行业不断被取代的当下,对于大学生、从业者而言,选择一个热门主流的职业方向,是未来发展的关键因素之一。 嵌入式作为当下高薪岗位之一,转行、转专业的人群
    发表于 01-03 13:44