边缘领域的ML
本文用到的Mathematica notebook源码可以在这里下载 为什么写这篇文章 从目前的市场环境看,有很多大型公司都在提倡人工智能的发展,然而绝大部分我们能看到的AI的应用就是智能小车,自动驾驶,图像识别,行为预测,医疗辅助,智能推荐系统,语音识别,图像与语音生成,在这些应用中,很少会与大规模工业领域有交集,原因就在于机器学习运算的成本。 首先像工业领域的机器学习的推演预测,第一个要保证就是数据安全性和实时性,在介绍Coral Dev Board本地机器学习的文章中,我们可以看到本地机器学习的应用范围,在工业范围内的AI应用中,我们可以看出占比很少,像自动驾驶,医疗辅助可以算是在工业领域的初探,大部分的人工智能应用都是停留在一个概念上,很少出现有能应用在工业领域并且具有商业性质的项目,原因就是在安全性和低成本。 试想你开发了一个ML应用,如果要应用到工业领域,比如检测设备故障,预测机器运行的下一个状态,公司盈利与设备故障率及工人流动情况的关系,在部署这些模型时,我们要考虑在工业方面的苛刻要求,比如这个工厂基本上没有覆盖网络,那么你要去部署检测设备故障模型的这一个环节就会遇到问题,是采用本地集群部署,还是部署一个终端,然后终端的数据由人为来进行录入,在采用集群部署时,因为会有成千上万台机器设备,所以部署的节点也会有很大的成本,像部署模型在一台Jetson Nano的设备上,虽然成本已经很低,但是部署成千上万个Jetson Nano,你就要考虑功耗,考虑nano模块的故障率以及模块更换的成本,还需要考虑模块与模块之间的高可用网络成本。那么能否将模型部署到更低廉的设备上,比如像微控制器的单片机,这样可以降低很多成本,并且功耗很低,对于大型公司采购此方案的成功率就会有很大的提升。 接下来的5-10年,或许就是机器学习在工业领域的兴起,TinyML意指在小型的微控制器上运算和推演模型,它可以运行在像我们平时接触的家电设备的微控制器上,可以运行在很小的集成电路里面和无处不在的小型设备上。 ML在工业领域的展望,比如像电影领域,通过小型穿戴设备进行演员的动作捕捉计算,目前购买一套动作捕捉的设备是相当昂贵的,还有电影中故事板的制作,对于独立电影人来说将是福利,通过运行有生成模型的小型设备,独立电影人可以通过所处的环境,来生成三维结构的环境,然后导入模型人物来进行预演,最后生成一张张故事板,提高了整个独立创作的效率,也让演员能够更好的理解现场的氛围和如何更好的表演。当然要让ML去创作出好听的小提琴音乐,那是相当难的,更不用说拉小提琴🎻,因为有灵魂注入到了琴中😄。 TinyML的工作流程 确定目标 收集数据 针对实际场景设计神经网络架构 训练模型 转换和部署模型 排查运行过程中的错误问题 实例 拟合Sin(x)函数,在给定x的情况下预测出Sin(x)的值 Mathematica 原型设计: data = Table[ x -> Sin[x] + RandomVariate[NormalDistribution[0, .15]] , {x, 0, 2 \[Pi], .001}]; ListPlot[List @@@ data, PlotStyle -> Dashed] data = RandomSample[data]; trainData = Take[data, {1, Floor[0.6*Length[data]]}]; validationData = Take[data, {Floor[0.6*Length[data]] + 1, Floor[0.8*Length[data]]}]; testData = Take[data, {Floor[0.8*Length[data]] + 1, Length[data]}]; Total[Length /@ {trainData, validationData, testData}] - Length[data] Length /@ {trainData, validationData, testData} 模型1: ...