用Jetson NANO规划一个统计访客数量的系统

国外有家公司的工程师用Jetson NANO做了一个统计访客的系统,下面是他对这个项目的介绍。

我们的想法是对视频流进行实时分析,如果满足一定的条件,就对客户进行计数。我们在几天内做了一个柜台,并使用人工智能算法计算路过的游客和那些停下来的人。在下面的文章中,我将解释我们是如何做到这一点的,以及它的用途。

为什么公司要考虑客户?实际场景是什么?

可以在许多实际场景中应用这种方法。你有没有想过有多少人对你的交易会展位或商店展览感兴趣,又有多少人只是路过?你想知道路过的人对什么感兴趣吗?通过实时检测、跟踪和统计那些至少在给定时间内待在摄像机前的人,这是可能的。基于这样的分析,可以指定哪些展览对于特定的人群来说是最有趣的,哪些展台/靴子更有吸引力,或者哪些内容更能吸引人们的注意力。这些信息将使您改善展位/展览的接待,并调整对潜在客户的报价。可能性是无限的。

如何使用人工智能跟踪目标?

英伟达Jetson Nano -它是什么?

Nvidia Jetson Nano开发工具包是一款功能强大的嵌入式应用AI计算设备。它包括一个集成的128核Maxwell GPU,四核ARM A57 64位CPU, 4GB LPDDR4内存,以及对MIPI CSI-2和PCIe Gen2高速I/O的支持。

这款袖珍电脑非常省电(5-10W的功耗),但它提供了并行运行多个现代人工智能模型的高性能计算能力。它具有472 GFLOPS的计算性能。Jetson家族就是被设计成一个“AI on The edge”的平台——一种人工智能算法在设备上本地处理的解决方案。

Jetson Nano是由最新发布的JetPack 4.2 SDK支持的,该软件包括:

1.使用Nvidia驱动程序完成桌面Linux环境(Ubuntu 18.04);

2.库和api,例如:

-CUDA工具包;

-cuDNN - CUDA深度神经网络库;

-TensorRT-用于图像分类、分割和目标检测神经网络的深度学习推理运行时;

- VisionWorks -计算机视觉和图像处理软件开发包;

3.多媒体API;

4.开发工具- Nsight Eclipse Edition,调试和分析工具;

5.文档和示例代码。

那么其他流行的机器学习库和框架,如PyTorch、TensorFlow、Keras、Caffe或OpenCV,又如何呢?它们不是默认提供的,但是可以轻松安装!而且它们完全兼容发布的开发板。

Jetson Nano非常适合作为Edge AI设备,它允许用户在Edge上执行机器学习/深度学习。与体积小、内存容量大、选项多和灵活性相比,Nvidia的开发工具包具有可靠的计算机性能,这使其成为一种具有无限可能性的设备。

为什么要用NVIDIA DIGITS ?

英伟达通过提供一套深度学习工具来分享他们多年来积累的经验。其中之一是DIGITS (Deep Learning GPU Training System™),它支持多种任务:

-管理数据集;

-设计和训练高精度的深度神经网络用于图像分类、分割、目标检测等任务;

-监测模型的性能;

-验证和可视化结果;

-为部署选择最佳模型。

深度学习GPU培训系统是完全互动的-一切都可以通过一个直观的基于浏览器的界面。结合英伟达DIGITS和Jetson形成一个有效的管道,开发和部署先进的神经网络的任何应用程序。

我们可以在Jetson Nano上运行什么样的算法?

与谷歌Coral Dev Board相比,Jetson Nano支持大量流行的机器学习/深度学习库和框架,如Keras、TensorFlow、Caffe、Torch/PyTorch等。对如此多库的支持使该设备功能强大——它可以用于设计、实现和执行来自计算机视觉、自然语言或表格数据结构处理等领域的操作。具体来说,英伟达的Jetson Nano可以运行如下算法:

-分类;

-目标检测;

-对象跟踪;

-分割;

-姿态和运动估计;

-特征跟踪;

-视频增强(视频稳定)等。

