用Jetson NANO 创建智能闭路电视(下)

Paul DeCarlo
355 0 2019-08-22

用Jetson NANO 创建智能闭路电视(上)

将目标检测添加到相机提要中

我们之前使用备份策略将摄像机提要设置为记录到Microsoft Azure中,以确保过去的记录可用大约1个月。接下来,我们将使用Nvidia Jetson Nano设备,通过在Azure loT Edge模块中使用带有Darknet的yolov3-Tiny目标检测来增强我们的相机系统。

我们将按照以下说明配置我们的设备:https://github.com/toolboc/intelligentedgehol.github存储库包含关于如何设置和部署YoloModule到Nvidia Jetson Nano设备的完整说明。如果您没有可用的IP摄像头,您仍然可以通过连接一个兼容的USB网络摄像头或使用YouTube视频链接跟踪内容。

如果您使用的是受支持的Foscam摄像机,则需要确保能够连接到它的RTSP流。找到这个值的说明可以在这个论坛帖子中找到。一旦知道了适当的值,就可以在配置YoloModule视频源的步骤中提供它。

说到这里,请继续执行所提供的README @ https://github.com/toolboc/IntelligentEdgeHOL,并在完成这些步骤并验证对象检测在您的相机流上工作之后返回到本文。

一旦你让你的流开始运行,你应该能够开始检测80个受支持的对象,大约每秒10帧,这对于一个100美元的设备来说不算太坏!


将检测到的对象数据推入Azure Time Series Insights

现在我们已经有能力在相机提要中检测对象,让我们将其推入一个服务中,该服务将允许我们轻松地挖掘数据来对结果进行分析。Azure Time Series Insights用于存储、可视化和查询大量时间序列数据,比如物联网设备生成的数据。如果您想在云中存储、管理、查询或可视化时间序列数据,那么时间序列洞察很可能适合您。

这将使我们提取一些基本的见解,这可能使我们构建一些更有趣的东西。例如,想象一下,当邮车实际上停在车道上时,收到一个警报,使用国家公园管理局(National Park Service)提供的摄像机信号来计数野生动物物种,或者能够识别出人们在一个他们不应该在的地方,并随着时间的推移对他们进行计数!

首先转到Azure,并导航到您在上一步中创建的资源组。这个资源组应该包含一个物联网集线器实例。在资源组中添加一个新的Time Series Insights环境,并选择适当的层进行部署。

接下来,将Event Source 配置为指向您在上一步中创建的IoT Hub,并确保为其创建新的IoT Hub使用者组。

实例部署完成后,您可以前往App Insight Portal,在那里可以开始处理检测到的对象数据。


您会注意到我的相机输入在晚上时间内产生的结果为零。 我了解到,当外面没有足够的光时,YOLOv3物体检测就不会检测到任何东西。 此外,检测算法总是认为我女朋友的车是火车。 这可以通过重新训练YOLO模型以确切地检测我们想要的而不是使用它的预训练模型来解决。 即使存在这些问题,也可以提取一些重要数据。

看看这个模型,我可以确切地说出“火车”的来来往往。 同样地,我可以注意到一些事情,例如当一个人被检测到并且可以在Azure中引用我的视频记录以验证在记录的时间内实际上有人在视野中。

例如,在这个视图中,很可能在7月16日下午12:35左右,一个或多个人看到相机

让我们开始吧!

同样,如果我们将查询调整到更大的范围,我们可以看到在过去一个小时内有3辆汽车经过车道。我想这类数据对停车场或城市规划人员会非常有用。


结论

我们已经演示了如何使用Microsoft Azure中的虚拟机来设置闭路电视系统,以便在场外存储录像。然后,我们通过使用相对便宜的Nvidia Jetson Nano设备来分析相机流上的帧以检测源中的对象,并通过在设备上运行特殊的Azure IoT Edge模块将它们发布到Azure IoT Hub,从而增强了该系统。这使我们能够使用GPU加速来以大约每秒10帧的速度执行80个唯一对象的检测。最后,我们将该数据推送到Azure Time Series Insights实例,以对我们的数据执行分析。

可以理解的是,这些内容可能并不特定于您的用例,但我希望它能够帮助创建用于在“边缘”环境中部署的类似物联网解决方案。我们已经确定了对象检测算法的一些问题,但重要的是要注意它总是可以重新训练或用更合适的东西替换。一旦我们拥有能够准确检测我们感兴趣的人工智能服务,我们就表明您可以通过利用Time Series Insights等服务快速深入挖掘收集的数据点来轻松提取洞察力。因此,我们已经解决了许多大的一般性问题,这些问题应该有助于开发更具体的东西。

如果您喜欢这些内容并希望及时了解我的最新项目,您可以在Twitter上关注我@pjdecarlo。

完整代码:https://github.com/toolboc/IntelligentEdgeHOL