在本文中,我们将描述使用 Microsoft Azure 服务和 Nvidia Jetson 硬件创建智能闭路电视系统的过程。我们将使用这些数据来跟踪系统的执行情况,并提供一些想法来增强和改进整体解决方案。
我们需要做的第一件事是确保我们的摄像头系统可以将记录正确保存在云端。我们将以允许我们定期备份长达一个月的记录的方式来执行此操作,从而在必要时为恢复镜头留出充足的时间。如果您使用的不是支持 RTSP 的 IP 摄像机,则可以跳过此部分。
我们将从部署 Azure Linux VM 开始。从技术上讲,您选择什么发行版并不重要,只要您现在如何安装以下软件包即可。我们假设您使用的是基于 Debian 的发行版,例如示例中的 Ubuntu。
1.) 创建并通过 ssh 连接到一个新的 Azure Linux VM 实例
2.) 安装 vsftpd:
sudo apt-get install 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= port here>
pasv_enable=YES
pasv_max_port= port number here>
pasv_min_port= port number here>
pasv_addr_resolve=YES
pasv_address=
listen_port 应该是一个没有被其他服务使用的端口号,类似地,用于 psv_max_port 和 pasv_min_port 的端口范围不应该被使用。建议为 psv_max_port 和 pasv_min_port 使用不超过 10 个端口的范围。这将允许您为其他服务保留端口,但会将您的最大 ftp 连接数限制为 10,请根据您的用例进行调整。
您的VMDomain.cloudapp.net的完整 DNS可以在 Azure 门户中虚拟机的概述部分获得。如果您已配置解析到您的 VM 的自定义 DNS,您也可以在此处使用该值。
配置完成后,重启服务:
sudo service vsftpd 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 设置”
填写适当的值并选择测试,注意在FTP服务器连接中指定Camera目录。这是存储摄像机记录的位置。
。
运行以下命令:
crontab -e
并为有问题的相机添加以下行:
@daily find /home/myuser/Camera/* -type f -mtime +8 -exec rm {} \;
7.) 在 Azure 中为 Linux VM 配置计划备份
导航到您的 VM 的概述并选择“备份”,这将为您提供用于配置 VM 的计划备份的选项。您的用例可能会有所不同,但这对我来说非常有用,让我晚上睡得很舒服 =)
下面提供了一个示例备份策略配置:
我们之前使用备份策略将我们的摄像机源设置为记录到 Microsoft Azure 中,以确保过去的记录可以使用大约 1 个月。
如果您使用的是受支持的 Foscam 相机,您需要确保能够连接到它的 RTSP 流。
话虽如此,请继续阅读 @ https://github.com/toolboc/IntelligentEdgeHOL提供的自述文件,并在完成这些步骤并验证对象检测正在摄像头流上运行后返回本文。
启动并运行流后,您应该能够开始以每秒 10 帧左右的速度检测80 个受支持的对象,这对于 100 美元的设备来说还不错!
现在我们有能力在我们的摄像头源中检测对象,让我们将它推送到一个服务中,这将使我们能够轻松地挖掘数据以对我们的结果进行分析。Azure 时序见解旨在存储、可视化和查询大量时序数据,例如 IoT 设备生成的数据。如果您想在云中存储、管理、查询或可视化时间序列数据,Time Series Insights 可能适合您。
这将使我们能够提取一些基本的见解,这些见解可能使我们能够构建更有趣的东西。例如,想象一下,当邮车实际停在车道上时收到警报,使用国家公园管理局的摄像头输入来计算野生动物的种类,或者能够分辨出人们在他们不应该在的地方并随着时间的推移对他们进行计数!
首先转到 Azure 并导航到您在上一步中创建的资源组。此资源组应包含一个 IoT 中心实例。将新的时序见解环境添加到资源组中,并选择适当的层进行部署。
接下来,将事件源配置为指向您在上一步中创建的 IoT 中心,并确保为其创建一个新的 IoT 中心使用者组。
实例部署完成后,您可以转到时间序列见解门户,您可以在其中开始处理检测到的对象数据。
您会注意到我的相机提要在晚上产生了零结果。
例如,在这个视图中,一个或多个人似乎很可能在 7 月 16 日中午 12:35 左右出现在摄像机的视野中
让我们卷磁带吧!
同样,如果我们将查询调整到更宽一点的范围,我们可以看到过去一小时内车道上似乎有 3 辆车经过。我想这种类型的数据对停车场或城市规划者可能非常有用。
我们已经演示了如何使用Microsoft Azure 中的虚拟机来设置闭路电视系统,以便在异地存储记录。然后,我们通过使用相对便宜的Nvidia Jetson Nano设备分析相机流上的帧来检测提要中的对象并通过在设备上运行特殊的Azure IoT Edge模块将它们发布到Azure IoT Hub来增强该系统。这使我们能够使用 GPU 加速以每秒大约 10 帧的速度执行对 80 个独特对象的检测。最后,我们将该数据推送到Azure Time Series Insights实例中以对我们的数据执行分析。
可以理解,此内容可能并非特定于您的用例,但我希望它有助于创建旨在部署在“边缘”环境中的类似物联网解决方案。我们已经确定了对象检测算法的一些问题,但重要的是要注意它总是可以重新训练或用更合适的东西替换。一旦我们拥有能够准确检测我们感兴趣的内容的 AI 服务,我们已经表明,您可以通过利用时间序列见解等服务快速深入了解收集的数据点,从而非常轻松地提取见解。因此,我们已经解决了很多大的一般性问题,这些问题应该有助于开发更具体的东西。
如果你喜欢这个内容并想了解我最新项目的最新信息,你可以在 Twitter 上关注我@pjdecarlo。
我总是有兴趣了解其他人如何解释这些内容以供自己使用。如果您有任何很棒的想法来增强此项目或受此内容启发的您自己的想法,请在评论中分享。
下次见,祝黑客愉快!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !