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

Paul DeCarlo
326 0 2019-08-21

概览

在本文中,我们将描述使用Microsoft Azure服务和Nvidia Jetson硬件创建智能闭路电视系统的过程。 为实现这一目标,我们将采用一套通常用于家庭安全和财产监控的Foscam IP摄像机。 我们将考虑将我们的摄像头馈送连接到Microsoft Azure中的虚拟机以便将我们的录制内容存储在异地,然后我们将展示如何通过使用YOLOv3的Nvidia Jetson Nano设备与这些馈送进行交互以近乎实时地检测对象 -  Azure IoT边缘模块内部使用使用YOLOv3-tiny与Darknet进行对象检测。 然后,我们将检测结果推送到Azure Time Series Insights中进行分析。

介绍

物联网让我们能够让恒温器和自动喷水灭火系统等日常用品变得更智能,只需给它们提供一条与互联网之间的通信线路。如果你能在物体上安装一个传感器,并利用互联网上的数据,你就能找到改善几乎任何东西的方法!

物联网解决方案的这种趋势正在发展,不再仅仅是智能传感器上的可视化数字和对通过网络发送的消息作出反应。小型设备现在能够在板上执行高密度计算,而无需进行异地处理。这种在没有“物联网”中的“I”的情况下运行的能力通常被称为“边缘”计算,并且通常与人工智能和机器学习工作负载配对,以在物联网设备站点产生智能见解。

Microsoft已经创建了开源Azure IoT Edge项目,以促进物联网解决方案的开发,这些解决方案在互联网连接可能断断续续的“边缘”环境中运行。运行时允许您开发可以从云端更新和部署到您的设备的物联网解决方案,无论是否存在互联网,它们都可以运行。这是通过将工作负载打包为容器化的“模块”来实现的,这些模块可以配置为在支持IoT Edge的设备上运行。运行时当前支持Windows / Linux x64和Linux ARM32 / 64环境。这意味着您可以将几乎任何东西从Microsoft Azure中的大型NVIDIA GPU机器到小型Raspberry Pi设备。

硬件制造商也通过创建设计用于运行计算密集型工作负载的小型设备,为下一波物联网解决方案定位。 Nvidia在其Jetson系列设备产品中生产适用于这些类型物联网解决方案的各种设备,这些设备包含板载图形处理单元(GPU)。其中包括强劲的512核Jetson Xavier,中档256核Jetson TX2和入门级99美元128核Jetson Nano。

在本文中,我们将演示如何使用IoT Edge构建解决方案,以针对Nvidia Jetson Nano设备生成用于监控闭路电视馈送的智能物联网解决方案。系统将允许在云中对录制的视频进行异地存档,并将在摄像机源中检测到的对象的事件流发布到Azure Time Series Insights实例。我们将使用此数据来跟踪系统的执行情况,并提供一些想法以增强和改进整体解决方案。

硬件:

1. 1个 RTSP IP摄像头,如Foscam FI9821P(室内)或FI9828P(室外)


2. 一个Jetson NANO,最好配个散热风扇

软件:

1. Visual Studio Code

2. Azure Subscription (Free Trial available)

(可选)将IP摄像机录制内容发布到Microsoft Azure Linux VM

我们需要做的第一件事是确保我们的相机系统可以正确地保存云中的录音。 我们将以允许我们定期备份录音长达一个月的方式执行此操作,并在必要时为录像提供充足的时间。 如果您不使用支持RTSP的IP摄像机,则可以跳过本节。

我们将从部署Azure Linux VM开始。 从技术上讲,只要你现在如何安装以下软件包,你选择什么发行版并不重要。 我们假设您在示例中使用的是基于Debian的发行版,如Ubuntu。

1. Create and ssh into a new Azure Linux VM instance (点击访问教程

2. 安装vsftpd:

sudo apt-getinstall vsftpd

3. 为本地用户访问和PASV模式配置vsftpd:

sudo nano /etc/vsftpd.conf

确保将以下选项设置为禁用匿名登录,以允许本地用户访问/写入权限:

# Allow anonymous FTP? (Disabled by default).

anonymous_enable=NO

## Uncomment this to allow local users to log in.

local_enable=YES

## Uncomment this to enable any form of FTP write command.

write_enable=YES

接下来,将以下内容添加到/etc/vsftpd.conf的最顶部,确保替换占位符值<>

listen_port=

pasv_enable=YES

pasv_max_port=

pasv_min_port=

pasv_addr_resolve=YES

pasv_address=

listen_port应该是另一个服务未使用的端口号,类似地,不应该使用用于psv_max_port和pasv_min_port的端口范围。 建议对psv_max_port和pasv_min_port使用不超过10个端口的范围。 这将允许您为其他服务保留端口,但将最大ftp连接限制为10,根据您的使用情况进行调整。可以在你的 Virtual Machine的Overview部分找到Azure portal ,获得你的VMDomain.cloudapp.net的完整的DNS。如果您已配置解析为VM的自定义DNS,则也可以在此处使用该值。

配置完成后,重启服务:

sudoservicevsftpd restart

4.允许Azure网络安全组中的FTP服务之间的通信

在Microsoft Azure门户中,为您的VM定位网络安全组,并创建一个新规则,以允许来自前面配置的listen_port的流量。例如,如果您选择端口7001,它将如下所示:

接下来,对psv_max_port和pasv_min_port范围执行相同的操作。例如,如果您选择pasv_min_port = 10050和psv_max_port = 10060

5. 配置摄像头以通过FTP将记录发布到Azure VM

注意:根据您选择的相机,可用选项可能有所不同。

我们将首先登录我们的Foscam相机,选择“设置”=>“网络”=>“FTP设置”

填写适当的值并选择Test,注意在FTP服务器连接中指定了Camera目录。 这是摄像机录像存储的位置。


如果一切配置正确,您应该收到测试成功的通知

6.设置一个cron作业以删除超过8天的视频文件

运行以下命令:

crontab -e

并为该相机添加以下行:

@daily find /home/myuser/Camera/* -typef -mtime +8 -exec rm {} \;

7.在Azure中为Linux VM配置计划备份

导航到VM的概览并选择“backup”,这将为您提供配置VM的计划备份的选项。我喜欢在任何给定的时间保持4个星期的备份,允许我保持一个月左右的视频文件可用来恢复,除了所有存储在服务器上的东西。您的用例可能有所不同,但是这对我很有用,并且允许我晚上睡得很舒服=)


下面提供了一个示例备份策略配置:


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