在嵌入式设备的资源受限环境中制作机器学习工作可以成为Quagmire。本文将专注于通过具有重要ML组件的假设设备的问题。
机器学习(ml)很难;在嵌入式设备的资源受限环境中使其工作可以很容易地成为Quagmire。根据这种恶劣的现实,任何试图在嵌入式系统中实施ML的人都必须考虑,并且经常重新审视,所以设计方面至关重要受其要求。一点提前规划使项目成功与失败之间的差异。
对于本文,我们的重点是建立具有重要甚至主导,ML组件的商业级应用。We’ll use a theoretical scenario in which you have a device, or better yet an idea for one, which will perform complex analytics, usually in something close to real time, and deliver results in the form of network traffic, user data displays, machine control, or all three. The earlier you are in the design process, the better positioned you’ll be to adjust your hardware and software stack to match the ML requirements. The available tools, especially at the edge, are neither mature, nor general purpose. Also keep in mind that, the more flexible you are, the better your odds of building a viable product.
让我们首先描述假设的设备,然后通过一些与其设计的ML相关问题进行工作。
智能安全摄像头
为我们的设计,让我们看一下网络的安全摄像头。作为一个IOT设备,它持续连接到互联网。我们假设我们的设备将至少有4GB的SDRAM,64位ARM CPU,并运行一个支持Anaconda Python分布,OpenCV,DLIB和TensorFlow的嵌入式Linux。
我们的ML相关目标为此应用程序是:1)录制,识别和标记“有趣的”框架,以及2)警报安全人员对可疑活动。
与大多数本质的项目一样,我们受到各种物理,环境和成本因素的限制。为了充分利用可用数据,我们需要使用ml来检查和分类来自每个图像帧的多个对象。我们将探索的第一个设计策略是使用基于边缘的ML来识别感兴趣的帧并做一些简单的初始分类,以及基于云的服务来处理可能的警报的实际确定。我们应该如何着手?
在云中处理图像?
无论在处理发生的情况下,此应用程序都需要识别视频帧中的各种对象,例如人员,面部,车辆等。每个对象组需要执行的ML模型的(推断),其产生一组界限,标记对象。典型的相机将录制每秒约30帧。如果我们想最大限度地减少相机的成本和复杂性,它不能只将原始数据发送到云提供商?忽略其他考虑因素,每天约为250万张图像。即使在深度折扣下,使用商业ML服务提供商处理此数量的图像将在每天约1000美元,而且为每个识别模型进行计费。显然,我们需要做出其他选择。
通过检查原始输入流来启动。每个原始720p(标准HD 1280×720px)帧使用大约5 MB,因此如果我们在网络上发送30帧/秒,我们需要一个令人难以置信的1.5 Gbps连接(每两个小时左右的TBYTE)。对于全高清和更高,将此乘以四到10倍。我们不会发送原始,未压缩的视频。我们的问题是我们的ML模型只能针对各个图像帧。我们应该在哪里做出权衡?
我们困境的一些线索位于视频的基本性质中,它产生了大量数据,但在大多数情况下,给定帧中的信息很少与前面的信息不同。这就是为什么各种压缩技术工作非常好,而原始数据减少100-1000×是典型的。假设压缩可以将1.5 Gbps流减少到1.5 Mbps附近的东西是合理的,因此我们可以使用云服务进行我们的ML推断,只要我们托管我们自己的机器实例而不是支付ML服务。根据我们的工作量,我们可以期望处理24×7视频,每月50美元到200美元。
是否有任何其他因素可能偏向更多云处理?
请记住,在云中或边缘执行处理的决定不是二进制决定,而是一种选择。万博投注网址设计可以大量受益于甚至有限的边缘计算;在某些情况下,可以在边缘上实现简单的检测(运动/车辆/人/脸),以减少云工作负载,其数量级,实用程序没有损失。
[继续阅读EDN US:我们可以在边缘做大部分工作吗?]
约翰福蒂耶是Base2解决方案的咨询软件工程师。