树莓派可能是嵌入式机器学习入门的最经济的方式,我们在树莓派 4上看到的推理性能可以与某些新的加速器硬件相媲美或更好,但是总体硬件成本却要低得多。
但是,在树莓派或任何边缘平台上训练自定义模型仍然存在问题。这就是为什么Edge Impulse今天发布的公告迈出了一大步,并使边缘机器学习更加容易获得的原因。有了对树莓派的全面支持,现在可以获取数据,在Edge Impulse平台上的云中针对自己的数据进行训练,然后将新训练的模型部署回树莓派。
今天的公告包括新的SDK:适用于Python,Node.js,Go和C ++。这可以将机器学习模型直接集成到自己的应用程序中,仅在树莓派上还支持对象检测。可以使用在您自己的树莓派上拍摄的相机数据来训练自定义对象检测模型,然后部署和使用此自定义模型,而不是依赖于预先训练的库存图像分类模型。
因为香蕉对机器学习研究人员的重要性不可低估。为了进行测试,我们将训练一个非常简单的模型,该模型可以说明香蕉和苹果之间的区别。
入门
如果还没有Edge Impulse帐户,则应在笔记本电脑上打开浏览器,然后创建一个帐户以及一个测试项目,将称其为“对象检测”。
我们将要建立一个图像分类项目,该项目可以分辨出香蕉和苹果之间的区别,但是Edge Impulse还可以让我们构建一个物体检测项目,该项目可以识别图像中的多个物体。
创建项目后,应该会看到以下内容:
我的新对象检测项目在Edge Impulse中打开
现在登录到树莓派,打开“终端”窗口,然后键入
安装本地工具链,然后输入
并登录到自己的Edge Impulse帐户,然后,系统会要求我们选择一个项目,最后选择一个麦克风和摄像头连接到该项目。 现在已经将Razer Kiyo连接到自己的树莓派,所以现在我们将使用它。
如果仍在浏览器中打开项目,则可能会看到一条通知,告知你的树莓派已连接,否则,可以单击左侧菜单中的“设备”以获取连接到该项目的设备的列表,应该会看到树莓派的条目。
取得训练数据
如果在树莓派的“终端”窗口中查看,会看到一个URL,它将带我们进入项目的“数据获取”页面, 另外,也可以单击左侧菜单中的“数据采集”。
继续并选择您自己的树莓派(如果尚未选择),然后选择Camera作为传感器,应该会在右侧看到摄像机的实时缩略图。 如果想跟着走,请放置水果(我从香蕉with开始),在“标签”框中添加文本标签,然后点击“开始采样”按钮。 这将拍摄图像并将其保存到云中,重新放置香蕉并拍摄十张图像, 然后用苹果再做一次。
由于我们正在建立一个极其简单的模型,并且我们将利用转移学习,因此现在可能只有这二十张图像就具有足够的训练数据。 因此,我们开始创建一个模型。
建立模型
单击左侧菜单中的“脉冲设计”。 首先单击“添加输入块”框,然后单击“图像”条目旁边的“添加”按钮。 接下来,单击“添加处理块”框。 然后单击“图像”块旁边的“添加”按钮以添加一个处理块,该处理块将对图像数据进行规范化并减小色深。 然后单击“添加学习块”框,然后选择“转移学习(图像)”块,以获取用于图像分类的预训练模型,在该模型上,我们将执行转移学习以对其进行调整,以进行香蕉banana和苹果识别。应该看到“输出功能”块更新以显示2个输出功能,现在点击“保存冲动”按钮。
接下来,单击“脉冲设计”菜单项下的“图像”子项,切换到“生成功能”选项卡,然后单击绿色的“生成功能”按钮。
最后,点击“冲动设计”菜单项下的“转移学习”子项目,然后点击页面底部绿色的“开始训练”按钮。
测试我们的模型
现在,我们可以针对世界测试我们训练有素的模型, 单击左侧菜单中的“实时分类”条目,然后单击绿色的“开始采样”按钮以从相机拍摄实时图片。
可能想要获取另一个香蕉,仅用于测试目的。
如果要进行多个测试,只需向上滚动并再次单击“开始采样”按钮即可拍摄另一张图像。
部署到自己的树莓派
现在,我们(已经对)模型进行了测试,我们可以将其部署回树莓派。 转到运行将树莓派连接到Edge Impulse的edge-impulse-linux命令的终端窗口,然后按Control-C停止它,之后,我们可以使用edge-impulse-runner命令进行快速评估部署。
这将连接到Edge Impulse云,下载自己的模型,并启动一个应用程序,该应用程序将从相机获取视频流,并寻找香蕉和苹果, 模型推断的结果将在“终端”窗口中逐帧显示。 Runner应用程序启动时,还将看到一个URL:将其复制并粘贴到浏览器中,将实时看到相机的视图以及推断结果。
成功!我们已经获取了训练数据并在云中训练了一个模型,现在我们在树莓派上本地运行该模型。由于我们在本地运行模型,因此不再需要网络访问,无需任何数据即可离开树莓派,与云连接的设备相比,这对于边缘计算而言是一个巨大的隐私优势。
当我们在Edge Impulse的“快速外观”应用程序中运行模型时,我们可以将完全相同的模型部署到自己的应用程序中,因为今天的公告包括新的SDK:适用于Python,Node.js,Go和C ++。这些SDK使我们能够构建独立的应用程序,以不仅从我们的相机和麦克风,而且从加速度计,磁力计或其他可以连接到树莓派的其他传感器收集数据。
Edge Impulse的性能指标很有希望,尽管仍然比我们直接在树莓派 4上使用TensorFlow Lite所看到的要低一些,以使用类似模型进行推理。也就是说,即使在非常相似的型号上也很难比较性能,因为它很大程度上取决于所处的确切情况以及要处理的数据,因此在这里行驶的里程可能相差很大。
但是,新的Edge Impulse公告提供了两个非常重要的内容:从摇篮到坟墓的框架,用于收集数据和训练模型,然后将这些自定义模型部署在边缘以及抽象层。越来越多的人将深度学习饮食软件视为增加软件中抽象(有时称为石化)的总体趋势的一部分。这听起来令人生畏,但是这意味着我们所有人都可以用更少的精力做更多的事情。