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的高效神经网络内核

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

还有很多其他很酷的东西

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

    关注

    40

    文章

    3427

    浏览量

    128215
  • 机器学习
    +关注

    关注

    66

    文章

    8116

    浏览量

    130550
  • cnn
    cnn
    +关注

    关注

    3

    文章

    327

    浏览量

    21296
收藏 人收藏

    评论

    相关推荐

    STM32中断OSFlagPost不成功是为什么?

    STM32中断OSFlagPost不成功,是为什么?
    发表于 04-23 07:44

    嵌入式热门发展方向有哪些?

    嵌入式人工智能可以运用机器学习技术对图像、视频进行高精度解析,从而实现图像识别、视频剪辑、视频智能关联应用等。传感器网络系统
    发表于 04-11 14:17

    iarOptimizations设置为None或Low时编译不成功怎么解决?

    IAR仿真时发现某个变量突然会变化,想逐步看看哪里问题 于是把Optimizations设置为None或Low 结果编译不成功,信息为以下 Error[Li005]: no definition
    发表于 03-25 08:30

    ST485BDR-30度下串口通信不成功的原因?

    测试830pcs,反馈-30度下串口通信不成功
    发表于 03-19 06:03

    嵌入式系统发展前景?

    应用领域。随着汽车电子化和智能化程度的不断提高,嵌入式系统将在汽车控制、安全系统、自动驾驶等方面发挥更为重要的作用。 工智能和机器学习技术的
    发表于 02-22 14:09

    嵌入式学习步骤

    开发板上测试固件以及实际设备上进行测试。 嵌入式系统的多样化发展,它将更为广泛地应用于各个领域,实现智能化、网络化、自动化的目标。同时,随着人工智能和机器
    发表于 02-02 15:24

    GD32F303想控制PA13~15、PB3和PB4不成功

    有没有小伙伴遇到这种情况:在使用GD32F303的时候,想要将PA13~15以及PB3和PB4作为IO口来使用,却怎么也不成功呢?下面小编就来告诉大家原因。
    的头像 发表于 02-01 09:49 801次阅读
    GD32F303想控制PA13~15、PB3和PB4<b class='flag-5'>不成功</b>?

    嵌入式开发学习的十三法则分享

    嵌入式开发学习是一个不断积累和总结的过程,来自一个嵌入式开发高级工程师为我们总结的关于嵌入式开发学习的十三法则,大家不妨参考一下: 一、
    发表于 12-21 06:32

    navicat导入SQL文件不成功

    Navicat是一款功能强大的数据库管理工具,可以帮助用户轻松管理和操作数据库。然而,有时用户在导入SQL文件时可能会遇到问题,导致导入不成功。本文将详细介绍导入SQL文件不成功的原因和解
    的头像 发表于 11-21 11:01 3226次阅读

    STC8的USB下载驱动WIN10上安装不成功怎么解决?

    如题:STC8的USB下载驱动WIN10上安装不成功,非CH340/CH341的驱动,而是指的STC8单片机的USB直接下载功能的驱动。WIN系统下可以正常安装,不知道是不是驱动不支持WIN10……
    发表于 11-01 07:52

    ST485BDR-30度下串口通信不成功的原因?怎么解决?

    测试830pcs,反馈-30度下串口通信不成功
    发表于 08-07 06:35

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

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

    HSUSBD_Mass_Storage_SD枚举不成功的原因?

    HSUSBD_Mass_Storage_SD 例程核心频率为50MHz我的M483板子上运行正常,TF拷贝速度大约4.5MB/s. 当我将HCLK修改为192Mhz之后,枚举不成功。这个可能是什么造成的?
    发表于 06-27 07:13

    嵌入式学习路线你知道吗?

    的核心技术。 6完成综合实训项目 嵌入式技术关键在于理论和实践的结合,要能够学以致用,完成了以上的所有阶段的知识点学习后,到底有没有学会?会不会用?能不能应用所学知识来解决实际开发的问题?这些问题都需要通过完成综合的
    发表于 06-14 16:00

    什么人适合学习嵌入式开发?

    操作系统和应用软件的开发。嵌入式设备的增值很大程度上取决于嵌入式软件,这一领域占了嵌入式系统的最主要的工作部分,因为很多公司都知道,
    发表于 06-07 15:55