使用Hailo-8进行多摄像头多人重识别
借助多摄像头跟踪技术,对不同数据流进行多人重识别对于安全和零售应用至关重要。这包括多次识别特定人员,要么在一段时间内在特定的位置进行识别,要么沿着多个地点之间的路径进行识别。要实现这一点,需要高性能计算。Hailo-8 AI处理器提供在边缘设备进行准确的实时多人重识别所需的效率,同时在不损害人们隐私的情况下增强视频分析并降低成本。在这篇博客文章中,我们提供了端到端的参考管道,使用多摄像头跟踪技术精确地执行这项任务。
对多个视频流进行多人重识别跟踪是视频监控系统的常见功能。此功能通常通过深度学习实现,其目标是在不同流和整个视频中检测和识别人员。多人重识别功能被用于安全、安保和数据分析,揭示有关客户、访客和员工行为的有价值信息。尽管它通常被认为是一种广泛使用的技术,但遮挡和各摄像机的不同条件(例如视角和照明)对精确跟踪造成了重大挑战。
在边缘设备上使用多人重识别应用进行多摄像头跟踪的优势包括
- 无需发送原始视频,从而保护隐私并改善数据保护。
- 改善检测延迟,这对于实时警报至关重要.
Hailo-8是理想的AI加速器,可在边缘设备上进行准确的实时人员重识别。它的计算能力还能够同时对许多人进行高精度的处理,这对于实现高质量的重识别至关重要。通过安装和维护单个AI加速器来实时处理多个摄像头,Hailo-8还降低了系统成本。
Hailo TAPPAS多摄像头重识别和跟踪管道是通过在嵌入式主机上使用GStreamer来实现的,Hailo-8实时运行(无需批处理),采用四个全高清输入分辨率的RTSP IP摄像头。主机通过以太网获取编码后的视频并对其进行解码。解码后的帧通过PCIe发送到Hailo-8上进行处理,最终输出显示在屏幕上。
应用管道
下图描绘了整个应用管道。首先,对编码后的输入视频进行解码和去扭曲,以获得对齐的帧,以便进行处理。去扭曲是一种常见的计算机视觉组件,用于消除由摄像头引起的任何失真,例如,鱼眼失真在监控摄像头中很常见。接下来,这些帧被发送到Hailo-8 AI处理器,处理器可以检测每帧中的所有人和面孔。我们使用Hailo GStreamer跟踪器对每个视频流中的物体进行初始跟踪。最后,将每个人从原始画面中裁剪出来,然后输入到重识别(Re-ID)网络中。此网络输出一个代表每个人的嵌入向量,该向量可以在不同的摄像头之间进行比较。嵌入向量存储在一个名为“图库”(gallery)的数据库中,通过在其中进行搜索,我们为每个人分配了最终的ID。最终输出还包括一个人脸匿名块,该块可以模糊每张面孔,以保护画面中人们的隐私。
所有的神经网络(NN)模型都是使用Hailo Dataflow Compiler进行编译,预训练的权重和预编译的模型在Hailo Model Zoo中发布。Hailo Model Zoo还为自定义数据集提供重新训练docker环境,以便适应其他场景。我们注意到,所有模型都是在相对通用的用例中进行训练的,可以针对特定场景进行优化(在大小/精度/帧率方面)。
多人/人脸检测
人/人脸检测网络基于YOLOv5s,分为两类:人和人脸。YoloV5是一款2020年发布的精确的单级物体探测器,使用Pytorch进行训练。为了训练探测网络,我们整理了几个不同的数据集,并将它们调整为相同的注释格式。请注意,公共数据集,例如COCO、Open Images等,可能仅包含人物或人脸注释,为了使用它们,我们为这两个类别都生成了完整的注释。对于人脸注释,我们使用了在公开数据集上训练的先进的人脸检测模型。使用强大的神经网络(例如YoloV5)来检测人和人脸意味着我们能够高精度和远距离检测到他们;因此,让应用能够完成检测和跟踪即,使是很小的物体也不例外
Parameters | Compute (MAC) | Input Resolution | Training Data | Validation Data | Accuracy |
---|---|---|---|---|---|
7.25M |
8.38G |
640x640x3 |
149k images |
6k images |
47.5mAP*
|
*YOLOv5s network trained on COCO2017 achieves only 23AP on the same validation dataset.
人重识别
人重识别(Re-ID)网络基于Rep-VGG-A0,每次查询输出长度为2048的单个嵌入向量。该网络是使用以下存储库在Pytorch中训练的。为了提高验证数据集(Market-1501)的Rank-1准确性,我们将不同的重识别数据集合并到一个训练程序中。使用更大、更多样化的训练数据(来自多个来源)帮助我们生成了一个更强大的网络,可以更好地推广到现实场景。在Hailo Model Zoo中,我们提供重新训练说明和完整的docker环境,以便使用我们预训练的权重来训练网络。
Parameters | Compute (MAC) | Input Resolution | Training Data | Validation Data | Accuracy |
---|---|---|---|---|---|
9.65M |
0.89G |
256x128x3 |
660k images |
3368/15913 |
90% Rank1
|
使用Hailo TAPPAS来部署管道
我们已经将该应用作为Hailo TAPPAS的一部分进行发布。该示例应用使用GStreamer C++中构建管道,允许您使用视频文件或RTSP摄像头。允许您控制应用的其他参数包括设置探测器(例如检测阈值)、跟踪器(例如,保持/丢失帧率)和质量估计(最低质量阈值)的参数。
Hailo Model Zoo还允许您使用自己的数据重新训练 神经网络,并将它们移植到TAPPAS应用中,以便快速适应领域和进行自定义。多摄像头多人重识别应用程序的目标是为在Hailo-8和嵌入式主机处理器上建立监控管道提供快速的原型设计和坚实的基准。
作为HailoRT(Hailo运行时库)的一部分,我们发布了一个用于在Hailo-8芯片(libgsthailo)上进行推理的GStreamer插件。该插件负责芯片上的整个配置和推理过程,这使得Hailo-8可以轻松直接地集成到您的GStreamer管道中。它还可以在单个Hailo-8芯片上进行多网络管道推理,以简化复杂的管道。我们引入的另一个HaioRT组件是网络调度器。这个HailoRT组件通过自动网络切换来简化在单个Hailo设备上运行多个网络的流程。网络调度器不会手动决定哪个网络的运行时间,而是自动控制每个网络的运行时间。使用调度器让使用Hailo-8进行管道开发变得更简洁、更简单、更高效。
除了HailoRT外,我们在这个应用中还引入了以下GStreamer插件:
- 去扭曲:在TAPPAS中实施的这个GStreamer插件允许您修复摄像头失真。去扭曲是使用OpenCV实现的,目前正在修复鱼眼失真。
- 方框匿名化:在TAPPAS中实施的这个GStreamer插件允许您在给定预测方框的情况下模糊图像中的方框。例如,在预测所有人脸之后,对图像进行人脸匿名化。
- 图库搜索:这个GStreamer插件可向管道中添加数据库组件。图库组件允许您添加新对象并在数据库中搜索匹配项。在本应用中,我们将推送向量并将其与新向量进行比较,以关联不同摄像头和时间戳之间的预测。
我们可以看到,在采用6个摄像头和投入500美元预算的小型企业中,RSC101可以有效地支持所有必需的监控功能。实际上,RSC101的性能超出了要求。如果利用集成的高算力AI处理器进行所有视频分析,就可以使用先进的深度学习算法,从而实现高性能和高级功能。26TOPS的AI算力为未来的增强提供了保障,支持向先进的深度学习算法迁移,以检测更多的事件类型。请注意,RSC101的功能使其能够作为极为经济实惠的解决方案。在视频分析算力得到充分利用的情况下,它为现有监控系统增加了对额外4-8个摄像头的支持。
性能
下表汇总了在Hailo-8和x86主机处理器上使用四个全高清输入分辨率(1920×1080)的RTSP摄像头的多摄像头多人跟踪应用的性能,以及神经网络独立性能的细分信息。
FPS | Latency | Accuracy | |
---|---|---|---|
Full Application |
30 (per stream) |
– |
90% Rank-1 |
Standalone person/face detection |
379 |
5.93ms |
47.5mAP |
Standalone Re-ID |
1015 |
1.77ms |
90% Rank-1 |
* Measured with Compulab (x86, i5)
Hailo多摄像头多人重识别应用提供了部署在GStreamer中的完整参考管道,其中包含Hailo TAPPAS和针对每个神经网络的再培训功能,以便使用Hailo Model Zoo进行自定义。此应用为您使用Hailo-8构建VMS产品提供了基准。如需了解更多信息,请访问我们的TAPPAS文档。
本文由Tamir Tapuhi、Amit Klinger、Omer Sholev、Rotem Bar和Yuval Belzer合作撰写.
Don’t miss out
Sign up to our newsletter to stay up to date