Press "Enter" to skip to content

如何通过Luxonis深度相机将机器学习用于家庭自动化-UxTech#1

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

大多数家庭自动化系统都基于二元传感器,如在线状态、时间、光线传感器等。对于每个要检测的新活动,您需要安装一个新的传感器(例如Withing睡眠)来检测人们的睡眠情况。这使得它的安装和维护变得非常困难。

 

作为一名Ux工程师,我总是想象新的用户体验。所以我想尝试一种基于一个摄像头、计算机视觉、机器学习和活动识别的更具伸缩性的方法。

 

为了使设置有效,它必须消耗比它应该控制的灯更少的电力。因此,机器学习硬件应该具有较低的能耗。然后我决定试一试Luxonis的产品,它们也非常强大和简单。

 

如果您是机器学习的初学者,本文可能是一个很好的介绍。或者您已经了解了机器学习,本文可能有助于您更多地了解DepthAI和Myriad架构,因为它提出了一种与OpenCV非常不同的方法。

 

本文不会详细介绍代码,但您仍然可以在此处找到所有代码:https://github.com/interaction-dynamics/smart-home-with-luxonis https://github.com/interaction-dynamics/smart-home-with-luxonis

 

 

根据我的日常生活,我选择了一个复杂的活动:一个人坐在沙发上。使用基本传感器检测这一活动需要在沙发上安装压力传感器。设置它将是一场噩梦。

 

此外,正如您在最后将看到的,我的设备将允许同时检测多个活动。

 

 

我喜欢我的树莓圆周率作为原型平台。但是我的用例需要的计算能力远远超过我的Rasberry PI 4能力。所以我选择了Luxonis DepthAI设备(LUX-D)。该装置内嵌一个4K摄像头、两个720P摄像头进行立体深度采集,以及一个基于Myriad体系结构的计算芯片。它足够强大,足以计算机器学习算法,让覆盆子掌管睡觉“,也就是几乎没有什幺能像IP上的录制或流媒体一样。 Luxonis DepthAI device

设置

 

我对此项目的设置包括:

一台Luxonis LUX-D摄像机,捕获视频、深度,并运行使用Deep thAI库指定的机器学习算法
运行python代码的raspberry 4,初始化Deep thAI并流式传输视频(使用MJPEG格式)
一台将结果可视化的计算机(一旦将树莓插入家庭自动化系统,就应该在现实生活中将其移除)

 

算法

 

“一个人坐在沙发上”的活动可以分成几个部分。而且每一块都需要特定的算法。

例如,为了检测人和沙发等物体,我们需要一种物体检测算法。然后,为了检测人是否坐着,需要一个姿势识别算法。最后,我们必须确保人离沙发很近,以确认他正坐在沙发上。仅基于2D图像的位置是不准确的。这就是使用深度捕获的距离估计算法有用的地方。

 

此外,我使用的是python,因此需要算法的python实现。

 

目标检测

 

在机器学习领域,有三种着名的算法可以检测对象:

MobileNets:更快,但不太准确
YOLO:慢一点,准确一点
RCNN(和更快的RCNN):更慢但更准确

在我的例子中,正如你将看到的那样,MobileNets已经足够了,而且它已经在相机LUX-D上实现了,所以让我们来看看吧! implemented

使用计算机视觉可以非常快速地升级系统,以添加要识别的新活动。在当前的用例中,我决定使用过滤来检测要检测的对象,但您可以使用其他神经网络模型来识别其他类型的家具。或者,您也可以建议用户指向要固定的位置。

 

姿势识别

 

经过快速研究,有两种算法非常有名:

OpenPose
PifPaf

起初,我选择OpenPose作为简单的python API,但最后我使用了一个受OpenPose启发但基于MobileNet的自定义实现,因为它也是为Camera LUX-D实现的。它也真的很快。 custom implementation

距离估计

 

这是我选择深度传感器相机的主要原因。还有其他算法可以估计距离,但是深度传感器可以带来更高的精确度。Luxonis提供了自己的实现。您只需要在图像上提供感兴趣的区域,算法将返回3D笛卡尔位置。起始点是随机的,但在我的用例中不是问题,因为我只对对象之间的距离感兴趣。 implementation

结果

 

这段视频不言而喻;)

 

它的真正工作原理:深度潜水

 

到目前为止,我给了你我使用的算法,但我没有解释如何为相机LUX-D编写代码,以及如何在这幺小的设备上运行所有这些算法。

 

无数X

 

首先,相机LUX-D计算芯片基于英特尔Myriad X架构。使用该架构的着名产品是英特尔的神经计算棒。 Intel Myriad X architecture

该架构允许将计算转移到插入USB的专用设备上,以保持您的计算机空闲。Myriad X芯片是为运行机器学习算法而设计的,因此效率非常高。

 

相比之下,MobileNet算法在相机LUX-D上的运行速度是2.6 GHz 6核英特尔酷睿i7和集成到我的MacBook pro中的32 GB 2666 MHz DDR 4内存上的两倍。

 

很好知道:在Myriad X上运行机器学习算法需要将它们转换为Openvino格式。 Openvino

 

部署

 

但是,来自Luxonis的好心人有一个更好的主意:他们创建了自己的python API来控制Myriad X芯片和摄像头:DepthAI。这个想法真的很有说服力。从硬件的角度来看,摄像机离计算芯片很近,所以为什幺不直接将信息发送到芯片,而不是将图像发送到主机。它将减少输入/输出(I/O)。 depthAI

 

开发人员指定具有输入(摄像机流)、节点(机器学习算法)和输出(主机上的端点)的管道。

例如,我选择的算法和模型需要不同的图像块大小,所以我定义了一个节点来调整对象检测神经网络的图像大小。一切都直接在LUX-D相机的Myriad芯片上运行。有了这种体系结构,主机不需要繁重的硬件,因为它不需要管理大量的数据,也不需要大量的I/O。™不需要繁重的硬件,因为它不需要管理大量的数据,也不需要大量的I/O。

 

稳定性和鲁棒性

 

您不希望由于算法错误而意外打开灯。因此,尽管计算机视觉算法存在不一致的错误,但您的家庭自动化系统应该非常健壮。

 

首先,创建了一个校准步骤来检测沙发。从而由用户验证位置。它避免了来自MobileNet的错误。它还限制了遮挡,因此提高了位置的准确性,特别是深度。

 

为了提高其他算法的鲁棒性,实现了一个队列系统。估计的位置必须足够接近从最后5帧中检测到的位置,才能被认为是有效的。它可能会增加大型移动的延迟,但它确实稳定了结果,特别是对于深度传感器测量。

 

视频流

 

为了控制标定步骤,并通过Flask Web服务器实时检查结果,提出了一种基于MPEG格式的视频流系统。

反馈

 

多价

 

在用Lux-D相机进行了几个月的测试和原型制作后,我对这款设备的多价性非常满意。它重量轻、体积小,集成了高质量图像、深度传感器、Myriad X芯片、H264编码器、空间位置计算器等多种功能,使得原型制作速度非常快。

 

电源

 

我担心计算能力不够或不稳定,但即使在芯片上并行运行了3个神经网络后,我仍然有2FPS,这对于许多家庭自动化用例来说是远远不够的。对于运行在5V上的小型设备来说,这是非常值得赞赏的。

 

文档

 

Deep thAI文档是新的,但是仍然非常友好,并且有丰富的示例。它非常容易启动,并且API非常简单。你还有很多来自社区的例子可以使用已经编译好的模型,就像我在“人类姿势”中使用的那样。

 

模块化

 

我从LUX-D相机开始,这是Luxonis的一体机。但也可以基于模块来构建自己的设备。

 

我的下一步是尝试带有ESP-32的版本,让我的相机更具自主性。

 

结论

 

总之,Luxonis的LUX-D相机不会取代NVIDIA GeForce RTX 3080来运行机器学习算法。但它是一种非常多价且很有前途的设备,可以用来制作一些用例的原型,比如家庭自动化系统。生态系统也非常舒适,您不会浪费时间去尝试让它工作。

 

在Interaction Dynamics,我们将使用该设备来研究、设计和使用最先进的技术构建身临其境的用户体验。 Interaction Dynamics

 

你喜欢这篇文章吗?记得要拍手叫FIANIŸ˜œ!

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/27/%e5%a6%82%e4%bd%95%e9%80%9a%e8%bf%87luxonis%e6%b7%b1%e5%ba%a6%e7%9b%b8%e6%9c%ba%e5%b0%86%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0%e7%94%a8%e4%ba%8e%e5%ae%b6%e5%ba%ad%e8%87%aa%e5%8a%a8%e5%8c%96-uxtech1-2/

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注