这些算法中的许多都可以实时处理,这意味着它们可以从产线上的摄像机分析高分辨率的视频流。你甚至可以使用英伟达的Jetson Nano实时分析来自物联网设备的声音或数据。

开发人员工具包的这些功能可以一起或单独用于构建复杂的人工智能系统,此外,还可以用于许多业务和工业应用程序。

在活动期间实时跟踪人们的兴趣

Jetson Nano是不久前发布的,所以它是一个相对较新的设备。我们还使用过Jetson家族其它产品,比如TX2.

我们决定实现一个小的概念验证(PoC)来测试和演示Jetson Nano的功能。我们的想法是进行实时视频流分析,在展会期间,会议期间,甚至是在商场里的商店展览期间统计人数。但是如何在现实生活中使用呢?为什么公司喜欢计算客户?基于这样的分析,可以指定哪些展览对于特定的人群来说是最有趣的,哪些展台或者柜台上的商品更有吸引力,或者哪些内容更能吸引人们的注意力。可以在许多用例中使用这种方法。

我们是怎么做到的?

我们的目标检测和跟踪算法是用Python语言实现的。我们已经使用了罗技C920 HD Pro网络摄像头,它允许高分辨率的视频录制或流媒体。为了提高计算机视觉、更快的计算速度和对深度网络的干扰,我们决定使用几个著名的库,如CUDA、OpenCV、dlib和numpy。以下是描述我们算法运作的步骤:

1.加载库和初始化变量;

2.负载对象检测模型。我们使用MobileNet模型是因为它的性能;

3.启动视频流;

4.每帧执行以下操作:

  • 每10帧从当前帧构造一个blob,通过网络传递它来获得预测并初始化边界框列表。然后循环检测,如果检测到的对象当前没有被跟踪,初始化跟踪器。OpenCV提供了几个内置的跟踪器;
  • 更新追踪;
  • 循环跟踪对象,并在其周围画一个矩形;
  • 数人;
  • 显示额外的信息;

5.停止视频流。

我们考虑了两种计算人数的方法。首先,根据被记录的人数计算出超过一定数量的帧数。其次,根据检查对象的面积。如果面积随着时间的推移而增加,这意味着这个物体离我们的展位或摊位越来越近。我们决定先实现第一种方法。第二种方法将很快实施。

Jetson Nano vs . Jetson TX2

如前所述,我们对Jetson TX2开发套件有一些经验,因此我们决定比较这两个edge AI平台的计算能力。Jetson TX2开发套件具有1.5 TFLOPS的计算性能,几乎是Jetson Nano的三倍。另一方面,它体积大,不便于携带。我们使用上述的目标检测和跟踪算法对这两种设备进行了相同的测试。我们期望TX2的计算速度快三倍。令人惊讶的是,与Jetson TX2相比,Jetson Nano的结果并没有那么糟糕。这说明该算法的操作优化效果非常好。

与较大的Jetson TX2相比,Jetson Nano更小,计算性能更差。这是否意味着情况更糟?不客气。对于大多数应用程序,它将提供足够的性能。最后,它取决于应用程序和算法,以更合理地使用设备。

总结

英伟达的Jetson Nano为体验人工智能的威力提供了一个良好的开端。它支持许多著名的机器学习/深度学习库和框架。它还具有良好的计算性能和一组专用软件。这种edge AI设备的另一个优点是体积小,可以在任何地方进行计算。

Jetson的应用程序之一是实时视频分析。检测、跟踪和计数人或其他物体将在许多商业和工业领域得到应用。例如,这将允许您评估人们对给定的展台或商店展览的兴趣。

Jetson Nano是一个具有多种可能性的设备,它将允许您实现许多人工智能方法。

更多关于Jetson NANO的应用:

参加NVIDIA这个课程,连高中生都可以参加创客大赛了!

用Jetson NANO做个机器狗?

看Jetson NANO如何变成“蜘蛛侠”

当乐高人偶遇到Jetson NANO

原文发布于微信公众号 - 吉浦迅科技(gpusolution)

原文发表时间:2019-07-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券