1

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

 3 years ago
source link: 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/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

fendouai • 2021年6月27日 am5:13 • Medium

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

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

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

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

本文不会详细介绍代码,但您仍然可以在此处找到所有代码:https://github.com/interaction-dynamics/smart-home-with-luxonishttps://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编写代码,以及如何在这么小的设备上运行所有这些算法。

首先,相机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/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK